00:01:00 -!- oerjan has joined.
00:05:46 -!- MizardX- has joined.
00:06:02 -!- MizardX has quit (Read error: 104 (Connection reset by peer)).
00:06:24 -!- MizardX- has changed nick to MizardX.
00:13:32 -!- jix has quit ("sleep").
00:18:52 -!- Dewio has joined.
00:31:20 -!- Dewi has quit (Read error: 101 (Network is unreachable)).
00:38:54 <Gracenotes> the first time you watch it, you think things start getting weird 20 minutes before the film ends
00:39:09 <Gracenotes> but really... they start getting weird only 20 minutes after the film begins
00:39:49 <Gracenotes> it's pretty screwed up... and amazing...
00:41:18 <coppro> are there any threading-oriented esolangs?
00:45:12 -!- puzzlet has quit (Remote closed the connection).
00:45:15 -!- puzzlet has joined.
00:48:59 <oerjan> coppro: check out http://esoteric.voxelperfect.net/wiki/Category:Concurrent_programming
00:50:56 <oerjan> it's fairly rare, but there might be uncategorized ones
00:52:15 <oerjan> heh Network Headache may be one
00:52:33 <oerjan> (found from http://esoteric.voxelperfect.net/wiki/Category:Nondeterministic)
00:54:16 <oerjan> hm SNUSP has a concurrent variant
00:54:25 <oerjan> (found by searching for "thread")
00:54:44 <coppro> of those 4, two are BF variants and two are Befunge-likes
00:55:05 <oerjan> and there is Threaded INTERCAL
00:55:38 <oerjan> coppro: just bad categorization i take
00:56:51 <oerjan> CLoop is parallel but not concurrent (no interaction)
01:18:48 -!- oerjan has quit ("leaving").
01:37:06 -!- GregorR has quit (Remote closed the connection).
01:38:19 -!- GregorR has joined.
01:43:13 -!- puzzlet_ has joined.
01:54:47 -!- oerjan has joined.
01:55:07 -!- puzzlet has quit (Read error: 110 (Connection timed out)).
01:56:55 -!- psygnisfive has joined.
01:59:29 -!- Sgeo has joined.
02:00:36 -!- puzzlet_ has quit (Read error: 104 (Connection reset by peer)).
02:01:41 -!- puzzlet has joined.
02:29:39 * pikhq sticks a cockroach on oerjan's keyboard
02:30:45 <oerjan> although i found another ant in the bathroom earlier
02:31:01 <oerjan> EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
02:31:04 <pikhq> (it is non-existent; big difference)
02:38:03 <EgoBot> Interpreter slashes deleted.
02:38:25 <oerjan> !addinterp slashes perl http://oerjan.nvg.org/esoteric/slashes.pl
02:38:27 <EgoBot> Interpreter slashes installed.
02:38:53 <oerjan> !slashes http://oerjan.nvg.org/esoteric/counter.slashes
02:40:42 <oerjan> problem is, without newlines it never prints anything, with newlines no one but me will see it
02:41:09 <oerjan> !slashes http://oerjan.nvg.org/esoteric/counter.slashes
02:42:11 <oerjan> my other fear seems to come true: EgoBot doesn't allow enough time to reach the next iteration
02:43:23 <oerjan> now it doesn't work in my terminal either
02:45:12 <oerjan> huh the slashes interpreter has some trouble with newlines
02:47:18 * oerjan suspects some multiline setting problem
02:49:52 <oerjan> ah indeed missing s options on s///
02:50:12 <oerjan> a backslash followed by newline won't be unescaped
02:51:10 <EgoBot> Interpreter slashes deleted.
02:51:18 <oerjan> !addinterp slashes perl http://oerjan.nvg.org/esoteric/slashes.pl
02:51:19 <EgoBot> Interpreter slashes installed.
02:51:28 <oerjan> !slashes http://oerjan.nvg.org/esoteric/counter.slashes
02:52:11 <oerjan> !slashes http://oerjan.nvg.org/esoteric/counter.slashes
02:52:44 <oerjan> it now gives _one_ more line (with **) in DCC CHAT
02:53:00 <oerjan> this program is expensive :D
02:53:40 <oerjan> oh well it works in a terminal window
02:58:20 <GregorR> !slashes http://oerjan.nvg.org/esoteric/counter.slashes
03:01:10 <EgoBot> Interpreter slashes deleted.
03:01:18 <oerjan> !addinterp slashes perl http://oerjan.nvg.org/esoteric/slashes.pl
03:01:18 <EgoBot> Interpreter slashes installed.
03:01:35 <oerjan> (my own interp still had an old bug that was fixed on the wiki)
03:02:13 <oerjan> GregorR: do you see anything more than two lines?
03:04:31 <psygnisfive> i think ive built my first generic-ish parser that produces a parse tree. o.o;
03:04:51 <psygnisfive> all my previous parsers were really customized to the language, but this one, no!
03:13:49 * oerjan is busy preparing his slashes program with continuation line breaks
03:14:02 <oerjan> by modifying the haskell generator
04:20:32 -!- puzzlet has quit (Read error: 60 (Operation timed out)).
04:21:59 -!- puzzlet has joined.
04:22:16 -!- puzzlet has quit (Read error: 104 (Connection reset by peer)).
04:26:59 -!- puzzlet has joined.
04:48:39 <kerlo> How's that ///ology coming along?
04:48:49 <oerjan> kerlo: see the wiki :) :) :)
04:50:38 <coppro> slashes has so much potential
04:51:03 <oerjan> yeah now my bet is certainly on turing-completeness
04:51:38 <kerlo> And yeah, non-Turing-completeness is kind of hard to imagine at this point.
04:51:54 <kerlo> I guess you win the $500 prize.
05:15:23 -!- coppro has quit (Remote closed the connection).
05:16:42 -!- Dewio has quit (lindbohm.freenode.net irc.freenode.net).
05:16:42 -!- ineiros has quit (lindbohm.freenode.net irc.freenode.net).
05:16:42 -!- Ilari has quit (lindbohm.freenode.net irc.freenode.net).
05:16:43 -!- Asztal has quit (lindbohm.freenode.net irc.freenode.net).
05:16:43 -!- ehird has quit (lindbohm.freenode.net irc.freenode.net).
05:16:43 -!- rodgort has quit (lindbohm.freenode.net irc.freenode.net).
05:16:43 -!- Sgeo has quit (lindbohm.freenode.net irc.freenode.net).
05:16:43 -!- comex has quit (lindbohm.freenode.net irc.freenode.net).
05:17:06 -!- Sgeo has joined.
05:17:06 -!- comex has joined.
05:17:42 -!- Dewio has joined.
05:17:42 -!- ehird has joined.
05:17:42 -!- ineiros has joined.
05:17:42 -!- Ilari has joined.
05:17:42 -!- rodgort has joined.
05:17:42 -!- Asztal has joined.
05:30:34 -!- oerjan has quit ("leaving").
05:58:04 -!- asie[brb] has joined.
05:58:08 -!- asie[brb] has changed nick to asiekierka.
05:58:14 <fungot> Available: agora alice c64* darwin discworld europarl ff7 fisher ic irc jargon lovecraft nethack pa speeches ss wp youtube
05:58:22 <fungot> asiekierka: another problem is that stop causes the keyboard matrix tables should not exceed the limit. it will " wrap around" back to ascii text of the basic rom.
05:58:39 <asiekierka> fungot: I understand. Now, why would it wrap around?
05:58:39 <fungot> asiekierka: preparatory routines: none note: ror instruction is tacked on to location 894 which is decoded by your program will continue to do this either by hitting the return key
05:58:55 <fungot> Selected style: youtube (Some YouTube comments)
05:59:01 <fungot> asiekierka: and if there hadn't been people on board
05:59:09 <fungot> asiekierka: ive seen so many people wher on board this plane hit a forest at 200mph within 4 seconds of data to make a great father... your son seem to suggest, vote on.
05:59:16 <fungot> Selected style: c64 (C64 programming material)
06:00:09 <fungot> Selected style: speeches (misc. speeches from Project Gutenberg)
06:03:19 <Sgeo> "Because I'm too busy right now to respond to important emails and update the site in a timely manner, I've taken the majority of the archives down."
06:05:30 -!- Infinitismal has joined.
06:06:02 <Sgeo> http://sites.google.com/site/c3dsarchives/
06:12:28 <asiekierka> i'm amazed how no-one made a "twitter" style yet
06:23:00 <asiekierka> so twitter style would have many "twits"
06:32:56 -!- asiekierka has quit.
07:02:17 -!- bsmntbombdood has changed nick to bsmntbombgirl.
07:11:11 -!- kar8nga has joined.
07:25:55 -!- kar8nga has quit (Read error: 54 (Connection reset by peer)).
07:29:26 -!- kar8nga has joined.
07:54:49 -!- kar8nga has quit (Remote closed the connection).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:03:29 -!- puzzlet has quit (Remote closed the connection).
08:03:33 -!- puzzlet has joined.
08:32:46 -!- lereah_ has joined.
09:05:35 <fizzie> The messages themselves are "tweets", as I understand it.
09:28:23 -!- OKLOPOL has joined.
09:28:35 -!- OKLOPOL has changed nick to oklopol.
09:29:28 <fizzie> Now you gone went smaller.
09:31:37 <fizzie> Manage the age of man.
09:37:00 <oklopol> sera meganame manage mares <<< makes no sense maybe, but it's the best i could do.
09:43:04 <fizzie> E-manage moon, no omega name.
09:46:27 -!- oklopol has quit (Read error: 60 (Operation timed out)).
09:46:56 <fizzie> I didn't think it was that bad. :/
09:48:30 -!- Sgeo has quit ("Leaving").
09:57:38 -!- oklodok has joined.
10:03:18 -!- oklopol has joined.
10:21:17 -!- oklodok has quit (Read error: 113 (No route to host)).
10:41:08 -!- ais523 has joined.
11:20:40 -!- tombom has joined.
11:22:28 -!- jix has joined.
11:44:11 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
12:32:16 -!- ais523 has quit (Remote closed the connection).
12:46:51 -!- KingOfKarlsruhe has joined.
12:57:32 -!- asiekierka has joined.
12:57:38 <fungot> Available: agora alice c64 darwin discworld europarl ff7 fisher ic irc jargon lovecraft nethack pa speeches* ss wp youtube
12:57:43 <fungot> Selected style: youtube (Some YouTube comments)
12:58:44 <fizzie> I'm guessing it's in ignore mode; it only does four or so replies for one particular person consecutively, to make it a bit less annoying for people who try to get something done.
12:59:00 <fizzie> fungot: Walk like a YouTubeian.
12:59:00 <fungot> fizzie: did every body die? sorry but thats just cuz she older and well documented crash but people died! put this in a box, and it wasn't...
12:59:14 <fizzie> There, now you have four replies again.
13:01:29 <asiekierka> well, I just wanted to see if it works
13:02:42 <asiekierka> and also, I just want to make a C64 OS :P
13:04:42 <asiekierka> And I think I finally know how to do it :D
13:07:28 <asiekierka> Well, I first need to have a way to output a single char. Answer: self-modifying code! :D
13:07:40 <asiekierka> well, you can also do it with A and X but nah
13:07:48 <asiekierka> you would still need to output it there anyway
13:27:14 -!- jix has quit ("leaving").
13:33:18 -!- lereah_ has quit (Remote closed the connection).
13:37:47 <AnMaster> Erlang is perfect for a bf optimiser really
13:37:55 <AnMaster> the pattern matching makes it very easy
13:38:07 <AnMaster> + the "multiple entry points to function"
13:38:34 <AnMaster> for example the "combine ++ into +" is:
13:38:36 <AnMaster> optimise([#bfn{ ins = add, off = Offset, val = V1 }|T],
13:38:36 <AnMaster> [#bfn{ ins = add, off = Offset, val = V2 } = A|Result]) ->
13:38:36 <AnMaster> optimise(T, [A#bfn{ val = V1 + V2 }|Result]);
14:09:46 -!- KingOfKarlsruhe has quit (Remote closed the connection).
14:23:44 -!- upyr[emacs] has joined.
14:33:10 <tombom> fungot: what does this do
14:33:10 <fungot> tombom: megadeth is who plays the role heath ledger plays in the movie?
14:36:16 <ehird> haven't seen you around
14:38:54 <ehird> slashes is totally a reverse ripoff of my lanaugae
14:40:35 <ehird> http://oerjan.nvg.org/esoteric/SlashesCounter.hs
14:44:33 <fizzie> It's not just oerjan-coding, but clever coding too. I did have the "use a character which scans through the program" idea too (it's so common in string-rewritingy things) but thought it'd need some looping; but of course it doesn't need to be unbounded there.
14:54:30 <upyr[emacs]> pseudorandom number generator with brainfuck - it's real?
14:55:02 <ehird> upyr[emacs]: Sure. it produces the same results every run, of course ...
14:55:18 <ehird> But the list of results it outputs should be more or less sufficient for pseudorandom purposes.
14:55:54 <asiekierka> I should implement it for my C64 OS later on
14:56:01 <ehird> upyr[emacs]: If you need, say, 1000 random numbers from 0-255, you can just tell the user to run as ((head -c 1000 /dev/urandom && cat) | bf foo.b)
14:56:12 <ehird> and 1000 ,>s at the start of your program
14:56:20 <ehird> but if you don't mind it being the same evry time...
14:59:56 <asiekierka> YOu could pretty much say "PRESS ENTER" and run an infinite loop of pseudorandom generation until the user hits enter
15:00:09 <asiekierka> also, doh, my printing code does not work
15:00:19 <ehird> asiekierka: you can't run code while listening for input
15:00:53 <ehird> this is trivial shit
15:01:37 -!- asiekierka has set topic: #esoteric, the international hub for esoteric programming language design and deployment - #esoteric is not associated with the joke language Perl, please visit www.perl.org - logs: http://tunes.org/~nef/logs/esoteric/ | to make fungot talk different use ^style.
15:02:00 -!- ehird has set topic: international pub http://tunes.org/~nef/logs/esoteric/.
15:02:25 -!- asiekierka has set topic: international pub http://tunes.org/~nef/logs/esoteric/ | to make fungot talk different use ^style.
15:03:39 <fungot> ^<lang> <code>; ^def <command> <lang> <code>; ^show [command]; lang=bf/ul, code=text/str:N; ^str 0-9 get/set/add [text]; ^style [style]; ^bool
15:03:52 -!- ehird has set topic: international pub http://tunes.org/~nef/logs/esoteric/.
15:03:53 <fungot> echo reverb rev rot13 rev2 fib wc ul cho choo pow2 source help hw srmlebac uenlsbcmra scramble unscramble
15:03:55 <ehird> everyone knows about ^style
15:04:14 <fungot> >>,[>,]<[<]>[.>>]<[>>]<2[.<2]
15:04:29 <ehird> ^scramble asterisks
15:04:33 <ehird> ^unscramble atrsskies
15:04:48 <ehird> it's the ehird srmlebac algorithm
15:04:53 <fungot> >>,[>,]<[<]>[.>>]<[>>]<2[.<2]
15:05:08 <ehird> asiekierka: scramble is an alias for srmlebac
15:05:15 <ehird> same with unscramble/uenlsbcmra
15:05:23 <ehird> ^scramble uenlsbcmra
15:06:10 <ehird> ^scramble 123456789
15:06:17 <ehird> asiekierka: I did invent the algorithm, you know :P
15:06:25 <ehird> ^unscramble 123456789
15:06:30 <ehird> ^unscramble 12345678
15:07:13 <AnMaster> <ehird> http://oerjan.nvg.org/esoteric/SlashesCounter.hs <-- "-- By �rjan Johansen, May 2009."?
15:07:21 <ehird> AnMaster: What about it?
15:07:33 <ehird> Nope, it's your fail.
15:07:36 <ehird> It slows up perfectly fine for me.
15:08:00 <ehird> It has no charset= in the Content-Type, but oh well.
15:08:02 <AnMaster> ehird, maybe your client auto detect it as "ISO" and uses that.
15:08:11 <ehird> No, in my client it displays wrongly.
15:08:14 <ehird> In my browser it does not.
15:08:20 <ehird> -- By Ørjan Johansen, May 2009.
15:08:24 <asiekierka> ^def ascram bf >>,[>,][[<]>.[-]>.[-][>]<.[-]<.[-]<]
15:08:24 <ehird> copy/pasting autoconverts
15:08:57 <asiekierka> ^def ascram bf >>,[>,]+[[<]>.[-]>.[-][>]<.[-]<.[-]<]
15:09:21 <ehird> ^scramble spartans
15:09:23 <ehird> scrambled spartans
15:10:00 <asiekierka> ^def ascram bf >>,[>,]<[[<]>.[-]>.[-][>]<.[-]<.[-]<]
15:10:30 <fizzie> The server sends "Content-Type: text/x-haskell" with no charset modifier, so it's a bit debatable. Unless Haskell happens to have a well-defined standard encoding?
15:10:43 <fizzie> Oh, ehird mentioned already. Still.
15:11:04 <ehird> Still, there's a lot of mojibake out there if you don't autodetect.
15:11:13 <asiekierka> ^def ascram >>,[>,]<[---<-<--<-----<][>>.<.>]
15:11:14 <fungot> Usage: ^def <command> <lang> <code>
15:11:18 <asiekierka> ^def ascram bf >>,[>,]<[---<-<--<-----<][>>.<.>]
15:11:35 <fungot> >>,[>,]<[<]>[.>>]<[>>]<2[.<2]
15:12:16 <asiekierka> ^def ascram bf >>,[>,]<[---<-<--<-----<]>[>>.<.>]
15:12:19 <fungot> >>,[>,]<[-3<-<-2<-5<]>[>>.<.>]
15:12:26 <ehird> it looks like a crap algorithm :)
15:13:57 * AnMaster considers non-destructive copy in bf. The shortest I can think of uses one scratch cell: [->+>+<<][+>-<] to copy to the cell two above, and use the one at one above for scratch.
15:15:18 <fungot> asiekierka: i like the old pics!!!!! no way, is it? i did get to me, the pilot if he tries to touch the ground
15:15:30 <fizzie> You don't really need to define commands for testing; you can just use "^bf code!input".
15:15:33 <EgoBot> Supported commands: addinterp bf_txtgen daemon daemons delinterp fyb help info kill userinterps 1l 2l adjust asm axo bch bct befunge befunge98 bf bf16 bf32 bf8 bfbignum boolfuck c chiqrsx9p choo cintercal clcintercal cxx dimensifuck echo forth glass glypho hello kipple lambda lazyk linguine malbolge pbrain perl qbf rail rhotor rot13 sadol sceql sh show slashes test trigger udage01 underload unlambda whirl yodawg
15:15:44 <fizzie> And yes, the cells are 8 bits.
15:15:45 <asiekierka> I'd use egobot but it doesn't support input
15:18:04 <asiekierka> ^bf ,[[>+<-]>>+<<,]>.>>+++++++++++++[<+++>-]<.!AAAAA
15:18:10 <ehird> 15:15 asiekierka: I'd use egobot but it doesn't support input
15:18:18 <EgoBot> Supported commands: addinterp bf_txtgen daemon daemons delinterp fyb help info kill userinterps 1l 2l adjust asm axo bch bct befunge befunge98 bf bf16 bf32 bf8 bfbignum boolfuck c chiqrsx9p choo cintercal clcintercal cxx dimensifuck echo forth glass glypho hello kipple lambda lazyk linguine malbolge pbrain perl qbf rail rhotor rot13 sadol sceql sh show slashes test trigger udage01 underload unlambda whirl yodawg
15:18:21 <EgoBot> Sorry, I have no help for bf!
15:18:28 <ehird> !daemon butt bf ,[.,]
15:18:31 <ehird> !butt on the floor
15:18:42 <ehird> !bf ,[.,]!hmm does this
15:18:55 <ehird> !c printf("butt\n")
15:19:37 <ehird> !c char b[1024];gets(b);puts(b)
15:19:38 <asiekierka> ^bf ,[[>+<-]>>+<<,]>.>>++++++++++++[<++++>-]<.!AAAAA
15:19:44 <asiekierka> ^bf ,[[>+<-]>>+<<,]>.>>++++++++++++[<++++>-]<.!ABCDE
15:19:46 <ehird> !daemon cs c char b[1024];gets(b);puts(b)
15:20:42 <EgoBot> Daemon bottles running.
15:20:50 <EgoBot> EgoBot is a bot for running programs in esoteric programming languages. If you'd like to add support for your language to EgoBot, check out the source via mercurial at https://codu.org/projects/egobot/hg/
15:21:31 <Gracenotes> !c typedef struct { int omg; } WHAT_YOU_SAY; WHAT_YOU_SAY destruction = { 4}; printf("%d\n", destruction.omg);
15:21:33 <asiekierka> One day, I should make script-created lists of styles for each individual person on IRC
15:21:37 <ehird> !daemon cs c char b[1024];gets(b);puts(b);fflush(stdout)
15:21:37 <EgoBot> That daemon is already running!
15:21:41 <EgoBot> That interpreter doesn't exist!
15:21:42 <ehird> !daemon cs c char b[1024];gets(b);puts(b);fflush(stdout)
15:21:42 <EgoBot> That daemon is already running!
15:21:55 <asiekierka> there will be a style for Gracenotes, ehird, asiekierka
15:21:55 <fizzie> Kill, don't delinterp.
15:21:59 <ehird> !daemon cs c char b[1024];gets(b);puts(b);fflush(stdout)
15:22:13 <ehird> !daemon cs c char b[1024];for(;;){gets(b);puts(b);fflush(stdout);}
15:22:14 <EgoBot> That daemon is already running!
15:22:17 <ehird> !daemon cs c char b[1024];for(;;){gets(b);puts(b);fflush(stdout);}
15:22:40 <EgoBot> don't play with fire.c
15:22:50 <ehird> Gracenotes: if you have some non-function body stuff you need to declare main()
15:22:56 <EgoBot> can i talk with you, ehird?
15:23:12 <Gracenotes> !c typedef struct { int omg; } WHAT_YOU_SAY; int main() { WHAT_YOU_SAY destruction = { 4}; printf("%d\n", destruction.omg); return 0; }
15:23:14 <EgoBot> ehird: but the plane said so!
15:23:48 <EgoBot> Gracenotes: wtf, plane
15:23:58 <ehird> tombom: asiekierka is controlling him
15:24:00 <ehird> because he thinks it's funny
15:24:05 <EgoBot> tombom: Of epic plane proportions, so but.
15:24:06 <ehird> he does this kind of stuff *a lot*
15:24:25 <EgoBot> aight, let's stop this nonsense
15:24:36 <ehird> !c typedef struct { int omg; } WHAT_YOU_SAY; int main() { WHAT_YOU_SAY destruction = { 4}; printf("%d\n", destruction.omg); fflush(stdout); return 0; }
15:24:58 <EgoBot> Supported commands: addinterp bf_txtgen daemon daemons delinterp fyb help info kill userinterps 1l 2l adjust asm axo bch bct befunge befunge98 bf bf16 bf32 bf8 bfbignum boolfuck c chiqrsx9p choo cintercal clcintercal cxx dimensifuck echo forth glass glypho hello kipple lambda lazyk linguine malbolge pbrain perl qbf rail rhotor rot13 sadol sceql sh show slashes test trigger udage01 underload unlambda whirl yodawg
15:25:04 <ehird> !forth ." hello world" cr
15:25:34 <Gracenotes> it works on GCC if I #include <stdio.h>
15:25:57 <fizzie> Based on a hg clone, it does: #include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <sys/types.h>\n#include <unistd.h>\nint main(int argc, char **argv) { <code from IRC> ; return 0; }
15:26:22 <ehird> fizzie: no, not if you declare things
15:26:31 <fizzie> I didn't see any code related to that, but I might've missed.
15:26:59 <fizzie> !c struct { int omg; } destruction = { 4 }; printf("%d\n", destruction.omg); fflush(stdout)
15:27:04 <fizzie> Well, that's a no-go too.
15:28:04 <Gracenotes> !c #include <stdio.h>\n typedef struct { int omg; } WHAT_YOU_SAY; int main() { WHAT_YOU_SAY destruction = { 4}; printf("%d\n", destruction.omg); return 0; }
15:28:42 <tombom> THIS BOT IS NOT VERY GOOD
15:28:52 <ehird> asiekierka probably borken it
15:28:55 <ehird> !perl print "welp\n";
15:30:27 <fizzie> ^ul (left)(one)(this)(have)(just)(we)(now)(~S( )S:^):^
15:30:27 <fungot> now we just have this one left ...out of stack!
15:30:33 <fizzie> (Terminating conditions are so boring.)
15:31:30 <ehird> how large is the stackattack?
15:32:25 <fizzie> Fungot's ^ul stack is ffaa*** characters.
15:32:49 <fizzie> That's the misleading underflow message, though.
15:33:47 <ehird> fizzie: what's the separator?
15:34:09 <Gracenotes> ......................................................................................................................................................
15:34:18 <AnMaster> what would be a good name for an optimiser pass for bf that changes: add, move pointer, add into: add, add offset 1, move pointer
15:34:35 <ehird> that's nothing special
15:34:44 <fizzie> ehird: Actually "\0, I'm sure", since I use STRN's G/P to manipulate, and that does nul-terminated.
15:34:54 <AnMaster> the phrase "store motion pass" pops up but probably isn't relevant.
15:35:19 <ehird> AnMaster: "combine Move-s along the program by pushing them to the end"
15:35:27 <ehird> i'd call it move shifting
15:35:30 <AnMaster> ehird, and I never said it was special. I just need a short snappy name.
15:35:35 <ehird> fizzie: including the I'm sure?
15:35:42 <ehird> AnMaster: so (define (shift-moves ...
15:35:50 <fizzie> ehird: Yes. It's like Perl's "0 but true".
15:35:58 <AnMaster> ehird, um. I'm not working on after. I'm working on in-between
15:36:21 <ehird> fizzie: does it accept \0s over irc?
15:36:39 <fizzie> You can't send \0s over IRC; it's disallowed by the protocol.
15:36:46 <fizzie> Well, I'm not sure how true that is in practice.
15:36:58 <ehird> i'd bloody well find out, except...
15:37:04 <ehird> i forget the key combination
15:37:21 <AnMaster> fizzie, I'm pretty sure it is true
15:37:22 <EgoBot> Supported commands: addinterp bf_txtgen daemon daemons delinterp fyb help info kill userinterps 1l 2l adjust asm axo bch bct befunge befunge98 bf bf16 bf32 bf8 bfbignum boolfuck c chiqrsx9p choo cintercal clcintercal cxx dimensifuck echo forth glass glypho hello kipple lambda lazyk linguine malbolge pbrain perl qbf rail rhotor rot13 sadol sceql sh show slashes test trigger udage01 underload unlambda whirl yodawg
15:37:45 -!- fkjdskfdshjf has joined.
15:38:16 <ehird> just \0 said no text to send
15:41:07 -!- fkjdskfdshjf has quit (Remote closed the connection).
15:46:22 <upyr[emacs]> ^bf >++++++[<++++++++>-]>++[<+++++>-]<[<.+>-]
15:47:42 <ehird> * Clang replacing GCC in the base system
15:47:44 <ehird> http://lists.freebsd.org/pipermail/freebsd-stable/2009-May/049873.html
15:47:49 <ehird> god, freebsd is looking hot
15:49:47 <upyr[emacs]> ^bf ++++++[>++++++++++<-]>++.<+++[>----------<-]>.[++++++++++>,----------]<[<]>[>.]!test
15:52:12 <GregorR> * Clang replacing GCC in the base system // so everything is going to be compiled via LLVM? Interesting.
15:52:20 <ehird> GregorR: not everything
15:52:22 <ehird> just the base system
15:52:26 <ehird> user applications will still be gcc'd
15:52:29 <ehird> and I'm not sure about that
15:52:31 <GregorR> Is the kernel part of the base system? :P
15:52:38 <ehird> but base applications
15:52:49 <GregorR> In my experience, compiling a kernel to a virtual machine is probably a fairly pointless task :P
15:52:56 <ehird> GregorR: LLVM fail.
15:52:59 <ehird> It isn't a virtual machine, really.
15:53:05 <tombom> why is it betrter thasn ghcc
15:53:08 <ehird> tombom: a c compiler
15:53:19 <ehird> and because it's faster, cleaner and bsd-licensed
15:53:22 <ehird> and because it builds on top of LLVM
15:53:33 <ehird> which is an intermediate "virtual machine" (notrly) that compiles to native code
15:53:42 <ehird> (it can also do JITting, so you can turn your compiler into a REPL etc)
15:53:46 <tombom> but doesn't gcc have better optimisations and stuff though
15:53:49 <ehird> that wouldn't work for the kernel ofc :p
15:53:57 <ehird> tombom: llvm's been developed by 2000 and is funded by Apple
15:54:01 <ehird> it does advanced optimizations
15:54:08 <tombom> i hadn't realised it had been around so long
15:54:08 <ehird> although they're not totally production-ready yet
15:54:15 <ehird> e.g. clang's c++ support isn't really ready
15:54:35 <ehird> yeah, it will be cool
15:54:52 <ehird> well, apple does more than fund, really; it's practically Apple's project
15:55:02 <ehird> due to a lot of Apple-employed developers
15:55:05 <ehird> it's still technically independent though
15:55:08 -!- FireFly has joined.
15:55:21 <ehird> hmm apparently apple started the clang projec
15:55:33 <ehird> that'd explain the objective-c support
15:56:03 <ehird> tombom: there's also gcc-llvm
15:56:10 <ehird> which is gcc's frontend + llvm's backend; that should be pretty much rock solid
15:56:18 <ehird> although you get a lot of the disadvantages of gcc
15:56:37 <tombom> what are the disadvantages of gcc actually
15:57:21 <ehird> (1) gcc's code sucks (2) so does its architecture (3) it's not all that fast optimizations-wise (4) GPL (5) apparently the team can be hard to work with; don't quote me on this
15:57:38 <ehird> (6) tries to compile every language on the planet; this leads to mediocrity
15:58:01 <ehird> tombom: apparently clang's error messages are miles better too
15:58:02 <tombom> heh, that's reasonable
15:58:10 <ehird> http://clang.llvm.org/diagnostics.html
15:58:25 <ehird> looks nice, I didn't realise it was THAT good
15:59:08 <ehird> $ clang -fsyntax-only t.cpp
15:59:08 <ehird> t.cpp:12:7: error: incompatible type assigning 'vector<Real>', expected 'std::string' (aka 'class std::basic_string<char>')
15:59:21 <ehird> i thought there was some technical reason for awful c++/stl template errors
15:59:33 <ehird> i will now kill the g++ developers
16:01:26 <ehird> GregorR: The LLVM developers are very helpful fixing most of the bugs we've reported (over 100). Unfortunately we are currently blocked on some bug reports that prevent us from building libc, libm, libcrypto and various CDDL libraries with Clang but the FreeBSD kernel itself compiles and boots.
16:01:30 <ehird> so the kernel is built with it.
16:02:09 <GregorR> Doesn't it need to have a little bit of inline asm?
16:02:18 <ehird> GregorR: Maybe it does?
16:02:23 <ehird> Nothin' wrong with that.
16:02:27 <ehird> GregorR: Protip: LLVM is not a "virtual machine"
16:02:30 <ehird> It's not a VM as such
16:02:34 <ehird> It's just a generic architechture
16:02:42 <ehird> It still has plenty of machine-code like things
16:02:44 <ehird> It's close to the machine
16:02:51 <GregorR> Right ... a generic architecture with its own assembly code variant ...
16:02:56 <ehird> GregorR: Also, you can always compile the .s's separately
16:02:56 <GregorR> So i386 assembly code is presumably no go ....
16:02:59 <ehird> and call into them from .c
16:03:01 <ehird> and who said that?
16:03:09 <ehird> it'll just only work on x86
16:03:49 <ehird> http://wiki.freebsd.org/BuildingFreeBSDWithClang ← Yep, it does inline asm just fine
16:05:31 <ehird> GregorR: http://www.llvm.org/docs/LangRef.html#inlineasm
16:06:01 <ehird> that's referring to llvm asm
16:06:46 <GregorR> I was gonna say, seeing as that bswap is a link to one of their pages :P
16:07:29 <asiekierka> yay, the "print" procedure of Codename CELF is done
16:09:10 <Slereah> There should be a language based on n-tuples of niggers.
16:09:48 * ehird hands Slereah the "Can't Think Of Anything To Say" medal
16:10:41 <ehird> "Clever presentation, but a weak database: The soon-to-be-launched Wolfram Alpha search engine is already being touted as the "Google killer." SPIEGEL ONLINE has tested a preliminary version. The conclusion: It knows a lot about aspirin, a little about culture -- and it thinks German Chancellor Angela Merkel's political party is an airport. "
16:10:45 <asiekierka> ehird: Codename CELF? It's my C64 pseudo-shell/OS
16:10:48 <ehird> http://www.spiegel.de/international/zeitgeist/0,1518,624065,00.html
16:10:57 <ehird> asiekierka: in asm I assume?
16:11:29 <asiekierka> if I did it in C it would probably be up to loading a few drivers :DDD
16:11:31 <ehird> Try and avoid spaghetti :-P
16:11:50 <asiekierka> to the ones that aren't quick to understand
16:11:52 <ehird> asiekierka: Meh, just make sure you don't splutter over memory and registers :P
16:12:01 <ehird> asiekierka: How are you gonna handle memory allocation?
16:12:13 <ehird> You only have 64K, so that will be challenging
16:12:23 <ehird> asiekierka: The list will take up a good amount of memory, though
16:12:34 <ehird> Maybe a slab allocator, asiekierka?
16:12:34 <asiekierka> I plan to make it as small as possible
16:12:45 <ehird> http://en.wikipedia.org/wiki/Slab_allocator
16:12:49 <ehird> it should conserve memory
16:12:55 <ehird> and also the list size
16:13:26 <asiekierka> Well, I will allocate the space of... $2000-$9000 to programs
16:13:32 <ehird> That's not much at all.
16:13:43 <ehird> I'd give almost all the memory to programs, and golf the kernel's data space.
16:13:52 <ehird> I bet you could give the programs 50K
16:14:01 <asiekierka> the kernel already has space from $0800-$2000
16:14:24 <ehird> asiekierka: Challenge: give the programs 56K or more.
16:14:44 <asiekierka> and raw accessing of stuff via drivers will probably take more
16:14:44 <ehird> And the rest is for programs.
16:14:55 <ehird> asiekierka: It gets 8K.
16:15:05 <GregorR> the clang driver uses gcc for assembling and linking, we need to write FreeBSD ccc "hostinfo" so it can use as(1) and ld(1) directly (in progress).
16:15:07 <pikhq> asiekierka, you should totally do this on x86.
16:15:19 <asiekierka> i'm already turning off the BASIC rom full of crap
16:15:27 <ehird> asiekierka: hmm, okay, the kernel takes 8k
16:15:30 <pikhq> GregorR, why can't it just always use as and ld?
16:15:37 <ehird> then the kernel/drivers take 8K
16:15:38 <asiekierka> then there's a bunch of space for memory-mapped registery
16:15:41 <ehird> that should be more than enough
16:15:42 <pikhq> I'm pretty sure that all GCC does is... Call as and ld. ;)
16:15:46 <ehird> and gives the programs about 48K
16:15:47 <GregorR> pikhq: All as-es and ld's have different syntaxes.
16:15:54 <GregorR> pikhq: Whereas GCC has the same syntax on every platform.
16:15:55 <ehird> asiekierka: a bit less than 48K should be doable
16:16:05 <GregorR> ........... you didn't know that? :P
16:16:19 <pikhq> I figured they'd at least standardise on command-line syntax.
16:16:22 <asiekierka> $0000-0800 is used by the screen/kernel
16:16:24 <GregorR> Hell, all ccs have different syntaxes, you're lucky to get "-c" and "-o" to mean the same thing.
16:16:31 <ehird> it's binary format specifci a lot of the time
16:16:35 <pikhq> I don't go outside of GNU-land much.
16:16:47 <ehird> asiekierka: how much does that get you?
16:16:56 <ehird> BSD kernel and userland!
16:17:10 <pikhq> ehird, that's aboust as far out of GNU-land as anyone sane goes.
16:17:12 <ehird> asiekierka: yep, should do
16:17:14 <GregorR> ehird: I will now mark all sarcastic lines with the tag [SARCASM] to remain clear [SARCASM]
16:17:23 <pikhq> Because BSD userland, though a tiny bit different, is at least *sane*.
16:17:24 <asiekierka> remember I also plan to have a "vector map", so drivers can make their own ways of doing stuff
16:17:27 <ehird> pikhq: it predates gnu-land, so it's pretty away.
16:17:38 <ehird> asiekierka: if your kernel turns out to use less in practice - say 8K - the programs can get more too
16:17:43 <GregorR> It predates GNU-land, so it's pretty primitive >_>
16:17:48 <GregorR> Better than Solaris though.
16:17:49 <asiekierka> but i also allocate this space for the maps
16:17:52 <ehird> it's not primitive
16:17:53 <ehird> it's just minimalist
16:18:09 <pikhq> GregorR: BSD userland has the advantage of implementing that primitive stuff well.
16:18:13 <GregorR> If there's one thing the GNU userland is not, it's minimalistic.
16:18:17 <asiekierka> it has all the vars and maps and stuff
16:18:18 <pikhq> Making it better than every other authentic UNIX.
16:18:23 <asiekierka> then comes the kernel (after .align $10)
16:18:27 <ehird> asiekierka: why do you have a notion of variables in asm?
16:18:42 <pikhq> ehird: Asm itself does.
16:18:45 <GregorR> pikhq: Solaris is solid as a rock. The rock it will proceed to beat you over the head with if you're stupid enough to use it.
16:18:50 <asiekierka> so I don't have spaghetti running all over
16:18:53 <ehird> solaris makes me want to vomit
16:19:02 <ehird> asiekierka: i take back what i said about you not being able to code
16:19:11 <pikhq> GregorR: Solaris does have one saving grace.
16:19:12 <asiekierka> ehird: I can send you the ASM code if you still don't believe i can code
16:19:20 <pikhq> Its userland is sufficient for installing a GNU one.
16:19:25 <GregorR> I'm surprised they haven't just replaced the userland with GNU in interactive shells :P
16:19:30 <pikhq> And you can install it with just a GNU userland these days. ;)
16:19:44 <pikhq> OpenSolaris distros.
16:19:45 <GregorR> Oh, are you referring to Nexenta?
16:20:13 <GregorR> Ever since Linux got the CFS, Solaris has no appreciable advantage.
16:20:18 <ehird> asiekierka: i don't understand a thing about the code but it looks good
16:20:25 <ehird> GregorR: One word. Zfs.
16:20:27 <pikhq> http://www.dailycupoftech.com/2009/05/04/the-geek-must-do-before-you-die-checklist/ This is a... Lame list.
16:20:38 <GregorR> God people go humpfest over ZFS.
16:20:41 <ehird> add a third monitor?
16:20:53 <ehird> anyone with >1 monitor is stupid ← generalization
16:20:57 <pikhq> ehird: That was the first thing ported to Linux.
16:21:08 <ehird> Build a Linux Firewall? WHY.
16:21:10 <pikhq> ehird: I've got two monitors.
16:21:19 <GregorR> pikhq: Wow, that is a lame list.
16:21:20 <ehird> I have a perfectly good firewall! It even runs Linux.
16:21:22 <pikhq> The second one is attached to my firewall/outer.
16:21:30 <GregorR> "Carry a Computer Cleaning Arsenal on Your USB Drive" // only if you use lame-OS
16:21:45 <ehird> Build an HTML based Website using Notepad
16:22:00 <ehird> "Bypass a Computer Password on All Major Operating Systems"
16:22:03 <ehird> good luck doing that on a bsd
16:22:14 <pikhq> I did that... For my Geoshitties site before they got bought out by Yahoo!.
16:22:19 <ehird> "Convert Cassette Tapes to Digital Audio Files"
16:22:28 <ehird> "Crack a Wi-Fi Password" ← WPA2 Personal, bitch.
16:22:29 <pikhq> ehird: Yeah, seriously. *Really* good luck doing that on OpenBSD.
16:22:34 <tombom> [16:21:45] (ehird): Build an HTML based Website using Notepad
16:22:43 <pikhq> "Compile a Linux kernel".
16:22:44 <ehird> "Create a Disposable E-Mail Account"
16:22:46 <ehird> If you die without doing this
16:22:48 <ehird> YOU HAVE FAILED LIFE
16:22:51 <pikhq> And had been using Slackware for 2 weeks.
16:23:11 <asiekierka> the thing that I sent is nowhere near an OS
16:23:12 <pikhq> "Execute a shell script."
16:23:16 <ehird> asiekierka: i guessed
16:23:18 -!- MigoMipo has joined.
16:23:18 <ehird> "Create a WordPress Plugin"
16:23:24 <ehird> What a crock of shit.
16:23:32 <pikhq> I did that a tiny bit *before* I had installed Linux for the first time.
16:23:35 <ehird> "Create Music with Keyboard"
16:23:40 <pikhq> (guess what Slackware's installer is)
16:23:49 <ehird> "Download a Video from YouTube"
16:23:52 <ehird> and it links to an automated shitsite to do that
16:23:56 <tombom> "Create Music with Keyboard"
16:23:58 <ehird> FILL OUT THIS FORM AND YOUR LIFE WILL BE COMPLETE
16:24:00 <tombom> i guessed this was a joke
16:24:01 <ehird> tombom: beat you to it
16:24:11 <ehird> "Download Wikipedia"
16:24:16 <ehird> ...Including images.
16:24:25 <pikhq> "Learn the fastest way to kill a computer."
16:24:32 * pikhq brings out the Etherkiller.
16:24:43 <GregorR> pikhq: Open this list, making you so pissed off you literally beat the shit out of it.
16:25:05 <GregorR> (Computers totally have shit)
16:25:08 <tombom> 39.Know Who Mulder and Scully Arehttp://en.wikipedia.org/wiki/Mulder_and_Scully_(song)
16:25:13 <ehird> "Find a Website IP Address Without Web/CommandPrompt Access"
16:25:24 <ehird> this is the hilariestest thing ever
16:25:35 <ehird> Irrecoverably Protect Datahttp://www.truecrypt.org/
16:26:22 <ehird> Make Your Office Ergonomic
16:26:26 <ehird> Permanently Delete Data on a Hard Drive
16:26:33 <ehird> Permanently Delete Your Facebook Account
16:26:35 <ehird> now THAT i agree with
16:26:35 <ehird> Permanently Delete Your Facebook Account
16:26:36 <ehird> Permanently Delete Your Facebook Account
16:26:38 <ehird> Permanently Delete Your Facebook Account
16:26:49 <tombom> i was just going to mention that
16:26:56 <ehird> "Read 1337 At Normal Speed"
16:27:10 <ehird> "Recover Deleted Files" i like how this comes after telling you to remove them irreversably
16:27:31 <tombom> 50% of them are really pathetic and the other 50% are things nobody should care about
16:27:52 <tombom> "Upload a Video to YouTube"
16:28:08 <ehird> "Run Multiple Computers with one Keyboard and Mouse"
16:28:19 <GregorR> Apparently I can't be a Geek 2.0 because I can't wear a leather wristband (wtf)
16:28:24 <ehird> "Setup a Computer in the Cloud"
16:28:25 <tombom> 99.Use Bittorrent Effectivelyhttp://infinitium.blogspot.com/2005/03/js-essential-howto-guide-bittorrent.html
16:28:27 <ehird> THE CLOUD OF CLOUDNESS
16:28:33 <ehird> BECAUSE IT IS THE INTERNET
16:29:10 <ehird> "Survive in a Linux Argument"
16:29:15 <ehird> Most people die when arguing about Linux.
16:29:24 <ehird> lol, it links to the old shitfest linux.com
16:29:58 <tombom> i like how it's all computer related stuff and then blam
16:30:01 <tombom> "Learn How to Hot Wire a Car"
16:30:16 <GregorR> tombom: Nowadays, that's computer related stuff ;)
16:30:58 <ehird> "Understand What “There’s no Place Like 127.0.0.1″ Means"
16:31:06 <ehird> "Unbrick a Smartphone"
16:31:09 <ehird> IF SOMETHING'S BRICKED IT CAN'T BE FIXED
16:31:14 <ehird> "Use a Camera in Manual Mode"
16:31:34 <ehird> http://www.dailycupoftech.com/wp-content/uploads/2009/05/geek2.gif
16:31:43 <ehird> Geek 1.0: Person who doesn't care about societal norms
16:31:47 <ehird> Geek 2.0: Douchebaggius maximus
16:32:13 <GregorR> And I can't accomplish that because I can't wear the leather wristband!
16:32:19 <GregorR> And besides that, I wear my phone on my wrist.
16:32:40 <tombom> well apart from the fact it makes you look like a pillock
16:33:22 <GregorR> So pillock + welts all over my arm = an interesting look :P
16:33:50 <pikhq> ... "Use a camera in manual mode"...
16:34:02 <pikhq> I didn't know using an SLR was hard.
16:34:16 <GregorR> pikhq: BOW DOWN BEFORE TECHNOLOGY :P
16:34:27 * pikhq beats GregorR with his SLR
16:34:42 * pikhq then hits the darkroom to see what interesting shots were made from the above process
16:35:07 <GregorR> You have an ANALOG camera? D-8
16:35:43 <pikhq> I also possess a digital SLR.
16:36:11 <GregorR> <pikhq> I also possess a digital SLURPY.
16:36:18 <GregorR> (And with that, I disapperate)
16:37:50 <pikhq> And the image below the list...
16:38:31 <pikhq> Y'know, D&D is still a somewhat common geek pastime...
16:39:00 <AnMaster> running the optimiser passes recursively until nothing changes might not have been the best possible idea...
16:39:39 <AnMaster> I think it ran all the passes around 50 times or so for lostkingBF
16:40:09 <pikhq> And what sort of improvement did you make for Lost Kingdom?
16:40:12 <AnMaster> without the shifting pass it just makes 5 passes
16:40:32 <AnMaster> pikhq, esotope-bfc is the best compiler currently. Mine is doing basic stuff
16:40:53 <pikhq> I thought that you were producing optimised Brainfuck, BTW. ;)
16:41:13 <AnMaster> in this case the pass was changing "add > add" into "add add:offset=1 >"
16:42:08 <AnMaster> to allow more combining for stuff like ++>-<+, with the offset thing you would get add:2 add:-1:offset:1 add:1
16:42:27 <AnMaster> but then it also sorts it so the combiner pass can combine the first and the last add
16:42:50 <AnMaster> pikhq, and I am. Just not aiming for the level that esotope-bfc is on
16:43:22 <pikhq> There's a limited amount of stuff that you can optimise in Brainfuck when you're outputting Brainfuck.
16:43:23 <AnMaster> since it can optimise that hello world program on the wiki into a single PUTS("Hello, World!");
16:43:39 <pikhq> So I assume the fanciest thing you can do is dead-code elimination.
16:43:54 <pikhq> "Producing optimised Brainfuck"
16:44:03 <AnMaster> but you could write a BF one too
16:44:09 <pikhq> Oh, so you're setting it up so you can *have* a Brainfuck backend.
16:44:32 <AnMaster> pikhq, in fact I'm setting it up so I can have a Erlang backend, a Scheme backend, a C backend and possibly a BF backend.
16:44:49 <AnMaster> and I'm doing semi-plugin-like optimiser
16:44:58 <AnMaster> each pass is in a separate module
16:45:29 <AnMaster> the main optimiser routine has a list of optimiser modules (could be changed to enumerate them on the file system I guess), and calls them
16:45:53 * pikhq checks out esotope-bfc
16:45:54 <AnMaster> and after calling all once it checks if the parse tree is the same or not, if not it runs them all again
16:46:28 <AnMaster> pikhq, http://rafb.net/p/ZilcqJ72.html
16:47:02 <AnMaster> ib_opt_cleanup is rather silly. It handles the "add 0" sometimes produced by the combiner
16:47:11 <AnMaster> like +- will result in "add 0" :D
16:47:28 <AnMaster> probably no real BF code contains that.
16:48:20 <AnMaster> "real" meaning "not a test suite for an optimiser, and not written by an idiot, and not auto generated by !bf_txtgen".
16:48:32 <pikhq> Some generated BF code contains it...
16:48:35 <EgoBot> 49 ++++++++++[>++++++++++>+>><<<<-]>++.+++++++++..>. [239]
16:48:52 <pikhq> PEBBLE generated code could generate it, except that I have an optimising pass.
16:48:54 <AnMaster> though in that case the other <<< would swallow that move 0
16:48:59 <pikhq> Which eliminates dead code. :)
16:50:03 <AnMaster> hm, might be interesting to add a BF backend in fact. See how much better it makes LostKingBF
16:50:15 <AnMaster> however it would be kind of a pain
16:50:34 <AnMaster> since the initial "add" at start of the program will get turned into "set" in my next pass
16:51:17 <AnMaster> then that backend needs to change [-]+ into "+" for example at start of program
16:51:44 <AnMaster> I'm not sure what is the best way to handle "assume 0 at start of program"
16:52:07 <AnMaster> I mean, I need to keep track of somehow of balanced loops near the start and so on
16:52:14 <AnMaster> tracking values of cells as far as possible
16:53:09 <AnMaster> maybe I should have a loop analyser pass that somehow marks loops as balanced...
17:00:12 <pikhq> Well, seems that esotope-bfc doesn't fully handle string optimisation right...
17:00:19 <pikhq> There's a lot of PUTCs in LostKng.
17:01:52 <pikhq> *Oh*. Because when it gets to the things it PUTCs, it isn't sure of the value of the cell.
17:02:59 <AnMaster> pikhq, It isn't always possible to figure that out
17:06:15 <Asztal> you should compile that into a symlink to cat
17:06:47 -!- ais523 has joined.
17:06:52 <GregorR> Except that cat will happily cat things that contain nulls.
17:07:11 <ais523> if you're a feline, anyway
17:10:00 <AnMaster> Asztal, doing that would be insane AND incorrect as GregorR showed.
17:10:50 * AnMaster tries rearranging the passes to see if it helps to have the set pass first
17:12:06 <AnMaster> I guess it was due to less loops to descend in.
17:12:55 <ehird> Public service announcement: asiekierka can in fact code.
17:13:32 <ehird> AnMaster: I'm talking with him about a (non-cooperative) multitasking OS for the c64.
17:13:42 <ehird> And he's written a bit of c64 asm for it.
17:14:16 <asiekierka> AnMaster: divmod, putc, puts, gotoxy, and a simple "main" routine
17:14:16 <ehird> AnMaster: It has enough to print "hello world" to the screen; which is a lot considering the fussy C64 graphics memory.
17:14:29 <AnMaster> asiekierka, what about the multi-tasking bit?
17:14:29 <ehird> And he's figured out how to do multitasking.
17:14:37 <ehird> AnMaster: he hasn't written it yet
17:14:43 <ehird> we're still discussing how best to copy the stack etc
17:14:44 <asiekierka> AnMaster: I can't even run a SINGLE PROCESS
17:14:56 <AnMaster> asiekierka, that was what I expected!
17:15:30 <asiekierka> Also, I sometimes utilize a little bit of self-modifying code
17:15:32 <ehird> AnMaster: you're being a jerk
17:15:47 <ehird> you just started writing an OS and it can't run multiple processes on a 1mhz computer with 64k of ram and no multitasking support?
17:15:47 <pikhq> gcc -OS optimised LostKng is 624K...
17:15:49 <ehird> HA! you can't code!
17:16:24 * pikhq observes that multitasking is hard
17:16:34 <asiekierka> I started writing that OS and it has enough to input some text
17:16:52 <ehird> bsmntbombgirl: how goes your compy shippy
17:17:06 <ehird> 17:16 AnMaster: he knows how to program a bit yes. He just doesn't know HOW he should program to solve a specific issue. I remember him saying he couldn't implement DOBELA himself due to having no idea how to do a sparse array.
17:17:16 * ehird has full disclosure policy on /msgs :}
17:17:43 <ehird> asiekierka: i think ignoring AnMaster until he writes a multitasking OS for the c64 is a good policy
17:17:49 <ehird> 17:17 AnMaster: he is kind of like I was back when I coded in Pascal. I could code, but I didn't know how to code non-trivial stuff.
17:17:54 <ehird> 17:17 GregorR: HA HA EHIRD IS A RETARD (full disclosure policy?)
17:18:10 <asiekierka> also, a newline would need to be a weird char
17:18:14 <tombom> i have that problem, how do i learn ebtter
17:18:22 <ehird> asiekierka: doesn't the c64 have graphical chars?
17:18:28 <pikhq> In other words, asiekierka should code more.
17:18:33 <ehird> asiekierka: what's char 0?
17:18:36 <pikhq> And possibly work on a CS degree.
17:18:46 <GregorR> What a weird place to put @#
17:18:48 <ehird> asiekierka: what's char 255
17:18:56 <AnMaster> anyway it isn't strange, you first learn how to write code. Then you learn HOW to program.
17:19:06 <asiekierka> chars 128-255 are reversed images of chars 0-127
17:19:08 <ehird> AnMaster: get off your high horse :)
17:19:17 <ehird> asiekierka: what you're saying is, there's no space in a byte for a newline
17:19:29 <ehird> asiekierka: have newline be a separate procedure
17:19:33 <ehird> Puts("Hello, world!"); Newline
17:19:43 <AnMaster> ehird, just speaking out of own experience. For example would you say SICP is about how to write code, or how to program?
17:19:50 <AnMaster> I'd say it is about the latter.
17:19:53 <ehird> AnMaster: asiekierka can program
17:20:05 <AnMaster> ehird, yes. Better now than before.
17:20:27 <asiekierka> it's pha, lda #$00, sta text_x, inc text_y, pla, rts
17:20:44 * pikhq observes that he needs more RAM...
17:20:52 <ehird> pikhq: asiekierka's working with 64k
17:20:55 <pikhq> When you start getting swap-bound compilation, you need more RAM.
17:20:58 * AnMaster wonders how large the generated BF for LostKing would be with NO optimisation.
17:20:58 <ais523> asiekierka: that reminds me of 6502 asm
17:21:03 <ehird> ais523: that's cuz it is
17:21:10 <ehird> ais523: he's writing a multitasking OS for the C64
17:21:24 <GregorR> Isn't there already ... lunix or something.
17:21:37 <pikhq> GregorR: And Contiki.
17:21:47 <AnMaster> pikhq, sure. But even with just combining ++ -- >>> and so on it is much less than the original program source.
17:21:50 <pikhq> Which has a per-process overhead measured in bytes.
17:21:57 <ehird> Still, I'm not sure anyone's done multitasking the way we have
17:22:10 <pikhq> ehird: That way being?
17:22:23 <GregorR> "Preemptive multitasking (up to 32 tasks, 7 priorities)" Do you need 7 priorities with a max of 32 tasks? :P
17:22:27 <ehird> pikhq: Set up a timer on a clock for 0.small seconds.
17:22:38 <ehird> pikhq: Then, when it sets off, find the process that's been ran the last
17:22:45 <ehird> the process that's had the longest time without executing
17:22:50 <ehird> to suspend a process, we do the pretty normal thing
17:22:53 <ehird> copy registers, copy stack
17:22:58 <ehird> and the obvious thing to resume
17:23:01 <AnMaster> the shift pass reduces it from 1.3 MB to 958K btw
17:23:03 <ehird> but I'm not sure the others use a timer
17:23:08 <pikhq> That's a rather normal multitasking method.
17:23:55 <pikhq> I don't think it's done often on a C64.
17:24:07 <pikhq> C64's timer does interrupts?
17:24:14 <ehird> not as much fun to read other OS's source
17:24:30 <pikhq> asiekierka: Contiki preempts whenever a process makes a blocking call.
17:24:33 <ehird> just don't copy any code; license issues.
17:24:38 <ehird> pikhq: see, that's lame
17:24:50 <pikhq> It's meant to run on microcontrollers.
17:24:52 <ehird> ours can multitask when it's doing scientific computation or whatever ;-)
17:25:06 <ehird> asiekierka: it's lame to copy other OS's code anyway :P
17:25:16 <ehird> long-term goal is multiple graphical apps running at once, although that'll be sloow
17:25:39 <pikhq> BTW, LostKng with gcc -O2 -m32 is 564K.
17:25:47 <pikhq> That's a 60 kilobyte savings.
17:26:26 <AnMaster> I haven't dared compiling the generated lostkingdom!
17:26:45 <pikhq> It uses up quite a bit of RAM.
17:26:50 <AnMaster> tombom, then the output file is called 3
17:26:54 <pikhq> tombom: I don't have the RAM for that.
17:26:58 <asiekierka> http://hld.c64.org/poldi/lunix/lunshots.html
17:27:05 <ehird> on lostkng.b esotoped
17:27:09 <AnMaster> um. That wasn't what he said though
17:27:47 -!- BeholdMyGlory has joined.
17:28:46 <pikhq> Nice thing about this compiled LostKng...
17:28:51 <pikhq> strings does something!
17:29:02 <AnMaster> <asiekierka> http://hld.c64.org/poldi/lunix/lunshots.html <-- "comments"?
17:29:20 <ehird> AnMaster: french guy, I think
17:29:25 <asiekierka> But I think i'm not exactly the person that should do an OS
17:29:31 <ehird> asiekierka: are you giving up on celf?
17:29:39 <AnMaster> ehird, like "do you want help"?
17:29:48 <ehird> asiekierka: no shit sherlock :-P
17:29:51 <ehird> i may learn c64 asm.
17:30:27 <AnMaster> pikhq, what is the size of the source for that lostking.
17:32:00 <pikhq> Yeah, it's smaller than LostKng.b
17:32:26 <pikhq> GregorR: Will install it.
17:35:20 <pikhq> ... Gentoo installs a binary package for upx.
17:35:37 <GregorR> Hm, UPX can pack but not unpack an already-compressed version of that linux kernel. That makes "sense"
17:35:46 * AnMaster ponders parallel code generator
17:36:08 <AnMaster> basically threads handling sub-trees + mapreduce
17:36:16 <GregorR> UPX uses the NRV compression library for compression services. A compatible but somewhat less efficient OpenSource implementation is available through the UCL compression library.
17:36:31 <GregorR> It must be supplying the proprietary (read: lame) NRV version instead of the UCL version.
17:37:05 <pikhq> And, yeah, what UPX does to compress the Linux kernel is kinda interesting...
17:37:21 <pikhq> You see, the Linux kernel includes a decompression routine that a bootloader jumps to.
17:37:39 <pikhq> UPX decompresses the compressed bits, compresses them again, and inserts its own compression stub.
17:41:21 <ehird> pikhq: is that slow?
17:41:30 <pikhq> Actually, lemme try upx --lzma --ultra-brute
17:41:38 <ehird> so why isn't it standard
17:42:02 <pikhq> Because it has some disadvantages, like not sharing common segments in memory.
17:43:47 <pikhq> 44K if I use --lzma --ultra-brute.
17:44:03 <pikhq> And decompression time is not noticable.
17:45:40 * pikhq statically links it just for the hell of it; let's see how feasible it is to get LostKingdom on a floppy
17:45:56 <GregorR> UPX supports "TMT/Adam" as a binary format. So I looked it up and the UPX page says it's a Pascal compiler, and links to tmt.com for information. "TMT offers products for the taphole area at blast furnaces or reduction furnaces. Through the application of TMT measuring technology the blast furnace process can be optimized."
17:46:19 <GregorR> Those blast furnaces are powered by Pascal.
17:47:19 <pikhq> ehird: With any luck, I should be able to run LostKingdom from a 5 1/4" floppy.
17:47:31 <pikhq> (assuming the kernel itself is somewhat UPX-able. ;))
17:47:42 <pikhq> GregorR: No, that would take a bit more work.
17:47:56 <pikhq> Like compiling this to a C64 binary.
17:48:03 <pikhq> ... And having more than 64K RAM.
17:48:15 <pikhq> You see, UPX decompresses the whole thing to memory.
17:48:19 <asiekierka> pikhq: Does Lost Kingdom really use more than 30000 cells
17:48:40 <pikhq> The binary itself is more than 64K, though. ;)
17:48:48 <ehird> pikhq: just load the binary incrementally
17:48:52 <ehird> load one block, add code to load the next at the end
17:48:59 <pikhq> That involves more work.
17:49:29 <pikhq> I didn't say it was impossible; the C64 is a perfectly capable system, after all.
17:49:51 <pikhq> The binary would probably benefit from 16-bit pointers, though.
17:52:19 * pikhq wishes GCC would learn about this wonderful, wonderful function called "free()".
17:55:03 <ehird> pikhq: they use a gc
17:56:28 <pikhq> ehird: And Boehm hates "free()".
17:56:44 <pikhq> Okay, statically linked, I've got LostKng at 232K.
17:56:52 <pikhq> glibc is freaking huge.
17:57:19 -!- oklodok has joined.
17:57:51 <pikhq> If I had it available, I would.
17:58:46 <ehird> don't you have a package management system pikhq
18:02:30 <pikhq> Yes, but uclibc is not some easily-installed package.
18:03:04 <pikhq> You need to install an entire build chain for it...
18:03:15 <pikhq> Basically, you install a freaking cross-compiler.
18:03:23 <ehird> Just use your current toolchain
18:03:32 <pikhq> But that doesn't work.
18:03:41 <ehird> use a different libc?
18:03:58 <ehird> pikhq: http://www.fefe.de/dietlibc/
18:04:01 <pikhq> My current toolchain produces pc-linux-gnu binaries.
18:04:16 <pikhq> To use uclibc, I would need to produce a pc-linux-uclibc toolchain.
18:04:38 <pikhq> Which cheats instead of making a pc-linux-dietlibc toolchain.
18:04:48 <pikhq> Said cheats are crufty and unreliable. ;)
18:04:59 <ehird> pikhq: yer just compiling lostkng!
18:05:48 <ehird> the dietlibc author is a kook, interestingly
18:06:06 <ehird> he worships djb (I suspect some homosexual undertones) and wrote this laughfest: http://www.fefe.de/nowindows/
18:06:13 <ehird> maybe I'll port all of his software to windows out of spite :)
18:10:55 <pikhq> Y'know, that's really, really dumb when you consider that there is ReactOS.
18:11:13 <pikhq> A free Windows implementation. ;)
18:11:39 <pikhq> Also, porting dietlibc to Solaris wouldn't help a nonfree software company any more.
18:12:00 <pikhq> Last I checked, Stallman recommended Solaris as an OS that only ships with free software. :p
18:15:53 <ehird> ahh, c64 asm is nice and simple
18:15:57 <ehird> three registers, A X Y
18:15:58 <fizzie> There's also "buildroot"; it quasi-automagically gets and builds a full uclibc cross-toolchain. (Well, when it works.)
18:16:11 -!- oklodok has quit (Read error: 113 (No route to host)).
18:17:16 <pikhq> I think I'll stick with crossdev.
18:17:25 <pikhq> It's Gentoo's automagic cross-compiler-maker. ;)
18:18:52 <ehird> C64 called xor EOR
18:20:10 <pikhq> crossdev -t x86_64-pc-linux-uclibc.
18:24:23 <AnMaster> Lost Kingdom is now down to 885K generated C code, from 956K in previous revision
18:25:11 <AnMaster> yay crossdev, it makes crosscompiling easy. Without crossdev it tends to be a major PITA.
18:27:14 * pikhq waits for his currently-running build to finish before running crossdev
18:33:37 <AnMaster> is [+>-<] always same as [->+<]
18:34:07 <AnMaster> even if the non-index cell is set to a non-zero value. Right
18:34:41 <AnMaster> ehird, so then that can turn into p[1]+=p[0]; p[0]=0;
18:35:02 <AnMaster> wouldn't it be -= for one and += for the other?
18:36:20 <ehird> and it conditions on p[0], so
18:36:44 <AnMaster> but what about the other one: [+>-<]
18:37:47 <ehird> sorry, i'm confused atm
18:38:47 <fizzie> For [+>-<] you do p[1] -= (N-p[0]), which (modulo N) is probably p[1] += p[0] too.
18:38:58 <fizzie> Assuming wrapping cells, of course.
18:39:18 <ehird> p[1]+=p[0];p[0]=0;
18:40:11 <AnMaster> fizzie, so they are the same with wrapping cells? right
18:40:12 <ehird> haha, this c64 emulator blurs the display to emulate a crt
18:41:03 <fizzie> Console emulators tend to have all kinds of "darken every second line to simulate TV scanlines" display options, too.
18:41:19 <fizzie> Is it vice or something else?
18:41:28 <ehird> with PAL emulation turned on
18:41:58 <ehird> i didn't talk to you
18:42:08 <ehird> for anyone who hasn't seen it, http://xs539.xs.to/xs539/09202/picture_1751.png
18:42:10 <AnMaster> the PAL emulation isn't convincing IMO
18:42:48 <AnMaster> ehird, depends on how high res the TFT is
18:43:38 <ehird> ah, SIDs are wonderful
18:43:42 <AnMaster> <fizzie> For [+>-<] you do p[1] -= (N-p[0]), which (modulo N) is probably p[1] += p[0] too. <-- "probably"?
18:43:58 <fizzie> Well, I don't like doing unqualified statements.
18:44:13 <fizzie> If it sounds plausible to you, you can remove the "probably" part.
18:44:47 <AnMaster> I guess I need to prove it. Sigh
18:45:19 <AnMaster> actually, it is simpler to just brute force it for the unsigned char case :)
18:45:31 <fizzie> Uh, well.. a - (N-b) = a + b - N = a + b (mod N); there you go.
18:46:03 <ehird> proving it takes about 5 seconds in wetware
18:46:08 <ehird> vs 10-15 seconds to write bruteforcer
18:46:09 <AnMaster> hah. I finished writing the short iterate for brute force half a second before that line :P
18:46:29 <ehird> brute forcing: the tool for brutes' minds.
18:51:46 -!- asiekierka has changed nick to asie[brb].
19:03:39 <AnMaster> pikhq, I'm at 218 passes for LostKing now
19:03:49 <AnMaster> I think I need to make my shift pass do more at once.
19:05:55 <AnMaster> it would be faster if it moved more in both directions, swapping as it went, rather than moving a bit then doing a new scan over it
19:06:20 <ehird> bsmntbombgirl: \o/
19:09:13 <ehird> decided what os yet?
19:09:51 <GregorR> If it's non-boring you're looking for, go ReactOS or BeOS or OS/2 :P
19:10:07 <ehird> bsmntbombgirl: linux is boring but uh... also practical
19:11:03 <GregorR> <ehird> ah, SIDS is wonderful
19:12:11 <GregorR> OK, so I'm slightly misquoting you :P
19:21:15 <bsmntbombgirl> http://asserttrue.blogspot.com/2009/05/one-of-toughest-job-interview-questions.html
19:21:53 <bsmntbombgirl> sed 's/[^a-z]\+/ /g'|tr ' ' '\n'|awk '{words[$0] += 1} END{ for(word in words) print words[word], word; }'|sort -nrk1|head -10000
19:21:57 -!- asie[brb] has changed nick to asiekierka.
19:21:57 <ehird> that blog is funny because the author is a retard
19:24:21 <ehird> well actually put A2000 before that first inc
19:24:25 <ehird> and also MON<ENTER> before
19:24:28 <GregorR> Anyone with a blog named "assert true" would pretty much have to be a retard.
19:24:32 <ehird> and also emulator→load catridge→tfc3
19:24:43 <ehird> and also reboot-while-holding-commodore-key
19:24:46 <ehird> i'm not sure which key
19:24:49 <ehird> it's mapped to esc here
19:26:00 <ehird> Fun C64 fact: the drive was more powerful than the C64.
19:26:27 <GregorR> ... and it's even written as "assertTrue()" ... idiot
19:26:39 <GregorR> The drive could solve the halting problem?
19:26:42 <ehird> GregorR: assertTrue() is a function in javahead assertion libraries
19:26:48 <ehird> assertTrue(foo) is.. assert(foo)
19:26:51 <ehird> there's things like assertFalse
19:26:55 <ehird> and assertEquals(foo,bar)
19:27:18 -!- jix has joined.
19:27:31 <ehird> but the javaheads can't introspect on the code used so they use that to get half-decent output ;-)
19:27:50 <GregorR> !addinterp jix sh echo 'Jix is not a programming language.'
19:27:51 <EgoBot> Interpreter jix installed.
19:28:17 <EgoBot> Interpreter jix deleted.
19:28:32 <pikhq> ehird: Really; that's terrible.
19:28:34 <jix> hey don't delete me!
19:28:46 <ehird> jix: GregorR made fukyorbrane2
19:29:05 <bsmntbombgirl> "programming languages should not be designed by piling feature upon feature, but by removing the limitations that make extra features seem necessary"
19:29:19 <EgoBot> Use: !fyb <program name> <program>
19:29:22 <ehird> bsmntbombgirl++, although that sentence is ironically in R6RS.
19:29:25 <GregorR> I didn't change the language :P
19:29:50 <GregorR> Huh, EgoBot has gone wonko ...
19:30:01 <pikhq> bsmntbombgirl: In other words, all languages should be a superset of Lisp.
19:30:14 <ehird> pikhq: it's RnRS's intro
19:30:17 <ehird> GregorR: asiekierka was fucking with it
19:30:38 <ehird> pikhq: Revised^N Report on the Algorithmic Language Scheme.
19:30:47 <ehird> Currently at R5RS; some heathens think it's at R6Rs.
19:31:30 <pikhq> I don't think there's many languages that embody that more than Scheme...
19:31:59 <ehird> LAMBDA: The Ultimate *.
19:32:10 <ehird> ( http://en.wikipedia.org/wiki/Lambda_Papers )
19:32:35 <ehird> I WAS TALKING TO pikhq
19:38:35 -!- GregorR-L has joined.
19:38:43 <GregorR-L> !bf +++++++++++[>+++++++>+++++++++>++++>+<<<<-]>-----.>++.+++++++..+++.>.------------.<++++++++.--------.+++.------.--------.>+.>-.
19:38:58 <tombom> !bf <-----------------------------------------
19:39:02 <tombom> !bf <-----------------------------------------.
19:39:36 -!- kar8nga has joined.
19:39:43 <GregorR> If you're trying to break it, there are much better routes to try.
19:39:50 <GregorR> !c printf("%p\n", malloc(1024))
19:40:09 <tombom> : !c printf("%p\n", malloc(240934))
19:40:16 <tombom> !c printf("%p\n", malloc(240934))
19:40:44 <GregorR> Hm, it has a much smaller VM limit than that, it must be using mmap.
19:40:57 <GregorR> Oh wait, that's only 240k :P
19:41:03 <tombom> !c printf("%p\n", malloc(24093400))
19:41:08 <tombom> !c printf("%p\n", malloc(240934000))
19:41:37 <GregorR> (If you want to poke at it and not bother #esoteric , there's #egobot )
19:43:57 * pikhq reads Lambda: the Ultimate Imperative
19:48:38 <GregorR-L> I'm going to create a blog called Kappa the Penultimate
19:49:14 <ehird> Omega the Indubitably
19:49:58 <Gracenotes> as mentioned in #haskell, you can't miss "Lambda: The Ultimate Blub"
19:50:12 <ehird> Gracenotes: Paul Graham reference detected. Bozo bit set.
19:51:00 <Gracenotes> not my joke! And you realize that's the adorable bit, right?
19:55:33 * GregorR-L sets mode: +ooo ais523 Gracenotes ehird
19:55:46 * ehird has kicked GregorR-L
19:56:24 <ehird> how, you're not here
19:56:42 <Gracenotes> the channel has mysteriously become -n while you weren't watching
19:56:59 <ais523> what, you can set /modes/ from outside on a -n channel?
19:57:11 <Gracenotes> ais523: uh, dunno. It's a guess though :
19:57:13 <ais523> that makes no sense, how would you be an op if you weren't even in the channel?
19:57:21 <ehird> grrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
19:57:42 <Gracenotes> ais523: perhaps he'd set up an autoban then
19:57:43 <GregorR-L> Nobody here even has opability on #esoteric , do they?
19:59:34 <fizzie> That's the sort of relic-from-the past I am. Although I guess lament's been seen quasi-recently, too?
19:59:38 * GregorR-L takes all of tombom's wurvles and gives them to FireFly
20:00:38 -!- pikhq has quit ("leaving").
20:01:40 <ehird> fizzie and lament and Aardappel (← last one being a joke :p)
20:01:50 <ehird> AARDAPPEL IS WITH US . . . IN SPIRIT
20:04:17 -!- tombom_ has joined.
20:06:03 -!- GregorR-L has changed nick to vsnprintf.
20:06:22 <fizzie> Ⓦⓗⓞⓞⓟⓢ. I accidentally the parenthesized letters instead of circled ones.
20:08:32 <fizzie> Strange. On this very much not an Apple computer, gucharmap shows the private-use-area letter U+F8FF () as the Apple logo.
20:09:39 <comex> greatest nick ever is rlwinm
20:09:49 <ais523> what's so great about that nick?
20:09:54 <comex> it's a powerpc instruction
20:10:26 -!- vsnprintf has changed nick to no-op.
20:10:34 <no-op> This nick is unowned.
20:10:37 <no-op> Can you believe that?
20:10:50 <no-op> (nop and noop are owned :P )
20:11:05 <ehird> the c64 has an instruction called
20:11:19 <ehird> it means Push Processor Status on Stack
20:11:38 -!- no-op has changed nick to Egolitarian.
20:11:52 <fizzie> Stop calling them C64 instructions, since the 6502 is used absolutely everywhere. :p
20:11:59 <ais523> is the c64 6502-based, or does it just have the same instructions?
20:12:06 <ais523> fizzie: ah, you answered my question for me
20:12:24 -!- asiekierka has quit.
20:12:37 <comex> the powerpc has an instruction called
20:12:46 <ais523> comex: that's a great name
20:12:48 <comex> (enforce in-order execution of I/O)
20:12:53 <ais523> and probably deliberate
20:13:08 <ehird> hurd has an error EIEIO
20:13:13 <ehird> it's the kernel panic code
20:13:19 <ehird> Computer has gone to the farm.
20:13:19 <AnMaster> real 1m3.411s -> real 0m12.334s
20:13:41 <ehird> computer brought the farm
20:13:45 <Egolitarian> AnMaster ran the "divide time by 6" operation
20:13:53 <ais523> AnMaster: what program?
20:13:57 <ais523> that's too slow to be cfunge
20:14:05 <fizzie> Z80 gpg-error.h has "GPG_ERR_EIEIO = GPG_ERR_SYSTEM_ERROR | 44"; I'm not quite sure what it's used for.
20:14:24 <fizzie> Er, not Z80 gpg-error.h; the usual gpg-error.h
20:14:24 -!- pikhq has joined.
20:14:28 <ehird> "UNPLUG MODEM TO GET IT TO WORK!"
20:15:24 <AnMaster> ais523, First I made the bf-to-C compiler called "before" (compiler written in C), Then I made the bf-to-C compiler called "after" (coded in scheme), Now I'm making the bf-to-selectable-backend compiler called "in-between" (coded in erlang)
20:17:01 <Egolitarian> AnMaster: And what will you call the one written in BF?
20:17:55 <ais523> which is the name that would be produced if before was compiled via gcc-bf
20:17:55 <AnMaster> ais523, what I did was to change which list I add back the swapped operands to in the function sorting additions, sets and so on based on offset (changes ++>-<+ into +++>-< and so on).
20:18:00 <ehird> THIS IS LIVE FIRE IN THE YERA OF 1994,
20:18:03 <AnMaster> I now add back to the Input List
20:18:05 <ais523> or bf-unknown-none-before if you wanted to give the full triplet
20:18:19 <AnMaster> thus meaning I need fewer passes over it
20:19:55 <ais523> bf-unknown-none is the triplet name for gcc-bf
20:20:06 <ais523> triplets are used by the GNU build system to identify a target processor
20:20:19 <AnMaster> meaning it was hard to add optimising properly
20:20:22 <ais523> and yes, but it would technically speaking be written by you, and in BF
20:20:50 <AnMaster> ais523, I run the optimiser passes in a loop until the last time around didn't change anything.
20:21:08 <AnMaster> the "change list to add back to" reduced it from 218 iterations for lostking to just 5.
20:21:52 -!- tombom has quit (Read error: 110 (Connection timed out)).
20:21:53 -!- tombom_ has changed nick to tombom.
20:22:06 <ehird> bah, how come VICE doesn't map ← to anything intelligable
20:22:41 <ehird> The commodore had a ← key to the left of 1 and just above CTRL.
20:22:44 <AnMaster> As in AltGr - whatever that generates the ← or the arrow key?
20:22:49 <ehird> Same sort of place ESC is on current keyboards.
20:22:54 <ehird> VICE purports to map ^ to it.
20:23:00 <ehird> But Shift-6 (=^) doesn't trigger it.
20:23:29 <ehird> 8 2 4 8 /* C -> C */
20:23:29 <ehird> 9 3 7 8 /* V -> V */
20:23:30 <ehird> 10 7 1 8 /* ^ -> Left Arrow */
20:23:32 <ehird> 11 3 4 8 /* B -> B */
20:23:34 <ehird> 12 7 6 8 /* Q -> Q */
20:23:52 -!- tombom has quit ("Peace and Protection 4.22.2").
20:24:23 <ehird> AnMaster: you said you used vice right
20:24:30 <AnMaster> with ERL_COMPILER_OPTIONS='[inline,native,{hipe,[o3]}]' time is reduced to real 0m8.942s
20:24:43 <ehird> i assume you didn't use backarrow
20:24:56 <AnMaster> ehird, I probably didn't indeed.
20:25:06 <ehird> can't use TURBO-ASSEMBLER without it :-(
20:26:56 <AnMaster> yes that is from optimised lostkingdom
20:27:24 <AnMaster> and I'm *quite* sure that is really what happens in lostkingdom.
20:27:31 <AnMaster> Just need to locate it. Near the beginning
20:28:00 <ehird> that can be optimized AnMaster
20:28:13 <AnMaster> ehird, I just haven't written any pass that does it
20:28:29 <AnMaster> but that code is right at the beginning of lostkingdom
20:29:19 <ehird> AnMaster: use mandelbrot.b for a real benchmark
20:29:36 <AnMaster> ehird, yes I manage that quite fine. And I can compile that without GCC running out of memory
20:29:53 <ehird> yes, but for speed
20:29:54 <fizzie> It is also not *quite* that silly; it basically does "if (p[0]) p[1] = 1;".
20:29:58 <ehird> lostkng is just shitty generated code
20:30:33 <AnMaster> I haven't implemented the if pass yet
20:30:41 <AnMaster> since I haven't yet implemented the loop analyser
20:30:42 <ehird> does esotope do ifs
20:30:45 <fizzie> If you just turn it to p[0] = 0; p[1] = 1; you end up setting p[1] to 1 every time, while it wouldn't happen if p[0] were 0.
20:30:57 <AnMaster> ehird, but I don't aim for that good.
20:30:59 <ehird> ah, true enough fizzie
20:31:36 <AnMaster> I'm going to turn it into an if yes.
20:31:38 <fizzie> Although it could be [>[-]+<[-]] so that it doesn't do that set-to-one too many times. But maybe p[0] is for other reasons guaranteed to be 0/1.
20:32:07 * AnMaster wonders what is best: if (p[0]) { code; p[0] = 0; } or if (p[0]) { code; } p[0] = 0;
20:32:08 <ehird> http://www.youtube.com/watch?v=owHCjEWjAvs&feature=related
20:32:15 <AnMaster> the latter could potentially be merged
20:32:32 <AnMaster> but if it wasn't it would set it when it wasn't needed
20:32:58 <ehird> shitty movie but interesting use of an atari
20:33:05 <ehird> i didn't know it could do such high quality stuff
20:33:22 <AnMaster> I could detect that, but it seems quite a bit of work. a pass after all other ones scaning for that.
20:34:45 <ehird> This is driving me crazy!!!
20:39:42 * ehird throws vice out the window
20:39:42 <AnMaster> ehird, and it is a SQL-like bool
20:40:27 <ehird> AnMaster: FRC reference.
20:40:45 <AnMaster> Definitions of FRC on the Web:
20:41:03 <AnMaster> ehird, was that the meaning of it?
20:41:05 <ehird> The Fantasy Rules Committee is a nomic-like game that started as a special committee of NomicWorld. It did however survive the disbanding of the latter game, and still exists as an independent entity.
20:41:06 <ehird> In FRC (as it is called in short), there are subsequent rounds. Each round starts with all players being eligible (except one who functions as the judge). Players try to make valid rules, that is, rules consistent with all previous ones. A valid rule extends a player's eligibility to fourteen days after the rule was posted, but an invalid one decreases it by two days. The last eligible player (who in almost all cases is also the player who posted the las
20:41:12 <ehird> t valid rule) is the winner, and will function as the judge in the next round.
20:41:15 <ehird> Theme "Logic", or more properly "FLogic"
20:41:17 <ehird> Where you can find out whether <.-.> is Frue, Talse or Floyd!!
20:41:19 <ehird> http://www.win.tue.nl/cs/fm/engels/frc/
20:41:30 <ehird> Archived, by the looks of it, by oerjan.
20:41:38 <ehird> Or at least, same university as his site.
20:41:41 <ehird> He used to play FRC.
20:41:45 <ehird> AnMaster: Sure it is, it's a third truth value.
20:42:29 <AnMaster> ehird, what is <.-.> supposed to be
20:42:39 <AnMaster> "<ehird> Where you can find out whether <.-.> is Frue, Talse or Floyd!!"
20:43:07 -!- jix has quit ("brb").
20:43:35 <AnMaster> Does "<.-.>" have any meaning? Or is it just random.
20:44:05 <ehird> Presumably it'll define it.
20:44:07 -!- jix has joined.
20:45:52 <ehird> AnMaster: Good god, what on earth is your problem? What is so confusing about "Where you can find out whether <.-.> is Frue, Talse or Floyd!!"
20:46:10 <AnMaster> I need a good name for a type which is true, false or undefined.
20:47:10 <AnMaster> ehird, serious suggestion please. Plus it must be start with a lower case letter to be a valid type name.
20:47:32 <ehird> Why the fuck do you have to ask me to decide a trivial type name
20:47:35 <ehird> I thought you could code
20:47:49 <AnMaster> ehird, yes, but I suck at making up good names.
20:48:19 <AnMaster> bool_or_unknown seems so long.
20:49:07 <ehird> # Copyright 1995 Olaf 'Rhialto' Seibert. All Rights Reserved.
20:49:07 <ehird> # You are not allowed to read this using any kind of Micro$oft product.
20:49:14 <ehird> ITT: License fail.
20:50:50 <ais523> err, I'm not sure a licence can do that
20:51:00 <ehird> ais523: thus the "fail".
20:51:07 <ehird> it's not even a license, actually, it's just a note in the file
20:51:15 * ehird opens 500 VMs of Windows and opens it in each
20:51:30 * AnMaster watches ehird's computer swap trash
20:51:31 <ais523> 500 VMs of Windows probably wouldn't fit in even your computer's memory
20:51:47 <ehird> windows 3.1 would do
20:51:52 <ehird> it can run on ... 16MB of RAM?
20:52:31 <FireFly> What about an EULA which indicates that the program can't be run?
20:52:38 <pikhq> ehird, copy on write.
20:52:45 <FireFly> Or has to be run under some odd circumstances
20:52:46 <pikhq> I think you'd need less than 8G.
20:52:54 <ehird> 8G ain't much these days :p
20:53:14 <pikhq> It is a decent chunk of RAM, though.
20:53:29 <ehird> AnMaster: no it's not, you can buy 128GB of ram for like $1k
20:53:56 <pikhq> Yes, because everyone plops down $1,000 for a system.
20:53:58 <AnMaster> pikhq, that assumes you manages some memory sharing between those VMs. Which is a lot harder than for plain applications. I would be surprised if any of the current VMs did that. Because in most cases where you could share memory, it would be non-trivial to detect that it could be done.
20:54:07 <ehird> pikhq: not the point
20:54:12 <ehird> http://www.newegg.com/Product/Product.aspx?Item=N82E16820159025
20:54:15 <ehird> 8GB DDR2 for $80.99
20:54:23 <ehird> that's quite mainstream territory
20:54:38 <AnMaster> ehird, for the state of art desktops.
20:54:45 <pikhq> ehird, most people these days buy rather cheap systems.
20:54:58 <ais523> yes, but $81 isn't all that much on top of the price of a typical computer
20:55:01 <ehird> I'd say the typical ram expenditure for a new, mid-range system is $40
20:55:08 <AnMaster> pikhq, that, and the average is a few years behind
20:55:13 <ehird> $81 for 8GB ... you can't say 8GB is difficult to buy
20:55:14 <ais523> and 8 GB is a massive amount to someone like me, who's used to really low-powered computers
20:55:17 <AnMaster> since most people don't upgrade every year
20:55:26 <ehird> if you want 8GB, you can get it, unless you're completely and utterly broke
20:55:39 <ehird> AnMaster: I'd listen to what you're saying if it was relevant at all
20:55:45 <pikhq> ehird: That's the attitude that makes 8GB RAM usage necessary.
20:55:52 <ehird> the point is that 8GB is not odd, expensive or strang
20:55:55 <AnMaster> but there is no point arguing with you.
20:56:13 <ehird> indeed there isn't, because I don't simply admit you're right when you blab about irrelevant shit :)
20:56:27 -!- Egolitarian has quit ("Leaving").
20:57:05 <ehird> ah, right, I also don't accept arguments by assertion
20:57:12 <ehird> all in all I'm a pretty bad person to try and convince of stupid things
20:57:54 <Deewiant> I think the standard update interval for gamers is 2-4 years
20:58:23 <AnMaster> It is relevant, because you were asserting that 8 GB "ain't much these days". That implies that the majority have more than that. Which simply isn't true yet. In a few years sure.
20:58:44 <AnMaster> now, I have better stuff to do than argue with you. Cya
20:59:06 <ehird> that's actually not what I said.
20:59:14 <ehird> "8GB ain't much these days" != everyone has >8GB
20:59:28 <ehird> "8GB ain't much these days" = "it is not difficult, extravagantly costly or hard in any way to get 8GB of RAM at all"
20:59:41 <AnMaster> everyone has >8GB != "majority"
21:00:21 <ehird> congrats, you can nitpick at irrelevant bits to avoid rebutting my actual point.
21:00:37 <AnMaster> ehird, yes it is. Because unless you have a very recent system you will need to upgrade your mobo too
21:00:48 <ehird> if you have a low-end mobo, sure.
21:01:05 <AnMaster> ehird, even if you have a high end mobo from a 2-4 years ago.
21:01:10 <Asztal> I have a 3 year old system and it supports 16GB fine
21:01:15 <ehird> AnMaster: you're bullshitting
21:01:21 <ehird> what mobo has less than 4 slots?
21:01:21 <Asztal> well, I haven't tried that, but it would
21:01:27 <ehird> what mobo supports less than 8GB?
21:01:35 <AnMaster> ehird, most ones I have seen have 2 or 3 slots
21:01:35 <ehird> A: one you bought on the cheap, or one that's ancient.
21:01:48 <ehird> AnMaster: i guess sweden is where they keep the dinosaurs
21:02:06 <AnMaster> as I said above. I don't consider "state of the art" as the norm
21:02:16 <ehird> that's fine, because I never said these are state of the art
21:02:18 <AnMaster> I rather consider average the norm.
21:02:27 <ehird> a motherboard with 4 DDR2 slots is not state of the art 3 years ago at all
21:02:30 <AnMaster> And not "gamer average". But "all user average"
21:03:18 <ehird> Argumentum ad AnMaster: Keep talking about a minor aspect of the argument that doesn't affect its actual truth value while ignoring future statements. This helps you seem like you're winning the argument without any fiddly thinking or rebutting or having facts on your side.
21:03:21 <AnMaster> and most people actually buy low end systems.
21:03:23 <AnMaster> <pikhq> ehird, most people these days buy rather cheap systems.
21:03:29 <ehird> 21:03 AnMaster: and most people actually buy low end systems.
21:03:33 <ehird> That's objectively false.
21:03:36 <ehird> If it's the norm, it's not low-end.
21:03:50 <AnMaster> ehird, low end compared to your standards.
21:03:51 <ehird> AnMaster: the very definition of low-end, and norm.
21:04:06 <ais523> I define low-end as being lower than the average of what's on sale
21:04:10 <ais523> as opposed to the average of what people buy
21:04:22 <ehird> you can buy supercomputers
21:04:26 <ehird> bam, suddenly everything is low-end
21:04:27 <AnMaster> ais523, that is a better definition.
21:04:36 <ais523> ehird: except there aren't very many on sale
21:04:49 <ais523> maybe, let's say the median of all computers that haven't been sold yet, but can be bought
21:05:04 <ais523> but there are more non-supercomputers
21:05:42 <ehird> i'd say that your definition leads to very vague and fuzzy definitions of the ends
21:05:51 <ehird> since you have to analyze the exact proportions and specs of computers being sold
21:12:07 -!- Sgeo has joined.
21:22:28 -!- MigoMipo has quit ("QuitIRCServerException: MigoMipo disconnected from IRC Server").
21:26:57 -!- BeholdMyGlory has quit (Remote closed the connection).
21:29:40 -!- oerjan has joined.
21:31:10 -!- BeholdMyGlory has joined.
21:40:51 <oerjan> <ehird> Archived, by the looks of it, by oerjan.
21:41:21 <oerjan> yep, although that was of course many years ago
21:41:39 <Sgeo> What did oerjan achieve?
21:41:53 <oerjan> archiving frc during its first years
21:42:17 <Sgeo> I loved reading the FRC archives
21:42:21 <oerjan> otherwise, looping in ///
21:42:40 <oerjan> but i have a simpler method now
21:43:38 <oerjan> (the horribly inefficient iterative scan should be unnecessary)
21:49:37 <oerjan> just need to actually code it :)
21:49:55 <ehird> oerjan: port it to the c64
21:52:08 <AnMaster> GCC's -O0 is horrible. It doesn't even constant fold +0
21:52:18 <AnMaster> I mean, that can't possibly hurt debugging
21:52:38 <GregorR> GCC -O0 isn't "don't do anything to hurt debugging", it's "perform no optimizations whatsoever"
21:52:44 <GregorR> It doesn't even assign values to registers with -O0
21:52:49 <AnMaster> to make i = 1 + 1 + 0 ; be i = 2; instead of calculating that at runtime.
21:53:04 <AnMaster> GregorR, therere should be a mode for "don't do anything to hurt debugging" then
21:53:10 <AnMaster> because -O1 does hurt debugging
21:53:35 <GregorR> I agree, there should be a -O<the two most basic optimizations there are, being constant folding and register allocation>
21:53:36 <ehird> what is -O by default?
21:53:48 <ehird> so gcc is shit by default
21:53:54 <AnMaster> I'm asking for something that does basic constant folding + "mov $0,%eax" => "xor %eax,%eax" and such
21:53:56 <GregorR> ehird: Oh, you mean if you specify -O? Then it's -O1 I think
21:54:05 <ehird> I meant if you don't specify
21:54:19 <ehird> AnMaster: I bet those turn into the same microcode these days
21:54:21 <ais523> default optimisation is -O0, unless you have some -O sitting in your cflags somewhere
21:54:22 <AnMaster> ehird, then it depends on ./configure time options iirc
21:54:33 <AnMaster> ehird, um that doesn't matter.
21:54:51 <GregorR> ./configure puts things in the Makefile, thereby passing them to gcc X_X
21:54:52 <ehird> if "mov $0,%eax" and "xor %eax,%eax" turn into the same microcode
21:54:55 <ehird> they're the same thing
21:54:58 <AnMaster> ehird, since the opcode for mov $0,%register is longer than xor %reg,%ref
21:54:59 <ehird> GregorR: yeah but I asked about gcc
21:55:10 <AnMaster> ehird, so not the same thing when it comes to cache
21:55:11 <GregorR> ehird: That was at AnMaster, not you
21:55:34 <AnMaster> <GregorR> ./configure puts things in the Makefile, thereby passing them to gcc X_X <-- in ./configure for gcc you can select default -march, -O and such iirc
21:55:44 <AnMaster> THAT is what I was talking about
21:56:19 <ehird> That sounds stupid actually
21:56:24 <ehird> liable to break stuff
21:56:24 <AnMaster> I'm 100% sure you can select default -march, not 100% sure about default -O
21:56:25 <GregorR> ehird: GCC uses this whole complicated mess of "spec files", it would just have to add the appropriate flag to the spec file for that.
21:56:33 <ais523> oerjan: your /// looping method looks like what I was trying and failing at
21:56:59 <GregorR> Why is /// colloquially called "slashes" instead of "slashslashslash"
21:56:59 <ehird> oerjan: now implement BF in /// ;-)
21:57:14 <GregorR> That's it, I'm making a language called //
21:57:18 <AnMaster> <GregorR> I agree, there should be a -O<the two most basic optimizations there are, being constant folding and register allocation> <-- some basic DCE would work too. Like when GCC emits "mov $0,%eax; mov $0,%eax;" after each other
21:57:46 <ehird> "As it is, text takes a lot of memory so dissuading the programmer from using a lot of text was probably a good thing."
21:57:49 <GregorR> It's hard to draw the line :P
21:57:56 <ehird> ais523: you know you talked about inherently large things?
21:58:03 <ehird> on the C-64, text was inherently large :-)
21:58:13 <GregorR> <ehird> ais523: you know you talked about inherently large things? *THAT'S WHAT SHE SAID*
21:58:16 <AnMaster> GregorR, not really. If it hurts debugging in gdb then don't do it
21:58:17 -!- puzzlet_ has joined.
21:58:32 <GregorR> AnMaster: "Hurts debugging in gdb" is ill-defined.
21:58:38 <oerjan> ehird: actually i'm considering an actual turing machine, that fits better i think
21:58:52 <ehird> oerjan: as a first step, why not implement slashes in slashes?
21:58:55 <AnMaster> GregorR, "value optimised out" is HURT definitely.
21:59:02 <ehird> that doesn't prove anything, but if slashes can do an infinite counter and also implement itself
21:59:04 <ehird> it seems likely to be TC
21:59:15 <ehird> (require preparsing ofc)
21:59:21 <AnMaster> GregorR, anything breaking s is too. If it breaks si then I'm fine with it.
22:00:50 <oerjan> ehird: but a turing machine or cellular automaton is so easy to do with local substitutions
22:01:06 <oerjan> s/local/global/, possibly
22:01:06 <AnMaster> optimise([#bfn{ ins = add, off = Offset, val = V2 }|T],
22:01:06 <AnMaster> [#bfn{ ins = set, off = Offset, val = V1 } = A|Result]) ->
22:01:06 <AnMaster> optimise(T, [A#bfn{ val = V1 + V2 }|Result]);
22:01:15 <ehird> oerjan: BCT can be done with repeated really-regular regexs
22:01:31 <ehird> oerjan: so it's very trivial to prove a lang tc with it
22:02:04 <ehird> AnMaster: how is ais523 meant to respond to that
22:02:08 <ehird> "oh, that's nice"?
22:02:17 <AnMaster> ehird, that would be one of many alternatives.
22:02:39 <ehird> "I am a piece of bread on fire."
22:02:58 <AnMaster> ehird, not as likely, but not technically impossible.
22:03:02 <AnMaster> another would be saying something like "oh like in prolog"
22:04:12 <oerjan> ehird: hm yeah BCT might be nice
22:04:30 <ehird> very trivial to implement
22:05:21 <AnMaster> what is BCT in this context? Below Turing Complete? Bread fire Control Template?
22:05:31 <oerjan> http://esoteric.voxelperfect.net/wiki/BCT
22:05:47 <ais523> possibly the simplest of all languages to implement
22:05:56 <ehird> Boh Clike Tinprolog
22:05:57 <ais523> you can do cyclic tag in stuff where even BF would be a nightmare
22:06:31 * ehird notes that a piece of bread on fire is colloquially called "toast"
22:06:38 <ehird> Bitwise Cyclic Toast.
22:10:41 -!- puzzlet has quit (Read error: 110 (Connection timed out)).
22:11:15 <oerjan> hm also with BCT both the program and data might simply be data in the /// program, needing only trivial recoding
22:11:40 <oerjan> while for a turing machine you'd recode the state transitions as substitutions
22:11:58 <ehird> so get on coding ;-)
22:12:01 <ehird> it should be ubertrivial
22:14:10 <AnMaster> oerjan, are you about to prove /// TC?
22:14:23 <ais523> shouldn't take long, BCT is more or less a natural fit for this sort of thing
22:14:30 <ais523> I'm not sure if an interp or compiler would be easier, though
22:17:33 <ehird> the true marvel is that bct is tc
22:18:12 <ehird> "PRESS PLAY ON TAPE" — C64.
22:18:36 <ehird> AnMaster: There is no tape :-P
22:18:45 <AnMaster> ehird, there is a tape emulator surely
22:18:51 <ehird> it has no play button
22:18:56 <ehird> unfortunately my .prg doesn't seem to load... it just tries to load forever
22:18:59 <AnMaster> ehird, what emulator are you using
22:19:00 <ehird> probably I missed an entry point
22:19:28 <ehird> from asie's celf_main.asm ".null $9e,^main"
22:19:32 <ehird> I assume that has something to do with it
22:19:57 <ehird> nope; Turbo Assembler
22:20:38 <AnMaster> cd /usr/bin; sudo ln -s perl turbo-sed
22:20:57 <ehird> Did I mention that the C-64's 5'44" floppy drive was more powerful than the C-64?
22:21:14 <AnMaster> ehird, um. Powerful in what measure?
22:21:30 <ehird> not sure about RAM though
22:21:35 <AnMaster> why did the tape have a CPU...
22:21:44 <ehird> AnMaster: it implemented DOS
22:21:52 <ehird> but the disk operating system
22:21:55 <ehird> and the filesystem
22:22:18 <ehird> AnMaster: from the C-64 you called out to the floppy drive to run disk-operating-system commands
22:22:21 <ehird> to manipulate the filesystem
22:22:29 <ehird> you could access the floppy directly but it was harder
22:22:48 <ehird> AnMaster: the c64 ran at 0.9mhz in pal countries
22:22:50 <ehird> and had 64K of RAM
22:22:52 <Deewiant> That's kind of how every piece of hardware works these days
22:22:56 <ehird> it made sense to outsource the disk operation
22:23:04 <ehird> due to the insanely low system resources
22:23:14 <ehird> and what Deewiant said
22:23:15 -!- BeholdMyGlory has quit (Read error: 104 (Connection reset by peer)).
22:23:19 <fizzie> For contrast, the tape drive doesn't really have much in the way of electronics in it; so you have to PRESS PLAY ON TAPE manually.
22:23:23 <ehird> AnMaster: NTSC was 1mhz.
22:23:41 <AnMaster> I don't see how this is related
22:23:43 <ehird> AnMaster: I don't know... screen refresh rates?
22:23:54 -!- kar8nga has quit (Remote closed the connection).
22:23:54 <AnMaster> guess it was slow enough you had to time them
22:24:03 <Deewiant> Screen refresh rates are my guess
22:24:04 <ehird> they are not very fast machines
22:24:20 <ehird> probably it's timed so it can do calculation and update the screen at the native fps of the television
22:24:31 <AnMaster> ehird, US has 110 V and Europe has 230 V. Power supply can't be the reason.
22:24:32 <fizzie> Different video signal pixel clock, and just a suitable fraction of that for the CPU.
22:25:05 <AnMaster> fizzie, so video refresh was faster than CPU?
22:25:09 * ehird attempts to input a * on this c64
22:25:11 <AnMaster> Wait, you meant the other way around
22:25:17 <ehird> I can't find the key :^)
22:25:52 <fizzie> It's more about the pixel clock than actual frame rates. But yes, the video clock is faster than the processor, I think. It depends on the sort of resolution you want, of course.
22:26:10 * ehird attempts to figure out how to list the files on the drive
22:26:50 <fizzie> Wikipedia says "14.31818 MHz (NTSC) or 17.73447 MHz (PAL)" clock for the video chip, and that was divided with some suitable constant to get the CPU clock signal.
22:27:14 <ehird> fizzie: I wonder if the demosceners tried to do calculation on the video chip
22:27:19 <fizzie> LOAD "$",8,1 and the LIST. Or some such thing.
22:27:21 <ehird> "Just a second, the screen will go haywire..."
22:27:34 <ehird> Well, I guess I've loaded it the wrong.
22:27:45 <fizzie> Yes, you load "$" to get a LISTable list of the disk.
22:27:47 <ehird> or assembled it the wrong
22:27:54 <fizzie> LOAD "*" will load the autoloadable program.
22:27:56 <ehird> fizzie: ?OUT OF DAT ERROR
22:28:01 <ehird> (with the two spaces)
22:28:09 <Deewiant> I haven't actually used a C64, so maybe I should just shut up.
22:28:09 <ehird> % ./64tass flickr64.asm -o flickr64.prg
22:28:11 <fizzie> And 8 is the unit. I don't really remember what the 1 is.
22:28:19 -!- puzzlet_ has quit (Read error: 104 (Connection reset by peer)).
22:28:41 * ehird pilfers more CELF code.
22:28:45 <Deewiant> fizzie: Device number, target location IIRC
22:28:46 <fizzie> I don't think I have a working C64 emulator and/or any .d64 file, so I can't really try these. But I do seem to remember that it was LOAD"$" and LIST.
22:28:51 -!- puzzlet has joined.
22:28:57 <Deewiant> 8 being the first disk drive, 9 being the next
22:29:26 <Deewiant> The other one was some kind of enum where 0 was for BASIC and 1 for asm proggies
22:29:32 <Deewiant> Can't remember the details of that one
22:30:32 * ehird kicks the assembler
22:30:38 <ehird> I'll try and assemble CELF to see if that works.
22:31:01 <ehird> It prints "LOADING CELF..."
22:31:09 <ehird> So im doin it rong
22:31:49 <ehird> The question is... what am I doing wrong?
22:33:07 <ehird> you'd think it'd be easy to compile
22:33:26 * ehird reads the 64tass manual
22:34:59 <ehird> 64tass = port of Turbo Assembler to unices/windows.
22:35:20 <ehird> AnMaster: and I'm not sure; I copied CELF's header and it didn't work but the one in the 64tass manual worked.
22:35:25 <ehird> I suppose CELF changed it for OSly things
22:35:31 <AnMaster> ehird, so Turbo is optimising?
22:35:41 <ehird> It's called Turbo because it's fast?
22:35:55 <ehird> http://xs539.xs.to/xs539/09202/picture_1960.png ← Pretty ugliness.
22:36:05 <ehird> (the program increments the border background, the regular background, then loops.)
22:36:14 <ehird> (Since it does this in a tight loop, it happens more than once per screen redraw.)
22:36:31 -!- jix has quit ("night").
22:36:53 <ehird> the header in question is
22:36:56 <ehird> .null $9e,^main;will be sys 4096
22:37:02 <ehird> and I have no idea what it does
22:37:04 <ehird> I think *=$foo means
22:37:08 <ehird> in the assembled file
22:37:19 <ehird> and I suppose 2005 is a magical c64 header
22:37:37 <ehird> then... I don't know what the null thing is
22:37:43 <ehird> Or exactly what ss is doing
22:38:28 <AnMaster> what is the best way to optimise that
22:38:35 <fizzie> prog.add(new Data(new byte[] {0x0c, 0x08, 0x0a, 0x00, (byte)0x9e,
22:38:35 <fizzie> (byte)'0', (byte)'2', (byte)'0', (byte)'6', (byte)'2', 0, 0, 0}));
22:38:42 <ehird> AnMaster: you can do that without any sort of loop
22:38:44 <fizzie> I've only been doing c64 .prg files completely manually. :p
22:38:53 <ehird> AnMaster: c[-1] = p[0];
22:38:55 <AnMaster> ehird, Um needs an if at least
22:39:06 <fizzie> It's the sort of header that should be there; I think that (byte)0x9e corresponds to what you have.
22:39:12 <ehird> if (p[0]) {p[-1]=p[0];p[0]=0;the rest of the stuff you had}
22:39:16 <ehird> is the optimal optimization
22:39:18 <AnMaster> ehird, but that is kind of Strong AI opt as far as I can see.
22:39:19 <fizzie> The header is there in order to make the BASIC interpreter run the assembly program.
22:39:34 <ehird> it's trivial that's what it is
22:39:38 <AnMaster> ehird, trying to see how the program could figure this out
22:40:12 <AnMaster> it is a copy,set with side effects
22:40:49 <bsmntbombgirl> i wonder how powerful of a computer can you make utterly solid state
22:41:13 <AnMaster> bsmntbombgirl, with a large enough passive heat-sink: any
22:41:28 <AnMaster> mind you, you might need a larger room in the most extreme cases
22:41:34 <ehird> bsmntbombgirl: any: radiator
22:41:47 <ehird> bsmntbombgirl: see: totally no noise by zalman
22:41:58 <ehird> bsmntbombgirl: http://www.silentpcreview.com/article302-page1.html
22:42:04 <ehird> bsmntbombgirl: convective cooling
22:42:19 <ehird> which one is it, I forget
22:42:45 <ehird> bsmntbombgirl: http://www.silentpcreview.com/article301-page1.html
22:42:53 <ehird> completely passively cooled system that was quite good in 2006
22:42:58 <ehird> you could use the same sort of techniques to cool anything
22:43:37 <ehird> pretty useless though; you can get a system with one or two fans for like a bajillion times less fuss
22:43:40 <bsmntbombgirl> but i think you have to allow a pump to be practical
22:43:43 <ehird> and if you put it a meter or so away from you inaudible
22:44:00 <ehird> if you can cool something with few fans, it's probably the quietest way
22:46:09 * ehird searches for a simple reference of all c64 opcodes
22:47:25 <bsmntbombgirl> seems like the psu is the most difficult to cool in such situatioins
22:47:39 <AnMaster> use interference to cancel out the loud fans
22:47:41 <ehird> bsmntbombgirl: you can get passive psus
22:47:43 <fizzie> Re the disk drive, probably the most important use for the processor in there is that you can make it do music. http://www.youtube.com/watch?v=5gnMgmlKi_o promises to have an example; I don't feel like listening to it right now.
22:47:54 -!- oerjan has quit ("leaving").
22:47:58 <ehird> bsmntbombgirl: look up silverstone
22:48:03 <ehird> http://www.hardware.info/images/news/silverstone_st45_1_550.jpg
22:48:06 <AnMaster> ehird, what do you think about that idea
22:48:08 <ehird> 450W passive psu by silverstone
22:48:15 <ehird> bsmntbombgirl: everything's shit without airflow
22:48:23 <ehird> bsmntbombgirl: endpcnoise do some high-end fanless computers
22:48:32 <ehird> bsmntbombgirl: http://www.endpcnoise.com/cgi-bin/e/std/sku=fanless_mcubed_pc.html
22:48:53 <ehird> so core 2 duo 3.3ghz, 280 watt seems to be the most you can feasibly do fanlessly
22:49:00 <ehird> w/ an ssd of course
22:49:02 <ehird> that's not bad at all
22:49:03 <AnMaster> ehird, my solution should solve ALL the issues!
22:49:47 <AnMaster> but I remember reading about headphones that used interference to cancel out outside noise.
22:50:03 <ehird> the easiest way to muffle computer noise is via the AcoustiPaks.
22:50:15 <ehird> soundproofing materials, pretty much
22:50:17 <ehird> http://www.acoustiproducts.com/en/acoustipack.asp
22:51:09 <AnMaster> bsmntbombgirl, why is it cheating. And why won't it work well
22:51:55 <ehird> bsmntbombgirl: empirical evidence suggests yes ;-)
22:51:58 <AnMaster> bsmntbombgirl, I'm aware of that it isn't technically trivial. But with enough effort it should be possible to get it to work
22:52:06 <AnMaster> but I don't see why it is "cheating"
22:53:11 <bsmntbombgirl> http://www.qrdc.com/Quiet_Computer_PC_Parts/PC_Water_Cooling/ATX_Watercooled_500W_PSU/221
22:53:14 <ehird> bsmntbombgirl: did you look at www.endpcnoise.com/cgi-bin/e/std/sku?
22:53:18 <ehird> also, watercooled!=passive
22:53:25 <ehird> http://www.endpcnoise.com/cgi-bin/e/std/sku=fanless_mcubed_pc.html
22:53:29 <AnMaster> bsmntbombgirl, Fair enough. But why do you want solid state.
22:53:51 <ehird> as a theoretical exercise
22:54:20 <ehird> AnMaster: also, you simply can't get 0dB without fully solid state
22:54:31 <ehird> totally inaudible, yes. 0dB, no.
22:54:49 <AnMaster> ehird, Hm... I wonder how feasible cancelling out the sound would be though.
22:55:05 <ehird> that's what it's for
22:55:10 <AnMaster> ehird, I meant with interference.
22:56:24 <AnMaster> ehird, since I know it is possible. As I said above: I saw some headphones that used interference to cancel out outside noise.
22:57:02 <AnMaster> http://en.wikipedia.org/wiki/Active_noise_control
22:58:26 <bsmntbombgirl> http://forums.overclockers.com.au/showthread.php?t=744914
22:59:13 <ehird> bsmntbombgirl: hellooo? i've been linking you to a totally solid state computer that's relatively good spec-wise
22:59:33 <ehird> as a proof of what you can do
22:59:35 <ehird> max out http://www.endpcnoise.com/cgi-bin/e/std/sku=fanless_mcubed_pc.html
23:00:12 <ehird> bsmntbombgirl: what do you mean doubt it works?
23:00:13 <AnMaster> ehird, um the cd isn't solid state
23:00:21 <ehird> AnMaster: so take it out, child.
23:00:23 <AnMaster> that isn't completely solid state
23:00:42 <ehird> bsmntbombgirl: it's enough to power a dual-core @ 3.33ghz & 4gb *shrug*
23:00:49 -!- olsner has quit ("Leaving").
23:00:53 <ehird> the superpowered i7 I'm getting maxes out at around 400 watt
23:01:00 -!- inurinternet has joined.
23:04:53 <AnMaster> I even used headphones with ANC when flying once.
23:05:11 <ehird> The Amazing Flying Human
23:06:01 <fizzie> I doubt anyone will want to wear headphones all the time, though; and noise cancellation is rather a lot trickier when you don't have such a good control as to what sound's going to enter the ear.
23:06:04 <AnMaster> ehird, nah, Just sitting in the co-pilot seat. The heaphones with com and radio had noise cancelling.
23:06:17 <ehird> AnMaster: you sit in seats in the air‽‽‽‽
23:06:41 <AnMaster> fizzie, no way I'm going to take off the headphones in a noisy C-172 though!
23:08:36 <ehird> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
23:08:40 <ehird> i wrote my awesome c64 program
23:08:44 <ehird> but I used 16 bit variables
23:08:51 <ehird> guess how many bits the c64 registers are?
23:09:06 <ehird> sooooo I either have to split it across two registers or put it in memory
23:09:38 <ehird> think my dad has one somewhere.
23:09:54 -!- FireFly has quit ("Later").
23:10:36 <fizzie> I have a C128 in the closet ↑ that way, like I've probably said several times.
23:10:44 <fizzie> It has a reasonably compatible C64 mode, though.
23:11:07 <ehird> oh wait, it adds on
23:11:20 <ehird> as in, "inc x,y" is inc (x+y) i think
23:11:27 <fizzie> You can't really use 'xy' as a pair, anyway.
23:11:34 <ehird> i'd like to, though.
23:11:37 <ehird> since the maths would be simple
23:12:07 <fizzie> If you want to do 16-bit arithmetics, you'll have to do it with add-with-carry and some carry-handling.
23:12:09 <ehird> i know, thus im trying to figure out how to do it best :P
23:12:24 <ehird> fizzie: my loop is very mundane
23:12:40 <ehird> it's just "loop x from $d800 to $dbff"
23:12:46 <ehird> ;increment, if >$dbff reset
23:12:58 <ehird> bsmntbombgirl: yep
23:13:26 <fizzie> It's just not a 16-bit CPU, you can't use it like it were. :p
23:13:41 <ehird> i just don't know how to address, say, $dbff when all you can do is
23:13:45 <ehird> which is inc (x+y)
23:14:02 <ehird> the literals can be $xxxx
23:14:05 <ehird> if you do inc $xxxx
23:14:23 <fizzie> You can use absolute addressing with INC, so you can increment any byte in memory.
23:14:48 <fizzie> Like you did there, inc $xxxx. I mean, assuming it's constant.
23:15:05 <ehird> fizzie: well, it's not, since I'm looping from $d800 to $dbff
23:15:15 <fizzie> If you need a 16-bit pointer-type of thing, you're pretty much going to have to use the indirect addressing modes.
23:15:25 <ehird> fizzie: great, how do you use them
23:15:28 <ehird> these docs are woeful
23:17:11 <fizzie> LDA ($ab,X) or LDA ($ab),Y -- where $ab is a memory address on the zero page (there's a couple free for temporary use, I think); the first will load A with the data in memory address pointed to by $ab+X and $ab+X+1.
23:17:24 <ehird> ah, the 4-byte zero page?
23:17:29 <ehird> asie said something about that
23:17:45 <fizzie> For the second, it's the memory address pointed to by $ab and $ab+1, with Y added to it after indirection.
23:17:55 <ehird> fizzie: but... those are still 8 bit right?
23:18:22 <fizzie> Well, no, in the sense that it uses the bytes at $ab and $ab+1 to form the 16-bit address where to load the 8 bits of A from.
23:18:59 <fizzie> Then you can (painfully) increment the 16-bit value at $ab and go on with your loop.
23:19:08 -!- coppro has joined.
23:19:14 <ehird> fizzie: so if you have $ab=ff and $ab+1=33, it behaves like LDA $ff33?
23:19:27 <fizzie> I think it might've been little-endian.
23:19:39 <ehird> well the c64 is so
23:19:47 <ehird> fizzie: is $ab an example or the actual addr :P
23:20:13 <fizzie> An example; I don't remember what the "free" bytes are (if you don't want to mess the C64 kernal stuff).
23:22:57 <fizzie> Anyway, if you want to write A to all bytes $d800..$dbff, you probably want to: loop through the values $d8..$db at some zero-page address $00ab (and keep $00ac == 0); and for each of those values do a single inner loop of Y=0..Y=$ff executing STA ($ab),Y.
23:23:30 <ehird> should be easy enough once i figure out where the zero page is
23:23:32 <AnMaster> bzr branch http://rage.kuonet.org/~anmaster/bzr/in-between/trunk in-between
23:23:46 <ehird> bsmntbombgirl: what would it do
23:24:01 <AnMaster> ais523, you might be interested
23:24:07 <ehird> bsmntbombgirl: what is tile :p
23:24:08 <fizzie> FREKZP00FB-00FE251-254Free 0-Page Space for User Programs
23:24:15 <ehird> fizzie: ooh, thanks, where's that from
23:24:18 <fizzie> ehird: Those are the four officially free bytes you can use there.
23:24:22 <fizzie> http://www.cbmitapages.it/c64/c64ram.htm
23:24:32 <ehird> bsmntbombgirl: what arch is it?
23:24:33 <ais523> AnMaster: now is a bad time for me, RL-wise
23:24:41 <AnMaster> ais523, ok. It will stay there.
23:24:52 <ais523> fizzie: 4 bytes? the BBC Micro had an entire 32 bytes of Page Zero for the user
23:24:55 <fizzie> I think the official C64 programming guide had a reasonable memory map in it too; that is available as an e-text somewhere. In many places, I think.
23:24:56 <AnMaster> I think the design is very nice thoigh
23:25:07 <ehird> ais523: the c-64 is rather hardcore
23:25:08 <fizzie> ais523: There are a lot of bytes you can abuse, IIRC.
23:25:21 <ais523> actually, given that it's only 256 bytes large, 32 was an immensely large allocation for the user to play with
23:25:58 <ehird> 23:22 fizzie: Anyway, if you want to write A to all bytes $d800..$dbff, you probably want to: loop through the values $d8..$db at some zero-page address $00ab (and keep $00ac == 0); and for each of those values do a single inner loop of Y=0..Y=$ff executing STA ($ab),Y.
23:26:01 <ehird> don't you mean put it in 00ac
23:26:04 <ehird> and leave 00ab = 0
23:26:22 <fizzie> I was a bit big-endian there.
23:26:25 <ehird> I wonder if them defaulting to 0 is in the speck
23:26:27 <AnMaster> http://bzr.kuonet.org/in-between/trunk/files
23:26:53 <ehird> bsmntbombgirl: what do they run on
23:28:54 <ehird> bsmntbombgirl: what architecture do the tile64s use
23:28:56 <ehird> fizzie: foo.asm:17: Extra characters on line "sta ($00fb),0"
23:29:05 <ehird> seems like we dun be supporting nonuvat syntax.
23:29:07 <ehird> bsmntbombgirl: oh.
23:29:22 <ehird> bsmntbombgirl: shrug; it seems like you'd need something really hugely parallel to use it properly
23:29:44 <fizzie> ehird: It's "STA ($FB),Y" you want; there's no such thing as ",0" there -- if you don't want an offset, you'll have to clear Y.
23:30:05 <ehird> there's a better way to clear y than "ldy #$00"? :p
23:30:48 <ehird> foo.asm:18: Constant too large "sta ($fb),x"
23:31:26 <fizzie> You need to use Y with it.
23:31:41 <ehird> fizzie: it's a bloody odd syntax if you have to put ,y in there
23:31:42 <fizzie> Or you can write "STA ($FB,X)" if you want, since X=0.
23:31:55 <ehird> welp, works now with y
23:32:14 <ehird> nothing happens on the graphical display
23:32:47 <fizzie> It's either indexed-indirect with ($ab,x) or indirect-indexed with ($ab),y; but you always have to use x and y depending on the style you want. It's a bit... limited.
23:33:13 <ehird> I'm using ($ab),y.
23:33:35 <ehird> Is $d800-$dbff not actually video memory?
23:34:30 <fizzie> I've completely forgotten what the graphics modes look like; but I'm sure there's no direct-mapped framebuffery thing. It's all very 8x8-raw-pixel-tiley.
23:35:07 <ehird> Oh, I know, I'm doing text mode here
23:35:20 <fizzie> Oh. Well, I don't remember where that was either. :p
23:35:22 <ehird> asiekierka said that $d800-$dbff was the colours for chars, I think.
23:35:27 <ehird> The issue may be that there's no char there.
23:35:46 <ehird> Of course, finding a slot that is used would be überwork.
23:38:28 <fizzie> Yes, the foreground color of characters seems to be at that range; one byte per character, but only 4 lower bits are actually stored.
23:39:03 <ehird> fizzie: do you just sort of pick up the info from anywhere or are you getting this from an infallable resource?
23:39:06 <ehird> i'd like to know which if the latter
23:39:57 <fizzie> Googling for random strings this time. I did have some sort of bookmark collection back when I was doing a bit of C64 stuff, but I'm sure I've misplaced it.
23:41:06 <fizzie> http://www.c64.ch/programming/c64prg10.txt is the official reference guide; large sections of it are pretty basic-oriented, but there's useful stuff too.
23:42:17 <fizzie> For example, even though the "programming graphics" chapter 3 speaks of POKEing a lot, the memory addresses are the same. And chapter 5 is about assembly-things.
23:42:50 <fizzie> It is a bit overfond of decimal numbers, though.
23:44:41 <fizzie> Will have to sleep now; have 64fun.
23:47:28 -!- Dewi has joined.
23:48:03 <ehird> “here is my virus, it's contained in the scanner for HIV 1. it scanns the disk for HIV1 (and removes it when it is found) but infects with HIV2.”
23:48:04 <lifthrasiir> AnMaster: finally i splitted esotope-bfc into bfc package. not refactored yet, but it is being closer to pluggable architecture.
23:48:16 <ehird> just like the fake antiviruses for windows of today!
23:48:32 <ehird> bsmntbombgirl: c64 viruses
23:48:38 <ehird> to clear up confusion :p
23:48:39 <lifthrasiir> Expr is moved to bfc.expr module, IR is to bfc.nodes, etc.
23:52:46 -!- ais523 has quit (Remote closed the connection).
23:56:29 -!- oerjan has joined.
23:58:01 <bsmntbombgirl> http://www.koolance.com/water-cooling/includes/modules/image_browse.php?code=665&type=more&nindex=0
23:58:44 -!- comex has quit (Remote closed the connection).
23:59:54 -!- Dewio has quit (Read error: 101 (Network is unreachable)).