00:00:00 --- log: started forth/04.08.29 00:00:19 lol 00:00:26 rm -rf /tmp/* ? 00:02:55 NO 00:03:05 i did that and all my stickie notes disappeared :( 00:03:15 i wouldn't want to subject you to such trauma 00:03:43 'dd if=/dev/zero of=/dev/hda' will clean up *everything* :-) 00:05:15 lol 00:05:24 * I440r_ doesnt use sticky notes 00:05:33 if they were sticky i might be able to remember them 00:06:22 --- join: kc5tja (~kc5tja@66-74-218-202.san.rr.com) joined #forth 00:06:37 Hi kc5tja 00:06:37 --- mode: ChanServ set +o kc5tja 00:06:38 kc5! 00:06:40 Hey 00:06:47 Can't stay long. Have to get to bed soon. 00:06:59 im almost zoned out as it is lol 00:07:42 * kc5tja just got off of work, so I'm only kinda sorta zoned. 00:08:40 lol been there, done that 00:09:36 --- quit: madwork (Read error: 54 (Connection reset by peer)) 00:09:59 well if i got to sleep now i might be able to get isforht-fbsd running tomorrow 00:10:10 if i can figur out the weird shit thats going on 00:10:34 * kc5tja is trying to get FTS/Forth to parse words now. 00:10:44 cool 00:10:44 I worked it out while on work -- just basically plugging in source code now. 00:11:19 I'll try and work on dictionary support tomorrow if the work day is as slow as it was today. 00:12:46 well nite folks 00:12:53 im half dead 00:13:00 Good night I440r 00:13:06 only had 10 hours of sleep last nite 00:13:07 lol 00:13:43 night 00:13:51 Ahhh, poor baby. 00:13:56 I get, maybe, six. At most. 00:38:33 --- join: qFox (C00K13S@82-169-140-229-mx.xdsl.tiscali.nl) joined #forth 00:39:54 --- join: mur__ (~mur@kyberias.uiah.fi) joined #forth 00:40:15 --- quit: Sonarman ("Lost terminal") 00:45:06 --- quit: kc5tja ("leaving") 00:51:09 --- quit: mur_ (Read error: 110 (Connection timed out)) 01:25:29 --- join: mur_ (~mur@kyberias.uiah.fi) joined #forth 01:34:58 --- quit: mur__ (Read error: 110 (Connection timed out)) 01:37:01 --- quit: scope (Client Quit) 02:08:27 --- quit: crc (Client Quit) 03:32:15 --- join: crc (crc@23-pool1.ras11.nynyc-t.alerondial.net) joined #forth 04:40:07 --- quit: crc ("Time for bed... Goodnight All!") 05:22:40 --- join: FlamingRain (Ecoder@c-24-129-95-254.se.client2.attbi.com) joined #forth 05:46:20 --- quit: FlamingRain ("Leaving") 06:06:19 --- quit: I440r (Read error: 110 (Connection timed out)) 06:08:14 --- quit: mur_ (Remote closed the connection) 06:09:04 --- join: mur (~mur@kyberias.uiah.fi) joined #forth 06:30:47 * Tomasu is away: nigit 06:57:53 --- quit: slava (Read error: 110 (Connection timed out)) 07:00:42 --- join: mur_ (~mur@kyberias.uiah.fi) joined #forth 07:10:58 --- quit: mur (Read error: 110 (Connection timed out)) 07:29:00 --- join: poing (~chuck@64-121-15-14.c3-0.sfrn-ubr8.sfrn.ca.cable.rcn.com) joined #forth 07:36:43 --- quit: poing ("leaving") 07:36:57 --- join: poing_ (~chuck@64-121-15-14.c3-0.sfrn-ubr8.sfrn.ca.cable.rcn.com) joined #forth 07:39:09 --- nick: poing_ -> zruty 07:42:02 grr slavas server is offline :( 07:43:09 got tired of ghosting other poings, so i switched nicks 07:44:00 k 07:48:16 guess i could have set kill on, but i cant really lay that much claim on the nick 07:48:48 methinks i'll set it for this one 07:49:07 darn, it's turned off on the network 08:05:29 --- quit: mur_ (Remote closed the connection) 08:06:03 --- join: mur (~mur@uiah.fi) joined #forth 08:35:28 --- join: Herkamire (~jason@h000094d30ba2.ne.client2.attbi.com) joined #forth 08:35:28 --- mode: ChanServ set +o Herkamire 08:39:32 just set kill on 08:39:34 :) 08:43:28 kill is off on the whole network 08:44:07 * zruty kinda likes zruty better, more distinctive 08:44:44 oh is it 08:44:54 shouldnt be in the help at all then 08:45:16 standard nickserv docs 08:45:26 no matter 08:45:27 :) 08:45:36 should definitely be customized for freenode tho 08:56:42 --- quit: zruty ("leaving") 09:16:29 --- join: zruty (~chuck@64-121-15-14.c3-0.sfrn-ubr8.sfrn.ca.cable.rcn.com) joined #forth 09:40:13 --- join: FlamingRain (~Ecoder@c-24-129-95-254.se.client2.attbi.com) joined #forth 09:48:39 --- quit: FlamingRain ("Leaving") 09:55:04 --- join: kc5tja (~kc5tja@66.74.218.202) joined #forth 09:55:11 --- mode: ChanServ set +o kc5tja 09:56:06 --- join: crc (crc@83-pool1.ras11.nynyc-t.alerondial.net) joined #forth 09:56:56 Greetings. Can't stay for very long at all. 09:57:04 Hi 09:57:20 Hello 10:00:58 * crc has finally release an RetroForth 7.3 (alpha) 10:01:54 Nice. 10:02:06 * kc5tja is still trying to figure out why his ParseWord word isn't working. 10:10:31 --- join: crc_ (crc@75-pool1.ras11.nynyc-t.alerondial.net) joined #forth 10:13:48 --- join: FlamingRain (Ecoder@c-24-129-95-254.se.client2.attbi.com) joined #forth 10:15:37 Does **ANYONE** know how to get X11 tunneling working under SSH? 10:15:39 * kc5tja sighs 10:15:43 This is fucking rediculous! 10:17:50 At least I have shell access to my box from remote now. At least, until RR decides to change my box's IP address. Grrr! 10:18:37 --- join: slava (~slava@CPE00096ba44261-CM000e5cdfda14.cpe.net.cable.rogers.com) joined #forth 10:20:43 slava: Any ideas on how to get SSH to port-forward X11? 10:20:55 I've got EVERY relavent option enabled, and it STILL won't fucking work. >:( 10:21:10 Internet HOW-TOs aren't any more enlightening. >:( 10:28:46 --- join: warpzero (~warpzero@dsl.103.mt.onewest.net) joined #forth 10:31:57 --- join: mur_ (~mur@kyberias.uiah.fi) joined #forth 10:32:36 --- quit: crc (Read error: 110 (Connection timed out)) 10:42:52 --- quit: mur (Read error: 110 (Connection timed out)) 10:44:52 --- nick: crc_ -> crc 10:47:33 --- quit: kc5tja ("leaving") 11:02:52 --- quit: FlamingRain ("Leaving") 11:13:01 --- quit: crc ("Time for bed... Goodnight All!") 11:34:56 --- nick: I440r_ -> I440r 11:35:10 --- mode: ChanServ set +o I440r 11:58:50 --- join: mur (~mur@uiah.fi) joined #forth 12:06:16 --- join: FlamingRain (~Ecoder@c-24-129-95-254.se.client2.attbi.com) joined #forth 12:10:05 --- quit: mur_ (Read error: 110 (Connection timed out)) 12:16:14 hi 12:26:44 --- quit: slava (Read error: 104 (Connection reset by peer)) 12:28:42 --- quit: FlamingRain ("Leaving") 12:32:52 --- join: slava (~slava@CPE00096ba44261-CM000e5cdfda14.cpe.net.cable.rogers.com) joined #forth 12:33:44 --- join: mur_ (~mur@kyberias.uiah.fi) joined #forth 12:34:31 slava btw im about " <-- that close to rm -rf isforth-fbsd 12:34:35 :( 12:34:40 its pissing me off BIG fucking time 12:35:17 why? 12:36:36 because i cant fucking figure out why a syscall works ONE FUCKING TIME and then never works again 12:36:41 sysbrk 12:36:42 extend 12:36:43 save 12:36:46 run extended shit 12:36:51 the brk gives enomem 12:37:14 its the SAME FUCKING CODE!!!!!!!!!!!!!!! 12:38:19 run gdb kernel.com 12:38:24 break init_mem 12:38:25 run 12:38:30 single stel 3 instructions 12:38:39 (make note of address that the brk is set on) 12:38:54 quit out 12:39:03 run gdb isforth 12:39:09 break *0x804abf9 12:39:10 run 12:39:20 single step thru the int 0x80 and see e no fucking mem 12:40:25 have you asked #freebsd? 12:40:47 dont even go there 12:40:52 they dont know shit about it 12:40:59 ive emailed hackers@freebsd.org 12:41:05 ive tried everything 12:41:16 its just one fucking hurdle after the next 12:41:25 have you looked at how libc does brk? 12:41:27 it took me ONE fucking month to get this running in linux 12:41:29 PERIOD 12:41:35 err. libc is no help 12:41:51 why? 12:41:54 C is just portable assembler 12:42:02 libc sources are about as readable as gobbldegook 12:42:13 no it isnt 12:42:28 thats such a fucking crock of bullshit 12:42:37 c is write only 12:42:52 ive looked at the libc sources 12:42:56 ive looked at the kernel sources 12:43:03 ive looked in syscall.master 12:43:10 ive read man pages 12:43:23 if the code works in c though... 12:43:26 --- join: SDO (~SDO@67-23-111-213.clspco.adelphia.net) joined #forth 12:43:26 fucking man pages are "lets not REALLY tell them how this works" bullshit 12:43:38 I440r: that's what source is for 12:43:38 man pages are kind of useless i agree 12:43:44 zruty, unwinding a gordian knot is NOT my idea of fun 12:43:45 freebsd's source is lovely to behold 12:43:57 write a small program in c that does nothing but an isatty 12:44:07 single step it from the start to the syscall 12:44:15 it will take you about four years of single stepping 12:44:33 no fuck 12:44:35 but it will take the cpu a microsecond :) 12:44:42 well the tty handling stuff is a long and windy interface 12:44:45 thats like all the fucking morons who use cvs as a distrobution method 12:44:56 fucking cvs isnt a distrobution method and sources are not fucking documentation 12:45:07 you could trace it with something like valgrind perhaps 12:45:17 zruty, valgrind is useless 12:45:23 I440r, just relax, take a break, and come back to it later. :) 12:45:53 sure. instead of jsut giving me a fucking document describing the fucking syscall you write another fucking obfuscated bullshit utility to that i first have to learn and then have to interpret' 12:45:55 fuck it 12:46:00 slava 12:46:01 i have 12:46:03 and again 12:46:03 and again 12:46:04 and again 12:46:04 and again 12:46:05 and again 12:46:06 and again 12:46:08 --- quit: mur (Read error: 110 (Connection timed out)) 12:46:11 and again 12:46:13 and again 12:46:19 * zruty .oO( he's steamed ) 12:46:42 zruty, valgrind is only useful for debugging malloc/free 12:46:48 it doesn't do anything else 12:46:52 i thought it could trace all calls 12:47:30 not too familiar with it so i may just not know what i'm talking about 12:47:34 wouldn't be anything new :) 12:47:50 I440r, i've had many of those frustrating moments, don't worry 12:50:56 zruty, try debugging a garbage collector that uses tagged pointers. gdb is useless in this case 12:51:22 zruty, i had my to sprinkle code with printf's, and sift through megabytes of logging output :) 12:51:45 debugging a gc does not sound like much fun 12:52:01 sounds like you'd want the DEADBEEF approach 12:52:16 fill your memory with a pattern like DEADBEEF or something distinctive 12:52:30 eyeball hex dumps 12:53:07 recently i switched to non blocking i/o and printf didn't work anymore 12:53:13 that was hell 12:53:26 but eventually i figured out to send logging output to fd 3 :) 12:53:29 --- nick: zruty -> zruty|LUNCH 12:57:22 --- nick: zruty|LUNCH -> zruty 12:58:02 --- join: FlamingRain (Ecoder@c-24-129-95-254.se.client2.attbi.com) joined #forth 13:22:32 --- quit: FlamingRain (Connection timed out) 14:18:12 --- quit: mur_ (Remote closed the connection) 14:18:44 --- join: mur (~mur@uiah.fi) joined #forth 14:19:12 hehe: http://ars.userfriendly.org/cartoons/?id=20040811&mode=classic 14:22:48 --- join: FlamingRain (Ecoder@c-24-129-95-254.se.client2.attbi.com) joined #forth 14:29:02 wished i got $500 :\ 14:29:55 i only got xbox, and thats not even half 14:32:58 --- join: TheBlueWizard (TheBlueWiz@pc9adn1d.ppp.fcc.net) joined #forth 14:32:58 --- mode: ChanServ set +o TheBlueWizard 14:33:13 ok i guess i kinda found a downside to forth. concatting strings is a pain in the ass 14:33:31 or actually, writing a concatted string 14:33:38 with variable length 14:33:41 "hello " "world" cat2 . 14:33:45 "hello world" 14:33:52 oh sure 14:33:55 :) 14:34:16 qFox: I'm sure there's plenty of forth code out there to do that 14:34:34 insert into 3x3moves ( name,move1,move2,move3,move4,move5,move6,move7,move8,move9,result,1wins,2wins,draws ) select 1,1,0,0,0,0,0,0,0,0,0,SUM(IF(result=1,1,0)),SUM(IF(result=2,1,0)),SUM(IF(result=3,1,0)) from 3x3 where move1 = 1 ; 14:34:48 ? 14:34:50 thats the query i have to write, over and over again 14:35:20 except the underlined stuff changes (or is sometimes not there, depending on how "Deep" the code is at that moment) 14:35:35 what are you trying to do??? 14:35:44 the code i've got right now, is uuuuugly and probably slow. 14:35:47 * Tomasu is back (gone 08:05:01) 14:35:58 thing is, this has to be done ... oh say 200milion times 14:36:15 and i dont think there is a fast way. 14:36:25 TheBlueWizard> computing, basically 14:37:25 it is too vague....I still have no idea what you are trying to do :P 14:37:56 the code creates all the moves, puts this data in a text file with fields etc, then creates a mysql file that first imports the other file into a certain table, then starts to use mysql to crunch the final data (in this case about 200milion records) 14:38:07 solve "connect4" game 14:38:23 strings are suxor. 14:38:39 and the way i'm doing it now... heh this just cant be fast :) 14:39:04 strings are a pain without gc 14:39:06 oh? hmm.... 14:39:22 anyways 14:39:36 the query for the second part is what i pasted above here, or an example of it 14:39:46 half of it is static, the other is variable 14:43:30 also, its a pain to write numbers 14:44:25 qFox: what do you mean solve? 14:44:34 well, of course you can use <# #> or something, but i think that's far too slow, knowing that it can only be 1 or 2 digits 14:44:38 trying to find the best first move or something? 14:44:42 connect4 14:44:52 no, well partially 14:44:55 qFox, why are you worried about performance? 14:44:58 write an AI to play against? 14:45:01 qFox, are you doing this billions of times over in a loop? 14:45:19 one part of the project is to solve the game, where you can force a win (it has already been proven but whatever), and find all possible ways to force a win 14:45:39 oh 14:45:55 the second is to compute all results and create an ai that merely picks his next move based on the move that can win the most 14:46:11 what shape is the board? 6x6? 14:46:19 heck no. 14:46:33 5x5? 14:46:36 a 6x6 board has a ... 25 digit number of moves 14:46:38 or something 14:46:48 no it doesn't 14:46:50 it has 6 14:46:51 right now i'm doing 4x4, which really is the max 14:46:53 no herk 14:47:03 total possible ways of playing 14:47:34 yes there are 6 slots, but there are about (width*height)! / (height!)^width ways to play the game 14:47:55 that number minus the "unreal" ways (moves after a win) 14:48:11 you drop a piece in, and it slides down 14:48:14 \ 4x4: Moves: 191448940 Games: 63063000 14:48:15 \ Moves: 97552623 Games: 33937264 14:48:15 \ Wins: 10536772 Draws: 23400492 14:48:15 \ Player 1 wins: 5303104 Player 2 wins: 5233668 14:48:18 there are never more than 6 moves 14:48:27 unless you're talking about a different game 14:48:33 no you are right 14:48:41 but 14:48:47 ok, lets take a 2x2 board 14:49:12 first you put in slot 1, then player 2 uses slot 1, player 1 uses slot 2, player 2 uses slot 2 14:49:19 board is filled, draw is reached 14:49:23 thats ONE game. 14:49:27 with 4 moves 14:49:28 are you guys talking about the n^2-1 puzzles ? 14:49:31 no 14:50:23 --- join: kc5tja (~kc5tja@66-74-218-202.san.rr.com) joined #forth 14:50:24 --- mode: ChanServ set +o kc5tja 14:50:31 Herkamire> next, the code will go back to the second move and tries the other way. player 1 uses slot 2, plauer 2 uses slot 1. draw reached, game TWO, 6 moves tried 14:50:36 etc etc. 14:50:41 \ 2x2: Moves: 18 Games: 6 14:51:21 mathematically, i'm looking for permutations of 1111222233334444 (for a 4x4), or the formula i just pasted 14:51:49 7 wide by 6 tall seems to be the standard 14:51:54 i know 14:52:07 but robert pasted the number of GAMES that size has 14:52:11 and it had 25 digits 14:52:26 so i wont actually try that board, for now anyways 14:52:27 :) 14:52:51 i've got the whole thing worked out, now i actually need to finalize the code 14:52:58 i have the code to create the games 14:53:05 I don't see why you're mucking around with sql 14:53:06 now altering it to add those queries 14:53:12 seems like a recursion problem to me 14:53:12 because 14:53:22 it is, but i need to work backwards 14:53:31 but i also need to start from the begin 14:53:37 see for the first move 14:53:56 i need to know how many of the next moves of a certain move can result in a win, loss or draw 14:53:58 qFox: there are 6306300 permutations of 1111222233334444 14:54:03 correct 14:54:12 \ 4x4: Moves: 191448940 Games: 63063000 14:54:12 \ Moves: 97552623 Games: 33937264 14:54:12 \ Wins: 10536772 Draws: 23400492 14:54:12 \ Player 1 wins: 5303104 Player 2 wins: 5233668 14:54:27 --- quit: FlamingRain (Connection timed out) 14:54:35 if you take away the "moves after a win/draw" thats the number you end up with 14:54:40 so you can force a win? 14:54:43 yes 14:54:47 that's cool 14:54:49 that has been proven already 14:55:03 --- quit: I440r (Excess Flood) 14:55:04 http://www.ezresult.com/article/Solved_board_games 14:55:14 --- join: I440r (~mark4@216-110-82-59.gen.twtelecom.net) joined #forth 14:55:25 I440r hiya 14:55:35 that's a nice managable number. 14:55:47 its a long term project of mine that i've finally decided to finish 14:55:50 you can fit a byte-array in memory with that many entries 14:56:09 ehm 14:56:18 i can tell you that the results for all games is about 1 gig 14:56:21 1byte per move. 14:56:27 (MOVE, not set of moves) 14:56:34 not storing the moves, storing just who won 14:56:35 1111222233334444 can be considered a game 14:56:42 that serves no purpose 14:56:44 tbw :) 14:56:52 sure it does 14:57:00 that data is useless if you dont know what moves you made prior to winning 14:57:08 unless you're just counting of course 14:57:20 just write a function to map an index in the array to the game move sequence 14:57:45 should be pretty easy 14:58:11 well, i found it much harder then it seemed. thats all i can say 14:58:18 ok 14:58:20 let me think 14:58:27 doing it for tictactoe was much much easier 14:59:17 http://members.home.nl/qfox/4.f 15:00:03 change the 3 to a 2 in the first row of the scanvertical word 15:00:29 changed the parameters but forgot to alter that number at that time 15:00:38 qFox, i think your definitions are too long :) 15:00:47 yeah so noted 15:00:52 not bothered with that tbh :) 15:01:32 also, the counts in the beginning arent accurate for anything heigher then 3, since they were computed using the wrong code 15:01:33 :) 15:01:39 I haven't thought permutations through that well 15:01:53 re TheBlueWizard 15:02:01 * kc5tja is at work, so if I am afk a lot, that's why. 15:02:02 kc5tja hiya 15:02:07 but it seems to me there aught to be a way to convert the permutations to and from unique, consecutive integers 15:02:15 there is 15:02:22 heh i see why you think its so easy 15:02:38 do realize that you actually need to check for a win 15:02:52 kc5tja: I think for X11 over ssh I had to edit /etc/sshd_config 15:02:53 have a board, and scan to see whether a player has 4 in a row, or not 15:03:05 Herkamire: I have that configured. 15:03:17 kc5tja: and the ssh client? 15:03:53 yes 15:04:35 huh 15:04:46 I think on the machines I've used it on, it was enabled by default 15:04:52 so I don't know the stuff you have to do 15:05:01 hold on -- I'm on the phone 15:05:52 Herkamire> consider this example 15:05:53 1 1 1 0 15:05:53 2 2 2 0 15:05:53 1 1 1 0 15:05:53 2 2 2 2 15:05:53 1111222233334000 15:06:04 now the next move permutation wise would be slot 4 15:06:16 however, in the real game this would never occur, since player two won already 15:06:41 yeah, obviously there would be a lot of unused permutations 15:06:42 so the remaining 3 possible moves, are invalid 15:06:58 indeed. this makes the code less simple 15:07:22 although the main body is still relatively simple 15:07:50 you can use a recursive style if you prefer this, but with larger boards you might run out of stackspace 15:07:54 Herkamire: Sorry. Like I said, I'm at work. :) 15:08:06 kc5 is at work ? 15:08:10 where do you work now dood ? 15:08:24 Herkamire: I have the appropriate configurations, and when I do log in, I *do* get localhost:10.0 as the $DISPLAY value. 15:08:31 I440r: kc5tja is working at an ISP 15:09:03 Herkamire: But when I try to run, say, xclock, it refuses to start the program. I forget the precise error message it gives, but I can find *NO* reference to anyone, anywhere, at any time, ever having had this error before. And, of course, zero documentation what-so-ever on it. 15:09:09 qFox: you only need to recurse as deep as the number of moves in a single game, ie 16 on a 4x4 board 15:09:22 awesome! 15:09:24 http://members.home.nl/qfox/4.f is now proper (output is commented out) 15:09:28 thats gotta beat greecyburger 15:09:33 I440r: Same place I have for about two months now; however, like I said before, I punched a hole in my firewall so I can SSH to my box at home. 15:09:48 Herkamire> yes. but for each number you need to remember the board 15:09:57 for each depth i mean 15:10:00 I440r: Huh? You knew I moved out of In-N-Out (not greecyburger; INO is actually a rather nice place to work overall). 15:10:16 the board, the total moves, the current move ("branch" of the tree), etc. 15:10:42 kc5 nope i had NO idea you left there lol 15:10:46 <-- slow 15:10:47 but i have introduction tomorrow (till wednesday) so i'm going to bed now 15:10:58 hf brainstorming if you are :) 15:11:38 I440r: I told you months ago. :) 15:11:44 hi kc5tja 15:11:48 I440r: you can get yourself up to speed, sorta, by checking on kc5tja's website (home page and the blog page) 15:11:58 nah, you could undo moves before returning from a recursion 15:12:25 L) 15:12:27 err 15:12:28 :) 15:12:30 i wonder what i'm doing wrong 15:12:40 --- join: tathi (~josh@pcp02123722pcs.milfrd01.pa.comcast.net) joined #forth 15:12:42 stat()'s st_mode field doesn't match the description in the man page 15:13:00 lol hehe 15:13:05 qFox: in any case, I don't think it would take much memory to store whole coppies of the board for all 42 moves in a 6x7 game 15:13:55 well no, but to solve it i think you'll need gigabytes of free discspace, or a shitload of time with a fast cpu. 15:14:36 anyways i'm off. 15:14:36 nite 15:15:21 --- quit: qFox ("meh ircii's netsplit detection appearantly sux ^^") 15:18:28 --- quit: tathi ("leaving") 15:19:32 grr he left becore i noticed him lol 15:20:44 heh...well, gotta go....all bye! 15:21:05 --- part: TheBlueWizard left #forth 15:30:26 how do you calculate the number of permutations of 112233? 15:31:26 just 6*5*4*3*2 / 8? 15:32:27 I never could figure that stuff out -- it involves factorials, that's all I know. 15:33:12 permutations with unique entries are pretty simple. 15:33:24 for the first digit, you have all 6 to chose from. 15:33:43 so 6 possibilities. for the next digit you have the five you didn't choose to chose from. 15:33:52 so you have 6*5 possibilities. 15:33:58 next place there are four left etc 15:34:24 so for permutations of six unique objects, you have 6*5*4*3*2*1 or simply 6! 15:35:01 I was trying to figure out how you know the number of permutations of something with duplicate entries like 1111222333444 15:35:29 That doesn't make sense. 15:35:46 You have three each of one of four digits, so a total of 12 objects. 15:35:48 That's 12!. 15:36:20 what's 12!? 15:36:21 But if you allow sequences like 111111111111, etc., then the answer would be 4^12. 15:36:46 I just told you what was 12!. 15:37:03 You have 4 kinds of objects (1, 2, 3, 4), and 3 of each kind. That's a total of 12!. 15:37:18 That's a total of 12 rather. 15:37:33 doesn't work that way 15:37:35 For unique permutations, you use the same permutation formula as you did before: 12!. 15:37:38 Why not 15:37:57 it's way too high 15:38:24 No, it follows exactly the same set of laws as your previous 6! example. 15:39:47 ok, you're saying there's 12! orders, 15:39:55 permutations if all were unique 15:39:57 but they aren't 15:40:13 12! is the number of permutations of 12 unique digits 15:40:17 Then your previous example is false for the same reason. 15:40:35 my previous example was just for unique digits 15:40:41 You listed 112233 15:40:49 sorry for the confusion. 15:40:49 There are not 6 unique digits there. 15:41:08 I was starting with an explanation of permutations on unique things 15:41:12 I would think that in that case, there'd be 6!/2 combinations. 15:41:18 Ahh 15:41:53 in the case of 112233, 6! would be way to high, because it would include eg the same looking thing, but with the ones switched 15:43:04 then, I thought, well maybe we could compute the permutations of something with duplicates, if we started with the unique permutations count, and devided it by the number of different orders of things that appear the same 15:43:48 so there's 2 ones, so theres 2! (2) different ways the ones could be rearanged that would look the same. 15:43:59 and same for the twos and threes 15:44:28 --- quit: SDO (Connection reset by peer) 15:44:31 so the total would be: ((6! / 2!) / 2!) / 2! 15:45:03 or 6! / 8 15:45:10 or 90 15:45:35 follow? 15:46:28 so the permutations for 1111222233334444 should be: (((16! / 4!) / 4!) / 4!) / 4! 15:54:28 ahh, and the answer seems to match what qfox and tbw came up with 15:54:39 63063000 16:17:31 Sorry -- was working. 16:17:33 On lunch now though. 16:25:35 --- join: thin (thin@bespin.org) joined #forth 16:29:08 publicly log THIS! 16:30:02 hi thin 16:31:17 THIS! is a C++! construct. We don't talk C++! 'round 'ere. :) 16:31:26 :P 16:31:56 hi kc5tja 16:32:24 hi slava 16:32:25 * kc5tja is --><-- that close to getting FTS/Forth's code to parse words. For the life of me, I can't figure out why it's failing though. I transliterated it to normal GForth, and it works perfectly. This suggests the bug is with the compiler somehow. THis will be nearly impossible to track down. *sigh* 16:35:11 tried gdb? 16:35:30 i heard gdb sucks 16:35:53 thin, yes, for certain things it sucks 16:36:02 it behaves in a counter-intuitive fashion with inline C functions 16:36:06 for assembly i think its fine 16:36:13 hmm 16:36:30 i like being able to interactively execute C functions and look at results, etc. 16:36:30 debuging c is gonna be harder than debugging assembly in any debugger anyways 16:36:36 no its not 16:36:46 well written C/asm/anything is easy to debug 16:37:06 i'm talking about debugging as in using a debugger 16:37:06 C I write on the other hand... *sigh* :) 16:37:15 yes 16:37:20 but i don't see why C would be hard to debug in a debugger 16:37:51 slava: gdb won't do raw assembly. Without some kind of GDB-authorized debugging records in the ELF, it just won't let me do anything. 16:38:31 oh, i see. 16:38:37 GDB is designed specifically and only for C. 16:38:49 Debugging C code in GDB is actually very easy. 16:38:52 I440r uses it for assembler 16:38:54 FAR easier than debugging assembly. 16:39:13 * kc5tja has never been successful in using GDB for anything except C and, to a somewhat lesser extent, C++. 16:39:18 but i guess your generated code doesn't have debugging records 16:39:39 slava i do use it for asm 16:39:53 but that definatly does not make what kc5 said wrong 16:39:59 gdb is a pile of complete and utter shit 16:40:09 is there anything better? 16:40:29 im hoping the author of the assembly language debugger finishes 16:40:46 * kc5tja doesn't see any evidence that he will finish, unfortunately. 16:40:53 Last I checked, it was in an utterly unusable state. 16:41:22 DOS's debug.com works better 16:41:25 yup 16:41:36 ive not seen it updated in over 2 years 16:41:36 DOS's debug is actually not that bad. 16:41:38 debug your linux code in dosemu! ;) 16:41:52 thin: No can do. It needs to be in a 32-bit environment. 16:42:21 kc5tja: i thought about making a debug.com-like debugger in forth, and making it easier to put in asm code, i.e. make it an interactive assembler 16:42:39 thin, that would be kind of nice 16:42:53 debug.com doesn't let you put in a whole bunch of lines of asm code all at once iirc 16:43:26 slava: yeah 16:43:38 anyone have any idea how i would make a debugger like that in forth for linux? 16:43:40 thin: Problem is, while that'd be nice, I'm still trying to boot-strap the very Forth environment that would host the debugger you're talking about. :) 16:43:50 heh 16:44:08 thin: man ptrace is the best I can offer to your last question. 16:44:18 when you said it needs to be in a 32-bit environment, are you talking about debug.com or dosemu? 16:44:28 none of the above. 16:44:39 The code I'm working on is intended for a 32-bit protected mode environment with flat memory space. 16:44:46 yeah 16:45:00 Linux and Dolphin and L4 all fit that bill precisely. 16:45:24 i need to figure out how to arrange factor's memory heap once i add compiling. i won't be able to mix code and data for performance reasons (l1 cache flushing) 16:45:52 slava: is factor threaded? 16:46:10 slava: You don't want to anyway -- mixing code and data is bad for performance. :) 16:46:28 thin, the interpreter recursively iterates linked lists 16:46:42 i mean is it ITC,DTC,STC or N/A :P 16:46:46 N/A 16:47:22 thin: It's list based, like Lisp. 16:47:33 ah 16:47:41 Hence the, "iterates linked lists." :) 16:47:58 eg, the program 2 2 + . is a list, first two elements are literal numbers, last two are words 16:48:08 interpreter pushes 2 2 on the stack, and executes the two following words 16:49:22 kc5tja, i'm sure there's a way to incrementally test your word parsing to see where it fails 16:49:35 kc5tja, even if it means returning values using exit codes 16:54:08 slava: Well, I'm instrumenting the code heavily now, and I'm sure I'll find it, but remember, this all depends on the correctness of the compiler, which itself is questionable at this point. 16:54:25 kc5tja, do you have a unit test suite for the compiler? 16:54:39 slava: No, because there is zero way to test it. 16:55:17 sure there is... 16:58:57 No, because GForth provides no direct way to execute arbitrary code, and the effort to get it working would be immense. 16:59:15 s/arbitrary code/arbitrary machine code/ 16:59:43 generate executables, execute them, compare exit codes 16:59:52 * kc5tja has localized the problem down to one word, but I'm not quite sure how to characterize the bug further at this point. 16:59:53 set them up so that they return a known exit code on correct execution 17:00:33 slava: That's basically what I'm doing now!! 17:01:05 show us the word code ;) 17:01:05 cool. 17:01:12 and then we'll make a bunch of stupid comments 17:01:14 ,: tws ," foo" #src !, src !, >in off 17:01:15 and you'll feel better 17:01:20 ws >in @, 1 #, xor, 17:01:27 if, ," !=" type bye then, bye ;, 17:01:44 the word being tested is 'ws', which skips whitespace. 17:02:40 ,: ws ?b ch $21 #, -, drop, -if, eat ws ;, then, ;, 17:02:54 ?b is a bounds-checking word (which does work and is verified as such) 17:03:12 funny word names :) 17:03:17 what is #, 17:03:24 Compile literal number. 17:03:25 it's # i assume 17:03:42 all the , is because he's coding a new forth in a forth 17:03:49 right? 17:03:50 ok 17:03:52 Yes. 17:04:00 Like I said 100000000 times before -- FTS/Forth does not exist. 17:04:02 Yet. 17:04:07 That's what I'm working on NOW. :) 17:04:21 The target compiler is written in GForth, and compiles to native code, producing an ELF executable. 17:04:29 you could code a bot to replace you on #forth ;) 17:04:29 (rather compact too, I'm pleased to say) 17:04:34 it could parse the logs for everything that you said 17:04:46 and then just regurgitate what you said whenever someone asks a question thats already been answered 17:05:05 --- join: FlamingRain (~Ecoder@c-24-129-95-254.se.client2.attbi.com) joined #forth 17:05:07 :P 17:05:44 --- quit: FlamingRain (Read error: 104 (Connection reset by peer)) 17:06:28 looks like i got myself some more contract work ;) 17:07:56 slava: Nice. *sigh* Too bad I cannot work from home. 17:07:59 I just get too distracted. 17:08:37 whats your main source of distraction? 17:09:18 irc :) 17:09:25 bah this guy checks in huge binaries to cvs 17:10:43 computers, tv, and books are my main sources of distraction 17:10:54 but if i get rid of all those 3 things how can i be productive? :P 17:11:15 how can i get cvs up to create any directories the other guy checked in? 17:12:34 cvs up -d 17:15:36 --- join: mur_ (~mur@uiah.fi) joined #forth 17:16:13 I440r, ping 17:16:22 I440r, can you log off from my box please, it needs a reboot 17:17:43 --- quit: mur (Read error: 60 (Operation timed out)) 17:18:04 --- join: tathi (~josh@pcp02123722pcs.milfrd01.pa.comcast.net) joined #forth 17:18:40 i think i did already didnt i? 17:18:43 hi tathi 17:18:47 hang on let me check :) 17:19:01 hi 17:19:03 yea im not connected :) 17:19:08 thin: Too many things. 17:19:20 I440r, indeed :) 17:19:28 heh 17:20:31 kc5tja: imagine no comp,tv,books,electronics, etc. just you and a pencil and paper :P 17:20:41 thin: Heh 17:20:41 for a year ;) 17:20:56 i'd prolly go insnae first 17:20:59 then start writing down stuff 17:21:12 thin: nah. Pencil and paper are nice for thinking stuff through, but you need a computer to make sure your programs actually run. 17:21:49 tathi - i got absolutely NOWHERE trying to get isforth running in fbsd today 17:21:49 otherwise when you got your computer back, you'd have to spend 3 years debugging :P 17:21:55 tathi: i'm not talking strictly coding 17:22:01 i'm just talking about project ideas in general 17:22:02 ive NO fscking idea why it wont run :( 17:22:09 i know kc5tja has 100s of project ideas 17:22:12 and so do i 17:22:24 sitting down and fleshing them out as much as we can, that would help a lot 17:22:25 thin: there are projects that don't involve computers? ;) 17:22:39 I440r: :( 17:22:41 dammit this guy checks in code to cvs that won't compile 17:22:41 What I need are people to back me on the ideas that I have, and to complete the work that I start. 17:22:43 coding on paper wouldn't be too bad, fleshing out the pseudocode, the design, etc 17:22:45 and expects me to work with him 17:22:45 Seymour Cray syndrome. 17:23:08 tathi its driving me to distraction. the same code acts differently 17:23:14 --- part: titanstar left #forth 17:23:17 not similar code. EXACTLY the same code 17:23:31 well if it was exactly the same it would give the same results no? 17:23:44 thin: It sucks because you definitely cannot unit-test paper code. :) 17:23:52 But then again, formal methods become rather easy...ish. :) 17:23:57 slava: the butterfly flapped his wings! 17:24:02 * tathi agrees with kc5tja re unit-testing 17:24:38 well how much of a coding project is design? 17:24:40 50%? 17:24:49 but most coders just jump in and start coding 17:24:53 0% 17:25:04 thin: Depends on the nature of the project. 17:25:18 thin: Realistically speaking, a project is all design. 17:25:26 That's what extreme programming has been advocating since day one. 17:25:34 coding *is* design. 17:26:15 * kc5tja wishes he knew more about formal methods. 17:26:19 right, you need the program running to give you feedback on how good your design is. 17:26:35 * kc5tja did have some good experience using abstract state machines in writing the Forth assembler for the original Kestrel MISC processor. 17:26:45 so would you start coding your project completely in high level like in Thinking Forth examples? 17:27:02 like imagine writing the washer machine code 17:27:05 writing it all out 17:27:11 thin: No. I'd code the unit tests for them first. Then I'll worry about implementation. 17:27:13 before you even do the low-level hardware activation code 17:27:29 i.e. completely portable 17:27:34 thin: You're looking at coding like it's a one,two,three step process. It's not. 17:27:37 i write the bottom layers first 17:27:38 because the lower-level code hasn't been coded yet 17:27:45 test the bottom layers 17:27:47 build up 17:27:56 get a basic 'top level' going 17:28:06 but yes, its not 1 2 3 17:28:21 Extreme programming advocates writing code as if the code you need to build on *already exists*. Compile. It must fail (if it doesn't, you've got problems). Write the unit tests for the code you need, and repeat. 17:28:35 Of course, it's still not a complete description of extreme programming. 17:28:41 Anyone with google can find out more about XP though. 17:29:41 how do you write unit tests for code that isn't going to be able to trun at all? 17:30:05 because if you start from the low-level, you have the advantage of being able to test each word as you go along 17:30:12 but if you start from the hihg level, how do you test words 17:30:33 thin, you don't start from the high level 17:30:38 thin, or you get a minimal high level going 17:30:48 thin: Google. 17:30:51 --- join: crc (crc@50-pool1.ras11.nynyc-t.alerondial.net) joined #forth 17:30:51 Read up on extreme programming. 17:30:58 hi crc 17:30:59 i have :P 17:31:03 Hi slava 17:31:04 I've explained it literally hundreds of times before, I'm not going to explain it again. 17:31:10 ok 17:31:15 kc5tja, :) 17:31:19 I'm serious. 17:31:21 I've had it. 17:31:46 I've had it with investing the time needed to express how a programming methodology works, only to be asked hypothetical questions of situations that almost never arises. 17:32:12 The only reason I'm not unit testing this code is because there is no way to automate the testing. 17:32:42 Well, no easy way. 17:33:24 Once I get the Forth environment fully bootstrapped, then I can start unit testing from within the environment. Until then, it's not possible in any time-efficient or effort-efficient manner. 17:33:35 kc5tja, i've given up on arguing with people about any serious issue at all because it ultimately comes back to politics/philosophy. over the last 2 years i've really stopped trying to explain anything to people at all.. 17:33:55 thin, don't explain, *do*, and prove the naysayers wrong. :) 17:34:20 how does *do*ing a philosophy prove naysayers wrong? :P 17:34:41 by showing that the philosophy works. 17:34:43 s/do/apply/ 17:36:07 i'm really liking my cpu and memory profiler. i've already found several bottlenecks with these tools and optimized my code, without wasting time optimizing insignificant words 17:38:10 slava: nice 17:38:23 --- join: FlamingRain (~Ecoder@c-24-129-95-254.se.client2.attbi.com) joined #forth 17:41:11 * kc5tja is narrowing the bug down to the implementation of - as far as I can tell. 17:41:32 Which isn't the first time. I've implemented 5 Forth compilers in the past, and NEVER got - right first time once. 17:41:35 I freaking hate it. 17:41:51 subtract ? 17:42:45 you have it backwards? 17:45:50 --- quit: FlamingRain ("Leaving") 17:46:18 No indication that it is backwards, but we're about to find out. Give me a second. 17:52:03 * Tomasu is away: sg1 18:04:32 OK, subtraction does work. 18:04:46 --- quit: crc (Client Quit) 18:04:55 $41 #, $20 #, -, emit does in fact produce a ! on the screen. 18:05:34 is getting it backwards what you usually get wrong about - ? 18:07:14 hm. build prob with factor 18:07:24 native/build.sh doesnt exist in the zip source 18:07:25 OK, just to make sure I know my math right.... 18:07:30 $21 in decimal is 33 right? 18:07:31 zruty, readme is out of date 18:07:34 zruty, use Makefile at top level 18:07:39 tathi: Yeah. 18:07:55 oh silly me 18:08:01 And $20 in decimal is 32? 18:08:08 zruty, maybe tweak the makefile too 18:08:13 And 32 - 33 = -1, which means, bit 31 ought to be set, right? 18:08:15 zruty, the defaults compile with full debug info, etc 18:08:39 So why the hell is -if triggering for 31-33, but not 32-33? 18:08:50 I do believe that this is the true bug I'm looking for. 18:11:35 kc5tja: looks like your math is right to me :) 18:14:52 tathi: OK, so the bug is still with -, but maybe it is somehow munging CPU flags. 18:15:17 So while it's getting the correct value, the conditional instructions aren't receiving the proper signals. 18:15:58 i take it i want boot.img.le? 18:16:05 le == little endian? 18:16:09 zruty, yes 18:16:16 zruty, run it with the boot image 18:16:20 zruty, it will load and dump a factor.image 18:16:21 done 18:16:29 then run this factor.image and you're set 18:16:42 heh. i like that word of the day feature 18:17:09 type this: USE: httpd 8888 httpd 18:17:16 then use your browser to go to localhost:8888/inspect/ 18:43:14 how do you get the terminal dimentions again? 18:43:35 in linux ? 18:43:38 yes 18:43:42 with an ioctl 18:43:44 hang on 18:45:18 : ?term 18:45:18 pad $5413 0 \ get window size using ioctl 18:45:18 pad w@ !> rows \ set window size variables 18:45:18 pad 2+ w@ !> cols ; 18:45:25 ioctl is the syscall 18:45:37 pad is a buffer to store a termios structure in 18:45:51 first 16 bit is #rows second is #columns 18:47:11 does that help? 18:47:47 cool 18:48:08 that constant may be different on ppc though 18:48:13 it is 18:48:49 which makes linux x86 fucked upo 18:48:59 because the value on linux ppc is identical to the one in fbsd 18:49:02 openn bsd 18:49:05 netbsd 18:49:06 etc etc etc 18:49:32 :) 18:50:28 --- quit: proteusguy ("Leaving") 18:50:45 I440r: you call it on stin? 18:51:17 yea 18:51:35 maybe if you call it on stdout it returns the same :) 18:51:37 let me check 18:52:56 yea 18:52:57 :) 18:53:47 works on either 18:55:39 --- join: Sonarman (~matt@adsl-67-113-234-29.dsl.snfc21.pacbell.net) joined #forth 18:56:26 its Sonarman 18:57:00 --- quit: mur_ (Remote closed the connection) 18:57:01 ping! 18:57:03 heh 18:57:33 --- join: mur (~mur@smtp.uiah.fi) joined #forth 18:58:44 hello 19:00:49 --- quit: kc5tja (Read error: 110 (Connection timed out)) 19:03:01 --- join: kc5tja (~kc5tja@66-74-218-202.san.rr.com) joined #forth 19:17:30 yay :) herkforth get's terminal dimentions 19:17:40 wait... still testing 19:18:49 :) 19:21:20 works like a charm 19:21:47 checks it every time it starts up and when it bootstraps 19:21:55 so if you resize your terminal, just hit SHIFT-S 19:22:06 catch SIGWINCH. 19:22:41 in a URL, what is the part after ? called? 19:22:51 like foo.jsp?bar=baz&quux=frobz 19:23:10 QUERY_STRING? 19:23:18 query string thanks 19:23:23 not sure 19:23:34 no that's good enuf 19:23:39 its just a name for a parameter i need here 19:23:42 in the stack comment 19:24:13 it's correct 19:25:08 i'm tempted to throw out a large chunk of my http server and redo it. 19:27:41 do it! 19:28:03 yup. its getting too layered with crud 19:29:00 do you know the feeling where you look at a piece of code, and you think 'some other part of the program shoudl be handling this'? 19:31:36 slava can i log back in i wanna try doing a getrlimit before the brk 19:31:42 yes 19:31:45 tathi suggests 19:31:48 thanx 19:31:56 you don't have to ask for permission :) 19:32:05 i do if you ask me to disconnect :) 19:32:19 I440r, no i had to make some config changes then 19:33:45 k 19:33:47 reboot ? 19:34:33 I440r, its good now 19:36:57 yay :) 19:37:11 I recently changed the way herkforth exports source to ascii 19:37:32 this removed the stupid restriction that definitions must apear before any accurences of a word 19:37:43 before as in in an earlier block, or higher in a block 19:38:30 this had the unfortunate result that anything I wanted to add to the assembler, editor, core, etc had to be wedged into the blocks before it was used. 19:40:01 I just now for the first time took advantage of this :) 19:40:31 Most of my blocks are big enough as is 19:41:10 now you should add scrolling :) 19:41:14 i *like* this 19:41:24 it avoids long circular chains of dependencies 19:41:48 I added the code for getting the terminal dimentions in the last block (which is generally where emty ones are) and just LOADed it in the appropriate place 19:41:58 Sonarman: me? 19:42:05 so that those of us who don't have 1280x1024 screens can look at block 68 :) 19:42:07 but then, i'm not limited to blocks :) 19:42:20 yeah, some blocks have gotten out of hand 19:42:29 mostly because of this restriction 19:42:47 holy cat. yeah, 68 barely fits on my screen 19:43:23 have you considered a less limiting source organization scheme? 19:43:24 foolish code 19:43:34 slava: yeah, I'm working on it 19:43:49 Herkamire, what will it be? 19:44:44 each definition stored seperately 19:45:02 blocks dependancies are compiled automatically 19:45:50 s/blocks/word/ 19:45:57 word dependancies are compiled automatically 19:46:22 blocks are just an array of references to definitions to display 19:46:40 you can insert blocks anywhere, and there'll be a key to split a block into two 19:46:52 ok 19:47:22 grr why the fsck do c coders disassociate the function type from the function name 19:47:25 static void 19:47:31 blah (blah) 19:47:32 so the only restriction really, is an explicit page break 19:47:33 { 19:47:37 fujcking dumb! 19:48:04 I440r: I think to make source tools simpler 19:48:13 I440r: stuff that wants to find definitions etc 19:48:27 dumb 19:48:36 I440r, you won't catch me doing that :) 19:48:38 --- mode: ChanServ set +o I440r 19:48:39 things where you don't want to put in a full-fledged C parser, but you want it to be able to spot definitions 19:49:25 this is an issue that herkforth does not have 19:49:46 heh 19:49:47 I440r, I don't do that. I hate that. 19:49:59 i hate 99% of what c ppl do 19:50:07 We know. :P 19:50:11 man, I bought a CD because I really liked the sound of it in the store, but now I listened to the whole thing, and don't particularly like the other songs 19:50:31 I hate most of what most programmers do 19:50:57 I hate. 19:52:28 Herkamire, you think everybody should be coding in powerpc assmebler? :) 19:55:07 slava: no 19:55:42 I just don't like most code I see 19:56:33 --- join: mur_ (~mur@mgw2.uiah.fi) joined #forth 19:59:00 Herkamire, what code do you like? 20:02:34 slava where in the kernel sources is the brk syscall located ?> 20:02:37 clear, concise 20:02:50 I like it when I can find the bit I want to change and it's relatively easy to change it 20:02:57 I like it when things are factored well 20:03:06 and COMMENTED! 20:03:17 and the source format throughout the entier file is CONSISTENT!!!! 20:03:21 I like it to be readable since I don't know what it does at first 20:03:26 not totaly fucking schitzoid 20:03:52 you see indentations of 2, 3, 4 and 8 all in the same source file 20:03:56 and ALL by the same guy 20:03:59 makes you wonder 20:04:41 I440r, no idea 20:05:36 God, I love screen. :) 20:05:50 Got some serious disconnection happening there, and I stayed up. 20:06:01 I440r, found it 20:06:08 cool! 20:06:09 --- quit: mur (Read error: 110 (Connection timed out)) 20:06:34 err wait 20:08:15 no i only find little stubs 20:12:25 doh 20:34:54 --- quit: mur_ (Remote closed the connection) 20:35:27 --- join: mur (~mur@uiah.fi) joined #forth 20:36:46 schrew comments 20:38:16 comments are good. 20:39:31 Comments are good when the code doesn't already explain itself. 20:40:55 yup 20:41:24 i have a good use for comments in C code -- noting functions that do not perform array bounds and/or type checks. 20:41:28 by aiming to minimize comments, strive to make self-commenting code 20:41:39 that way, i don't end up using an 'unsafe' function in an inappropriate place. 20:42:41 anyone know if the file mode flags are standardized across *nix? 20:42:57 #define S_IFDIR 0040000 /* directory */ 20:43:01 is this always defined like that? 20:43:04 can somebody with linux check? 20:45:53 --- part: thin left #forth 20:47:14 slava: is on my box 20:47:20 ok 20:47:20 (ppc linux) 20:48:02 Sonarman: heh, I removed 6 lines from 68 :) 20:48:07 block 68 that is 20:48:13 haven't commited yet though 20:49:23 :) 20:49:30 AAAAHHHHHH!!!!!!!!!!!!!!!!!!! 20:49:34 FUCK X86!!!! 20:49:41 :) 20:49:44 I FUCKING HATE IT! I FUCKING HATE IT!!! 20:49:47 which of the 1143476987 holes? 20:49:56 Dude, the x86 can't even fucking subtract two fucking INTEGERS! 20:50:39 --- quit: tathi ("leaving") 20:51:03 what happens? 20:51:39 Apparently, !( (N-(N+1)) < 0 ) for all N. 20:52:24 where !(TRUE)=FALSE, and !(FALSE)=TRUE. 20:52:46 jgjump if greater than, signed > 20:53:23 That's SIGNED though. 20:53:37 then ja 20:53:47 I don't WANT signed math. I want unsigned. ALL I want to do is test bit 31 after performing a subtraction. THAT IS IT. 20:54:02 JNS is what I want. 20:54:10 JA tests other flags in the process. 20:54:12 Not what I want. 20:55:00 You can believe that I *will* be posting a diatribe on this on my site tomorrow. I'll let everyone here know when it's done. When it's up, please feel free to refer others to it. 20:55:10 I've fucking had it with this fucking shit. 20:55:30 This is a bona fide BUG. 20:56:02 If the result of any ALU operation has bit 31 set, the S flag must be set. PERIOD. END OF DISCUSSION. 20:56:19 That's the fucking PURPOSE of the so-called "SIGN BIT". Duhh. 20:56:23 SF - Sign flag. 20:56:23 Set equal to the most-significant bit of the result, which is the sign bit of a signed integer. (0 indicates a positive value and 1 indicates a negative value.) 20:56:25 Unbelievable. 20:56:27 thats from the nasm manual 20:56:45 Yes, and N-(N+1) is always -1. 20:56:53 E.g., $FFFFFFFF, and hence, bit 31 is set. 20:56:55 yup 21:01:31 --- quit: Herkamire (Read error: 54 (Connection reset by peer)) 21:01:37 how do you plan to work areound this? 21:04:02 It's too early to tell right now. 21:04:02 add eax, eax 21:04:04 jc 21:04:16 I440r: No, I can't do that because add eax,eax changes the TOS. 21:04:18 Not good. 21:04:27 u got a scratch reg ? 21:04:29 I need OR EAX,EAX, TEST EAX,EAX, etc. at the most 21:04:30 mov eax, scratch 21:04:36 ok then 21:04:43 test eax, 080000000 21:04:45 je 21:04:59 can you push eax 21:05:02 add eax, eax 21:05:04 pop eax 21:05:04 ? 21:05:21 Sonarman: One of my steps will be reviewing the ColorForth source code, but since this is where I got the idea from to begin with, I'm rather positive that CF is doing exactly what I'm doing. 21:05:32 I440r: How slow do you want FTS/Forth to be? 21:05:51 If ColorForth can do it in two instructions, so can I. 21:05:53 kc5 how often will you be doing this test ? 21:06:00 pushes and pops arent THAT slow 21:06:03 Often enough. 21:06:36 hrm. maybe ill email eric isaacson 21:12:06 kc5tja: why do you have to do the OR instruction before the TEST? 21:13:32 btw, cf doesn't have a subtraction word 21:14:06 Sonarman: I didn't. 21:14:32 Sonarman: No, it does a signed addition. My bug is reproducable under those conditions too. I've tried. 21:14:52 Sonarman: My "?" word compiles OR EAX,EAX instead of TEST EAX,EAX. 21:16:22 oh, so either of those would work? 21:16:54 yes. 21:16:58 I've also tried both. 21:17:32 does shr shif into carry or just shift carry into the reg ? 21:17:42 i.e. retaining carry 21:17:47 shl eax, 1 21:17:49 shr eax, 1 21:17:57 eax unchanged but carry now equals sign ? 21:18:30 I can't believe I'm doing this. 21:18:39 Dude, ColorForth gets by with TWO fucking instructions. 21:18:52 Here I am, with up to *8* now, and still no fucking guarantee. 21:20:37 --- quit: zruty ("Lost terminal") 21:23:38 * kc5tja cries -- I can't set a breakpoint in gdb either. I can't single-step, I can't run, nothing. 21:24:09 Can someone tell me please why I'm still using the PC architecture? 21:24:19 (Besides Neverwinter Nights) 21:24:57 because you love the challenge ? 21:24:58 you believe that RISC instructions are too long 21:25:30 because coding x86 puts hairs on your chest 21:25:32 i know 21:25:36 i have a chest hair now! 21:25:42 I440r, lol 21:25:52 and i *want* to learn x86 21:25:58 lol 21:29:57 x86 is eaxy 21:30:01 learning to love it isnt 21:30:16 hehe 21:30:23 anyway its time for zzz 21:30:29 i accomplished ZERO 21:31:01 Sonarman: I do not believe RISC instructions are too long. 21:31:05 Where did you get that idea from? 21:31:16 I *like* CPUs that have consistently sized instructions. 21:31:40 And besides, some x86 instructions can actually get up to 16 bytes long when you fully load them up with all the supported CPU prefix bytes. 21:32:01 (not that you'll often experience instructions this long, but hey...the CPU *CAN* execute them.) 21:32:46 For example, I'm reading the P4 instruction set reference manual now. 21:32:52 kc5 what processor do you have ? 21:32:56 Check this out: SUBPD -- vectorized subtraction. 21:33:03 i have a p4 21:33:44 The opcode alone is 3 bytes long. THen there can be up to two additional bytes for address mode specification (5 total so far), plus another (up to) four bytes for any displacement or operand. So, minimum length for this instruction is 5 bytes, while maximum is 9. 21:33:55 * kc5tja has an AMD Athlon 800MHz Slot-A. 21:34:09 ok 21:34:40 I know it has to be something I'm doing wrong. It just has to be. Because the test is consistent across three processor architectures. 21:35:01 kc5tja: i know, i was just joking about the risc instructions thing 21:35:02 Intel P4, Intel P3 Celeron, and AMD Athlon (old school, but still) 21:37:38 then i would say that your bug is consistent accross processors then 21:37:54 I'm still posting the article. 21:38:02 kc5 anyone who develops on anything other than THE SLOWEST machien they can find isnt producing any really good code :) 21:38:06 I still consider this to patently be a bug at this point. 21:38:14 i agree 21:39:34 man, this OOP language extension i'm working on is going to simplify so much code. 21:39:39 I mean, I just confirmed right from Intel's own docs that LEA affects NO flags. 21:39:50 but its time to sleep 21:39:52 'night. 21:39:57 and that SUB does affect the SF flag. 21:40:00 Night slava ! 21:41:59 SF ? 21:42:08 sign flag flag hehe 21:42:11 how 21:42:19 ive not been able to set the sign flag at all 21:43:53 * Tomasu is away: store 21:44:01 I think this is pretty serious. 21:44:39 Either we're completely missing something obvious, or the Intel architecture is no longer backward compatible with the earlier generation of CPUs, from which the original SUB came from. 21:44:48 But I find that highly, highly, highly unlikely. 21:44:54 As old software undeniably still runs. 21:48:57 you know for sure that sub affected sf in the past? 21:49:11 --- join: asymptote (~weldon@bgp02689673bgs.flrdav01.dc.comcast.net) joined #forth 21:49:36 Sonarman: I not only knew for sure, I depended on it. 21:49:53 And I'm positive that ColorForth depends on it too. 21:50:01 Do a disassembly of -IF in ColorForth to see proof. 21:51:06 yeah, just a JNS 21:51:14 --- part: asymptote left #forth 21:51:39 Precisely. :) 21:51:44 I440r: See? Told you. :) 21:52:08 So what is it that is preventing the CPU from setting SF? I'm awfully confused. 21:52:27 but does colorforth use -if after a subtraction? 21:53:30 kc5 lol 21:53:38 its a bug 21:53:45 and NOT in CF 21:54:17 maybe linux sets some weird machine state flag? 21:54:59 Sonarman: XColorForth works fine. And I've personally used -IF after a subtraction. 21:55:20 so the problem must be with linux then, right? 21:55:58 wait, XColorForth runs IN linux, so... nevermind :) 22:02:34 Precisely. 22:17:08 --- quit: kc5tja ("THX QSO ES 73 DE KC5TJA/6 CL ES QRT AR SK") 22:18:50 --- join: Serg_penguin (~z@212.34.52.140) joined #forth 22:20:09 --- nick: Serg_penguin -> Serg[work] 22:20:13 re ! 22:29:25 --- quit: Sonarman ("leaving") 22:29:59 * Tomasu is back (gone 00:46:05) 22:32:50 --- join: mur_ (~mur@kyberias.uiah.fi) joined #forth 22:35:42 --- quit: mur (Read error: 60 (Operation timed out)) 23:15:21 --- quit: warpzero ("Tried to warn you about Chino and Daddy Gee, but I can't seem to get to you through the U.S. Mail.") 23:21:01 --- join: mur (~mur@kyberias.uiah.fi) joined #forth 23:25:04 --- join: qFox (C00K13S@82-169-140-229-mx.xdsl.tiscali.nl) joined #forth 23:33:13 --- quit: mur_ (Read error: 110 (Connection timed out)) 23:56:25 --- quit: Serg[work] (Read error: 54 (Connection reset by peer)) 23:59:59 --- log: ended forth/04.08.29