00:00:00 --- log: started forth/05.03.06 00:18:54 --- quit: asymptote ("Free the mallocs!") 00:35:20 --- quit: Sonarman ("Lost terminal") 00:57:05 --- join: Serg[GPRS] (~z@193.201.231.126) joined #forth 00:57:47 --- quit: Serg[GPRS] (Client Quit) 01:02:53 --- join: InnerLoop (~chatzilla@dedicated210.dhivehinet.net.mv) joined #forth 01:04:08 --- part: InnerLoop left #forth 01:09:31 --- join: InnerLoop (~chatzilla@dedicated210.dhivehinet.net.mv) joined #forth 01:11:49 --- part: InnerLoop left #forth 01:33:24 --- quit: Herkamire ("off to bed") 02:47:12 --- quit: docl (Read error: 104 (Connection reset by peer)) 05:05:32 --- join: Topaz (~top@cerberus.saywell.net) joined #forth 05:07:51 --- join: Serg[GPRS] (~z@193.201.231.126) joined #forth 06:09:14 --- join: docl (~luke@dpcbw098001.direcpc.com) joined #forth 06:36:03 --- quit: docl (Client Quit) 06:40:17 --- quit: Rockford (Remote closed the connection) 06:43:45 --- join: docl (~luke@dpcbw098171.direcpc.com) joined #forth 08:37:11 --- quit: KB1FYR () 08:43:37 --- quit: saon ("Lost terminal") 08:47:31 --- quit: Serg[GPRS] (Read error: 110 (Connection timed out)) 08:51:43 --- quit: docl (Remote closed the connection) 09:14:24 --- join: saon (1000@c-24-129-90-197.se.client2.attbi.com) joined #forth 09:17:13 --- join: zoly (~l@ppp-82-135-5-64.mnet-online.de) joined #forth 09:17:25 g'day 09:33:50 --- join: KB1FYR (~Alex@196-220.suscom-maine.net) joined #forth 09:34:45 hi KB1FYR 09:35:45 hey 09:36:38 hi 09:39:02 i thought i understood google ranking to some extend. now i doubt again 09:39:27 hah 09:39:29 google is weird 09:39:30 ;) 09:39:57 just search for "forth interpreter" 09:39:58 --- quit: Topaz ("Leaving") 09:40:38 i wonder because hits 3 and 4 have hardly been linked to at ll 09:40:52 (out of 429000 hits) 09:41:02 :< 09:41:33 and hits 1 and 2 are not exactly the sites everybody links to 09:42:41 the more authoritative sites follow on rank 8 and above 09:42:59 :< 09:51:50 are hits 3 and 4 in their own directories with index.html being the page loaded? 09:51:55 that gets higher ranking 09:52:06 for example you have server.com/blah.html 09:52:13 make it server.com/blah/index.html 09:52:37 the googlebots pay more attention to index.html than the others.. 09:52:54 also make sure all your links contain the keywords in the link 09:53:03 no here 09:53:23 the retroforth os 09:53:30 well i guess you probably know some of this ;) 09:53:40 --- join: Herkamire (~jason@h000094d30ba2.ne.client2.attbi.com) joined #forth 09:53:40 --- mode: ChanServ set +o Herkamire 09:53:46 thinfu: hits 3 and 4 are on a server without index.html at all 09:54:02 zoly: have you seen this site http://64.233.167.104/search?q=cache:VHiBts6LGXsJ:wolfram.org/writing/howto/3.html+google+ranking+higher&hl=en 09:54:12 some good tips about google ranking.. 09:54:14 Hi all 10:38:00 thinfu: nice page 10:38:03 hi crc :) 10:41:25 Hi Herkamire 10:58:25 hi 10:58:35 teh hies 11:07:44 hi arke :) all :) 11:08:11 how's life, the universe and everything? 11:08:28 42 11:08:30 ;) 11:12:40 --- join: tathi (~josh@pcp01375108pcs.milfrd01.pa.comcast.net) joined #forth 11:15:56 yet another wacky game idea by yours truly... 11:15:57 http://www.happypenguin.org/forums/viewtopic.php?t=1784 11:15:59 :) 11:19:36 neat :) 11:32:57 :) 11:34:20 cool 11:34:30 so bob doesn't get to decide when he jumps 11:34:45 he's just down for 1.5 secconds or something 11:36:45 yah 11:36:58 :) 11:37:17 maybe you could make it so you are down for a very short time, almost like a bounce 11:37:48 but you can get the ball spinning while you're in the air, so when you touch down you get a quick jerk in that direction 11:37:58 well, like I said, I'm sure it would take careful tuning for it to be even. 11:38:07 sure 11:39:32 a shark fin is a great game element :) 11:39:47 hmm, yeah, that could be cool :) 11:40:14 --- join: Serg[GPRS] (~z@193.201.231.126) joined #forth 11:40:32 re 11:40:52 oh, speaking of game programming, I think I actually managed to get my youngest brothor hooked on pygame :) 11:40:55 hi Serg 11:41:35 nice :) 11:41:50 I keep thinking of Barrack from Ambrosia SW 11:42:01 oh yeah. 11:42:05 that had a great shark :) :) 11:42:11 I never played barrack that much 11:42:22 ? 11:42:58 btw, what is right way to code arrays in asm ? 11:44:16 yeah, the game isn't that great. The shark was though 11:44:43 * Serg[GPRS] is playing FarCry nowdays 11:44:45 Serg: what are you having trouble with? 11:44:53 it would wander around in it's little wavy circle, and occationally swoop at you 11:45:12 you just multiply the index by the size of your array element. 11:45:28 then ocatianally it would go "YAAAIIIIIA" and go double speed crazed lunges at you 11:45:30 so...naturally you want the size of an element to be a power of two so you can use the x86 indexed addressing modes. 11:45:42 Herkamire: hmm...I vaguely remember that. 11:46:19 tathi: with what instruction should i fetch/store, if i got index in AX and array under '_LVL' label ? 11:48:31 MOV DL. [??????] 11:49:24 mov dl, [ax+_lvl] 11:49:25 error: reserved word used as symbol. 11:49:50 :/ 11:49:54 oh 11:49:59 what assembler? 11:50:04 fasm 11:50:06 Serg[GPRS]: in 16 bit mode you can only address using bx 11:50:09 Serg[GPRS]: not ax 11:50:16 oh good. People who actually know x86 asm. :) 11:50:28 man, I wanna make a game! 11:50:31 :D 11:50:41 * Serg[GPRS] wishes it would be PDP-11, f00lly orthogonal ! 11:50:58 mov si, ax 11:51:06 mov dl, byte [si+_lvl] 11:51:33 * Serg[GPRS] trying, btw what is SI ? 11:51:38 source index 11:51:48 in real mode, you can use si and di as indexes 11:52:14 yeah, it passed ! 11:52:14 (if you were in 32-bit protected mode, you could do "mov dl, word [eax+_lvl]" 11:52:17 (and bp, if ss = ds) 11:52:34 * crc almost never uses bp 11:52:51 that does not disqualify bp 11:52:51 16-bit x86 assembly is a pain IMO 11:52:53 any good asm tutor ? 11:53:19 I learned assembly by reading source code for various small programs :) 11:53:27 and a lot of trial and error 11:53:44 * zoly notices that crc often responds to a valid entry with "i don't use that" 11:53:49 * arke feels smart 11:54:07 I keep ebp free for those who want to use it in their applications 11:54:59 that's your choice. sure. i didn't say "you must use bp". i said "bp can be used for indexed access" 11:55:09 true enough 11:55:24 * crc doesn't do enough 16-bit coding to recall all the rules that go along with it 11:55:36 whether one *wants* to use it is totally up to his/her discretion 11:55:36 can both sides of MOV be memory ? like MOV [es:di], byte [si+_lvl] 11:56:31 nope 11:56:53 no mem to mem, except with pop [reg] 11:57:02 or push [reg] 11:57:10 or movs 11:57:52 use of movs is discouraged 11:58:45 crap, my proggie gone gallows way ! 12:07:56 i cut the rope but level load/show pair fails 12:52:17 --- quit: saon ("Lost terminal") 12:52:24 --- join: Alex_ (~Alex@196-220.suscom-maine.net) joined #forth 13:00:30 --- quit: KB1FYR (Read error: 60 (Operation timed out)) 13:01:55 --- nick: Alex_ -> KB1FYR 13:02:23 --- join: saon (1000@c-24-129-90-197.se.client2.attbi.com) joined #forth 13:19:06 --- join: hrmpf (~obi@195.18.226.13) joined #forth 13:19:58 --- quit: hrmpf (Client Quit) 13:22:13 --- join: hrmpf (~hrmpf@195.18.226.13) joined #forth 13:26:55 --- part: zoly left #forth 13:33:42 --- quit: saon ("Lost terminal") 13:37:34 --- join: Rockford (~trailer@ansuz.pair.com) joined #forth 13:44:17 --- join: Freejack (~nicad@c-24-11-30-248.client.comcast.net) joined #forth 13:45:46 --- quit: Freejack (Client Quit) 13:48:03 --- quit: hrmpf () 14:39:27 --- join: TheBlueWizard (TheBlueWiz@modem-092.nyc-tc03a.FCC.NET) joined #forth 14:44:39 --- join: saon (1000@c-24-129-90-197.se.client2.attbi.com) joined #forth 14:46:20 --- join: KptnKrill (~KptnKrill@pool-70-19-251-247.bos.east.verizon.net) joined #forth 14:46:44 --- part: KptnKrill left #forth 14:51:43 --- quit: TheBlueWizard (Nick collision from services.) 14:52:11 --- join: TheBlueWizard (TheBlueWiz@modem-154.nyc-tc03a.FCC.NET) joined #forth 14:54:29 --- quit: Serg[GPRS] () 15:01:52 --- quit: swalters ("User disconnected") 15:04:57 --- join: Alex_ (~Alex@196-220.suscom-maine.net) joined #forth 15:07:41 --- quit: KB1FYR (Read error: 104 (Connection reset by peer)) 15:09:45 --- quit: saon ("Lost terminal") 15:11:11 --- join: Topaz (~top@cerberus.saywell.net) joined #forth 15:18:00 hmm, i've implemented all of the opcodes for my cross-compiler as FORTH words 15:18:16 now need to define a new colon compiler... 15:18:25 Contest right now: In the next 24 hours, create an 8086 compatible, DOS Brainfuck interpreter. The source to be interpreted is appended to the end of the executable, and terminated with a 0. 24 hours from now, send me your results by /msg 15:22:16 --- quit: Topaz (sterling.freenode.net irc.freenode.net) 15:22:16 --- quit: Herkamire (sterling.freenode.net irc.freenode.net) 15:22:16 --- quit: I440r (sterling.freenode.net irc.freenode.net) 15:31:49 smallest entry wins 15:32:36 --- quit: TheBlueWizard (Read error: 60 (Operation timed out)) 15:34:23 --- join: Herkamire (~jason@h000094d30ba2.ne.client2.attbi.com) joined #forth 15:34:23 --- mode: ChanServ set +o Herkamire 15:35:52 --- join: I440r (mark4@rrcs-24-242-160-169.sw.biz.rr.com) joined #forth 15:37:33 I440r: asm coding contest.. to make the smallest brainfuck interpreter in 16-bit asm in the next 24 hours 15:37:40 ask arke for details :P 15:37:47 :) 15:44:15 --- quit: I440r (sterling.freenode.net irc.freenode.net) 15:44:15 --- quit: Herkamire (sterling.freenode.net irc.freenode.net) 15:45:31 --- join: Topaz (~top@cerberus.saywell.net) joined #forth 15:45:50 hmm, writing my own colon compiler is proving somewhat tricky 15:46:08 i can't even clone the already existent colon compiler... 15:46:24 (how do you read the next word from the source, and look it up in the dictionary?) 15:47:03 --- join: Herkamire (~jason@h000094d30ba2.ne.client2.attbi.com) joined #forth 15:47:03 --- mode: ChanServ set +o Herkamire 15:50:18 A Standard Forth, Topaz? 15:51:21 In a Standard Forth, there is no colon-compiler, as such. There's STATE, and that controls whether the interpreter is currently interpreting, or compiling. 15:52:22 In somewhat simplified terms: The interpreter is a loop that does PARSE-WORD, then handles that word -- in interpretation state, executes it; in compilation state, compiles it (or executes it if it's flagged IMMEDIATE). 15:52:27 ok 15:53:37 In some pre-Standard Forths, : was a separate interpreter all of its own, but the idea was the same. BL WORD to get the next word from the input buffer, FIND to resolve it, etc. 15:54:18 In that case ; was the trigger that caused : to exit its loop and drop back into the interpreter. 15:54:22 well, i'm going to try defining colon as a word which in compile mode, goes through the rest of the definition, executing the words to get the addresses to code JMPs to, and in runtime mode just pushes the current compilation-address onto the stack 15:54:34 right, so, FIND... 15:55:18 In an olde Forth, FIND returns the contents of the CFA, or possibly the CFA itself, and you generate code based on that. 15:55:56 ok 15:56:08 i'm quite happy to go for the olde-Forth option at this stage ;) 15:56:17 I think it's the more complex option. 15:57:09 hmm 15:57:23 this is a cross-compiler, so it is all rather strange 15:57:58 --- join: I440r (mark4@rrcs-24-242-160-169.sw.biz.rr.com) joined #forth 16:00:05 To parse each input word: : myparser begin bl word dup while type cr repeat 2drop ; 16:00:13 (The compilation logic would replace type cr). 16:00:25 whoooops 16:00:30 To parse each input word: : myparser begin bl word count dup while type cr repeat 2drop ; 16:00:31 sorry. 16:01:05 That's in Standard Forth, but should work in Forth-83. 16:01:18 Probably/maybe. I haven't messed with an olde Forth for awhile. 16:03:34 so: myparser one two three four five will output one, two, three, four, five, all on consecutive lines. 16:10:41 how do you find semicolons? 16:10:41 You parse them just like any other word. ; is a word in the dictionary. 16:10:41 Its action (in the olde world) is to cause the : loop to terminate. 16:10:41 so it's an immediate word that breaks the loop somehow? 16:10:41 Right. 16:10:41 ah, LEAVE 16:10:41 --- quit: thinfu (Remote closed the connection) 16:10:41 LEAVE is for DO LOOP constructs. 16:10:41 hmm 16:10:41 i have no clue :D 16:10:41 --- join: thinfu (thin@bespin.org) joined #forth 16:10:41 --- mode: ChanServ set +o thinfu 16:10:41 --- quit: arke (Remote closed the connection) 16:10:41 --- join: arke (f2@bespin.org) joined #forth 16:10:41 You could do any number of things. For instance, set a flag to false at the top of the loop, check it at the bottom of the loop. ; sets the flag to true. 16:10:46 ok 16:11:20 A more clever implementation in a native Forth might pop a return address off of the return stack, and then do an RTS-equivalent -- that'd cause the : loop to exit to whatever called it. 16:11:50 It all seems clanky to me; having the interpreter either interpret, or compile, seems a lot simpler. 16:12:57 But do what works. :) 16:14:16 Bear in mind that ; generally performs other important tasks like making the new definition findable in the dictionary. 16:15:56 Are you working on a new Forth or building something on top of an existing one? 16:16:11 using pForth 16:16:27 (to output machine code for an AVR microcontroller) 16:16:56 atm i've got a heap of opcode-words, which compile themselves (with arguments on the parameter stack) into an block of memory when executed 16:16:59 So, writing a Forth cross-compiler in pForth? 16:17:03 yeah 16:17:12 atm it's basically just a macro assembler 16:17:16 and works reasonably well 16:17:46 If you haven't looked at it, you might want to dig up "Minimal ANS Forth" -- it's a model of how to implement a cross-compiler. Might give you some good ideas. 16:18:39 atm you need to execute my opcode words to cause them to compile 16:18:46 i should probably make them immediate, or something 16:20:13 I've seen Forth assemblers that are effectively interpret-only. Not immediate. CODE begins the definition, drops into interpretation state, and then it's just a sequence of code-generating assembler words until END-CODE. 16:21:47 basically what mine does (though in a far more convoluted fashion), although it leaves a word in the dictionary which, when executed, puts the address of the compiled word on the stack 16:22:10 so that subsequent definitions can code JMPs to that address 16:24:25 If you've got that working, then you should be able to build what you need from there. 16:24:45 just getting the last bit working now 16:24:57 (making it JMP to them instead of running them) 16:26:30 and, yay, it works 16:26:58 though i've made all my opcodes immediate, so they get executed (and subsequently compile their machine code to the right place) instead of having JMPs to them compiled in 16:27:55 though i'll need to change it, since they currently can't be fed parameters... 16:28:14 (the parameters end up in the final word as literals, instead of being sent to make the opcode) 16:31:58 This is a reason why a lot of Forth assemblers operate interpretively. 16:33:06 hmm, yeah 16:33:22 i could use { } or something to break into 'immediate compilation' mode, or something 16:33:30 Conventionally it's [ and ]. 16:33:44 But then your code is littered with [ and ] for no particularly good reason. 16:33:49 hm, yeah 16:34:06 though i want to be able to mix assembly and word-calls 16:34:19 although there's no reason why i shouldn't hide the assembly behind an immediate word call 16:34:32 (so it'll get compiled in instead of JMPed to anyway...) 16:34:39 The way I've seen is to handle the assembler interpretively as discussed, and escape *into* the compiler for Forth, with ] and [. 16:35:02 ok 16:35:06 sounds sensible 16:35:16 thanks for this, i'm learning lots :D 16:35:45 but on that note, might retire to bed 16:35:53 so... CODE myword arg1 arg2 opcode ] forth_sequence [ arg1 arg2 opcode2 END-CODE 16:35:57 Ok. Good luck. 16:36:09 thanks 16:36:21 np 16:36:28 *wave* 16:36:30 --- part: Topaz left #forth 16:39:17 --- join: docl (~docl@dpcbw098171.direcpc.com) joined #forth 17:11:41 --- quit: rastm2 (Read error: 110 (Connection timed out)) 17:13:45 --- join: rastm2 (~rastm2@adsl-70-248-100-8.dsl.rcsntx.swbell.net) joined #forth 17:38:43 --- join: saon (1000@c-24-129-90-197.se.client2.attbi.com) joined #forth 17:52:35 --- quit: tathi ("laters all") 18:07:26 --- quit: saon ("Lost terminal") 18:44:11 --- nick: Rockford -> Quartus 19:05:14 goodnight 19:09:33 --- join: saon (1000@c-24-129-90-197.se.client2.attbi.com) joined #forth 19:52:26 --- quit: Quartus () 20:10:42 --- quit: Alex_ (Read error: 60 (Operation timed out)) 20:12:20 --- join: KB1FYR (~Alex@196-220.suscom-maine.net) joined #forth 20:37:45 --- join: Sonarman (~snofs@adsl-64-160-166-164.dsl.snfc21.pacbell.net) joined #forth 20:45:09 --- join: Hyrax (~das@adsl-64-219-100-33.dsl.lgvwtx.swbell.net) joined #forth 22:28:09 --- quit: Sonarman ("leaving") 23:41:58 --- join: Serg[GPRS] (~z@193.201.231.126) joined #forth 23:59:59 --- log: ended forth/05.03.06