←2009-03-13 2009-03-14 2009-03-15→ ↑2009 ↑all
00:00:00 <fizzie> Of course any interesting program I've tried hasn't really worked well on dosemu.
00:00:00 <AnMaster> fizzie, um. Yet it is available on x86_64? How is that possible
00:00:09 <AnMaster> iirc long mode prevents vm86()
00:00:51 -!- cherez has joined.
00:01:05 -!- cherez has left (?).
00:01:12 <AnMaster> at least virtual 8086 mode is not available even from 32-bit compat mode under long mode according to AMD docs iirc
00:01:36 <fizzie> I didn't do it, I don't know how it works. But the vm86 trick is what it used to do, anyway.
00:01:43 <AnMaster> mhm
00:02:17 <AnMaster> anyway thanks to recent coverage analysis I have found two real bugs in cfunge. + a lot of stuff mycology doesn't test. Now to debug those bugs...
00:02:19 <fizzie> While dosbox actually emulates a CPU too.
00:02:55 <ehird> This performance is ridiculous.
00:03:14 <AnMaster> heh
00:03:23 <ehird> Like really ridiculous.
00:03:31 <ehird> I can see the line go from the left to the right of the screen.
00:03:35 <AnMaster> ehird, rewrite it in ASM
00:03:36 <ehird> (And it's drawing top-down!)
00:03:38 <ehird> AnMaster: NO NO NO
00:03:44 <AnMaster> why not?
00:03:50 <ehird> BAD AnMaster!!
00:03:53 <AnMaster> why?
00:04:00 <ehird> BEACUSE I HAVE _SOME_ SANITY
00:04:07 <fizzie> On x86, dosbox also has some "dynamic instruction translation" option, which is faster but less accurate.
00:04:16 <ehird> Oh shit, this is going to go further than the video memory
00:04:18 <AnMaster> ehird, ok then. POKE machine code somewhere, then jump to that
00:04:18 <ehird> WILL IT CRASH?! WHO KNOWS
00:04:19 <AnMaster> :P
00:04:23 <ehird> AnMaster: That's actually in the docs.
00:04:28 <AnMaster> what?!
00:04:31 <ehird> Yeah.
00:04:35 <AnMaster> -_-
00:04:45 <ehird> fizzie: where is it again?
00:04:45 <fizzie> AnMaster: Didn't you see my copy-paste. The help file has some inline machine code examples.
00:04:50 <AnMaster> ah
00:04:56 <AnMaster> fizzie, must have missed that
00:04:59 <fizzie> http://zem.fi/~fis/qbu.html#QEw4MDhh
00:05:03 <fizzie> The CALL ABSOLUTE statement.
00:05:43 <AnMaster> what is the calling convention
00:05:46 <AnMaster> so you can return and such
00:05:55 <ehird> Holy shit.
00:05:59 <ehird> H o l y s h i t
00:06:01 <ehird> I crashed dosbox
00:06:02 <ehird> Not even cleanly
00:06:04 <AnMaster> ehird, err
00:06:04 <ehird> It just exited
00:06:06 <fizzie> You do a RETF when you want to return.
00:06:06 <AnMaster> huh
00:06:10 <ehird> Wanna know how?
00:06:12 <ehird> CALL ABSOLUTE(0)
00:06:16 <AnMaster> hah
00:06:16 <ehird> *BOOM*
00:06:28 <AnMaster> ehird, segfault?
00:06:32 <ehird> Dunno
00:06:35 <fizzie> And you can't return any values or anything.
00:06:52 <ehird> Example:
00:06:52 <ehird> PRINT "Game over."
00:06:54 <ehird> END
00:06:55 <fizzie> Of course you can manipulate the memory allocated for some BASIC variable if you want to return something.
00:06:55 <AnMaster> ehird, I mean it is possible the memory at 0 could have contained something to stop the machine
00:06:56 <ehird> that's so depressing.
00:06:58 <AnMaster> HLT or whatever
00:07:05 <ehird> Er, the memory at 0 contains nothing, AFAIK.
00:07:10 <ehird> Well.
00:07:13 <ehird> PRINT PEEK(0) prints 112.
00:07:16 <ehird> Is 112 HLT? :P
00:07:19 -!- FireyFly has quit ("Later").
00:07:20 <AnMaster> no idea
00:07:29 <AnMaster> and HLT is the wrong one anyway
00:07:33 <fizzie> Typically the memory at 0 in a dos system contains the interrupt vector table.
00:07:36 <AnMaster> HLT halts until interrupt iirc
00:07:44 <ehird> HCF
00:07:57 <ehird> To build programs that Use a Basic development environment that
00:07:57 <ehird> require over 160K of memory supports creating large programs.
00:08:08 <ehird> To distribute your programs Use Microsoft Visual Basic for MS-DOS or
00:08:13 <ehird> t'was contaminated even then
00:08:58 <AnMaster> HLT Halt
00:08:58 <AnMaster> Causes the microprocessor to halt instruction execution and enter the HALT state. Entering the HALT
00:08:58 <AnMaster> state puts the processor in low-power mode. Execution resumes when an unmasked hardware interrupt
00:08:58 <AnMaster> (INTR), non-maskable interrupt (NMI), system management interrupt (SMI), RESET, or INIT occurs.
00:09:13 <AnMaster> that is AMD64 docs. But iirc it was introduced quite early on
00:09:15 <AnMaster> not sure when
00:09:24 <fizzie> AnMaster: "The current version of the CPU emulator, as of dosemu-1.1.x, has been rewritten from scratch, and is now called simx86. -- Added a native 64-bit port for x86-64, which, by default, uses CPU emulation for V86 mode, and runs DPMI code natively."
00:09:27 <AnMaster> maybe 386, maybe a bit later
00:09:32 <fizzie> So that's what dosemu does on x86-64.
00:09:40 <AnMaster> fizzie, I see
00:09:50 <AnMaster> fizzie, DPMI?
00:09:51 <fizzie> It has a dosbox-like full CPU emulation, but it only uses that when it has to.
00:10:00 <fizzie> It's the DOS way of running in protected mode.
00:10:07 <AnMaster> ah
00:10:10 <fizzie> "DOS Protected Mode Interface".
00:10:13 <ehird> /G Sets QBasic to update a CGA screen as fast as possible
00:10:14 <ehird> (works only with machines using CGA monitors). If you
00:10:16 <ehird> see snow (dots flickering on the screen) when QBasic
00:10:18 <ehird> updates your screen, your hardware cannot fully support
00:10:20 <ehird> this option. If you prefer a clean screen, restart
00:10:22 <ehird> QBasic without the /G option.
00:10:35 <AnMaster> ehird, yes and?
00:10:45 <ehird> xD
00:10:49 <AnMaster> ehird, idea: Haskell -> QBasic translator
00:10:52 <AnMaster> XD
00:10:54 <ehird> no
00:10:58 <AnMaster> YES!
00:11:20 <AnMaster> call it QHaskell. Or HBasic?
00:11:27 <ehird> http://zem.fi/~fis/qb.html#QEw4MDgz
00:11:45 <ehird> ■ Remarks are ignored when the program runs unless they contain
00:11:45 <ehird> metacommands.
00:11:46 <ehird> Ha ha ha what
00:11:56 <ehird> http://zem.fi/~fis/qb.html#QEw4MDdi
00:11:57 <ehird> >_<
00:11:59 <ehird> They go in COMMENTS>
00:12:01 <ais523> ehird: '$DYNAMIC
00:12:04 <ais523> commands that work from comments
00:12:07 <ehird> horrible
00:12:13 <ais523> basically it's for compatibility with other versions of BASIC
00:12:15 <ais523> which didn't read them
00:12:26 <ais523> however, given that $STATIC and $DYNAMIC change the semantics of the language...
00:12:29 <AnMaster> ehird, err INTERCAL has comments like that
00:12:32 <AnMaster> kind of
00:12:38 <fizzie> It's a bit like #pragma.
00:13:05 <fizzie> Except maybe even a tiny bit uglier.
00:13:10 <ais523> AnMaster: not really
00:13:23 <ais523> it's more INTERCAL doesn't have comments, people abuse syntax errors as comments
00:13:30 <AnMaster> ais523, well yeah
00:13:42 <ehird> BASIC as a scripting language for a C program:
00:13:47 <ehird> In C,
00:14:02 <ehird> funcptr basic_funcs[512];
00:14:10 <ehird> in basic_funcs, put pointers to machine code.
00:14:20 <AnMaster> ehird, err... what?
00:14:23 <ehird> wait for it
00:14:26 <ehird> then, to execute a basic program,
00:14:37 <ehird> put an INPUT line, that reads into cFuncsBase
00:14:43 <ehird> and then procedure definitions
00:14:47 <ehird> that use CALL ABSOLUTE to call into them
00:14:49 <AnMaster> ehird, where is this from?
00:14:51 <ehird> then cat the program to it
00:14:52 <ehird> then, run it
00:14:55 <ehird> AnMaster: nowhere, I just invented it
00:15:00 <AnMaster> ok
00:15:06 <ehird> ais523: discuss the awfulosity
00:15:10 <AnMaster> ehird, also DOS doesn't have cat
00:15:18 <ehird> that's not the point.
00:15:21 <AnMaster> ok
00:16:01 <AnMaster> ehird, so is this extending C with BASIC or BASIC with C?
00:16:09 <ehird> Former
00:16:16 <ehird> An old-school game scripting language scheme :P
00:16:18 <AnMaster> ehird, so the C program starts first?
00:16:24 <ehird> sort of
00:16:26 <ehird> you do
00:16:29 <ehird> system("qbasic ...")
00:16:29 <ehird> in C
00:16:34 <ehird> well
00:16:35 <ehird> except more complex
00:16:40 <AnMaster> and it can call back to C?
00:16:41 <ehird> since you write the address of basic_funcs to its stdin
00:16:45 <AnMaster> oh wait, no fork()
00:16:47 <ehird> and yes, via the funcs you specially set up and pointers
00:16:56 <ais523> AnMaster: fork() is impossible altogether in DOS
00:16:58 <AnMaster> how can that even work. How can you know basic won't overwrite your memory=
00:16:58 <AnMaster> ?
00:17:02 <ehird> you don't
00:17:04 <ehird> you never do in DOS
00:17:22 <ehird> "Code your own computer opponent with the Microsoft QBasic language you know and love. Just use our library of standard game procedures in your program—they're there automatically!"
00:17:32 <AnMaster> well. I mean system() can't really work if you have been overwritten when it returns
00:17:52 <AnMaster> ehird, heh
00:18:00 <ehird> if the user overwrites the game from his AI, that's his own shit-stupid fault and he gets what he deserves
00:18:54 <AnMaster> then something happened... Between 1990 and 2000...
00:18:58 <AnMaster> :D
00:19:07 <ehird> ?
00:20:15 <AnMaster> ehird, memory protection started going mainstream more and more. Windows NT. Later during 200x: windows xp.
00:20:20 <ehird> ah
00:20:30 <AnMaster> windows nt didn't really hit home users
00:20:35 <ehird> well, this passes around a pointer from another app that you jump to
00:20:35 <AnMaster> but work places mostly
00:20:39 <ehird> so it wouldn't work anyway with memory protection
00:20:48 <ehird> ais523: is there -no way- to multitask in dos?
00:20:51 <AnMaster> ehird, I doubt that would work even under Windows 9x
00:20:55 <ehird> there has to be, surely, see: all the advanced dos programs
00:21:06 <ais523> ehird: you can do cooperative multitasking sort of
00:21:12 <ais523> but you normally need cooperation from both programs
00:21:16 <AnMaster> ehird, TSR?
00:21:22 <ehird> ais523: yeah, we don't control qbasic so that's not an option
00:21:26 <ais523> you effectively have to write your own OS kernel above DOS in order to do competitive
00:21:37 <ais523> also, as AnMaster says, there were TSRs
00:21:46 <ehird> ah, that could work
00:21:46 <ais523> which basically worked by hooking the interrupt table in evil ways
00:21:51 <ehird> have the qbasic program tsr
00:21:54 <ehird> while the game keeps running
00:22:01 <ehird> and then, in the game loop, have a resumeQBasic()
00:22:02 <ais523> I'm not sure if you can get QBasic to TSR
00:22:02 <ehird> at the end
00:22:05 <AnMaster> ehird, I doubt you could do that in qbasic
00:22:08 <ehird> ais523: it can execute arbitrary machine code
00:22:09 <AnMaster> well POKE machine code...
00:22:28 <ehird> so you'd just have a snippet to tsr, then control it from C
00:22:39 <ehird> = Scripting a C DOS game with QBasic! And as a side effect having it crawl to a stop.
00:22:44 <ehird> WHAT NOT TO LIKE
00:23:19 <AnMaster> s/LIKE/DO/
00:25:12 <ehird> hmm
00:25:16 <ehird> ais523: have you got any qbasic programs lying around?
00:25:19 <ehird> i'd love to try them :)
00:25:32 <AnMaster> ahahaha
00:25:32 <ais523> ehird: they were mostly on a really old laptop that doesn't work nowadays
00:25:37 <AnMaster> what a silly typo
00:25:41 <ais523> let me run a quick slocate to see if any survived
00:25:43 <ehird> AnMaster: wut
00:25:56 <AnMaster> buf[n] = '\0'; vs. buf[STRINGALLOCCHUNK] = '\0';
00:26:21 <ais523> nope, apparently none of them did, pity
00:26:33 <AnMaster> I see
00:27:11 <ehird> I'd love a sort of "QBasic 2009" dealie
00:27:18 <ais523> nowadays it's all about Visual Basic
00:27:30 <AnMaster> ais523, VB.NET
00:27:31 <AnMaster> even
00:27:37 -!- zzo38 has joined.
00:27:37 <ehird> yes, but I don't mean actually basic
00:27:44 <ehird> just a really simple language you can do SDL-y stuff in
00:27:45 <ehird> would be nice
00:27:46 <ehird> oh, hi zzo38
00:27:58 <AnMaster> ehird, hm... asm?
00:28:02 <ehird> we.
00:28:02 <ais523> zzo38: http://www.newscientist.com/blogs/shortsharpscience/2009/03/how-moores-law-saved-the-web.html
00:28:04 <ehird> AnMaster: *er
00:28:17 <AnMaster> ehird, if with simple you mean low level
00:28:25 <ais523> anyway, you can get QBasic from http://support.microsoft.com/kb/135315
00:28:27 <ehird> AnMaster: ... no.
00:28:28 <ais523> download olddos.exe
00:28:32 <ais523> and run it in dosbox
00:28:33 <ehird> ais523: I have qbasic...
00:28:35 <AnMaster> ehird, haskell with hsdl?
00:28:40 <ais523> ehird: other people here might not
00:28:42 <ehird> AnMaster: that's not "really simple"
00:28:47 <AnMaster> ehird, well ok
00:29:04 <AnMaster> ehird, hm... Java?
00:29:10 <ehird> ....
00:29:12 <ehird> just stop talking
00:29:19 <AnMaster> ehird, then any suggestions?
00:29:20 <zzo38> The #anagol channel doesn't help. How to put FlogScript on anarchy golf site? Can someone send a message, but I don't use e-mail and am unsure. Still, I do it anyways on the wiki entry for FlogScript but if it is directly on there, it can be together listed with the others!
00:29:27 <ehird> zzo38: You cannot.
00:29:31 <ehird> You must ask shinh to add a language
00:29:49 <ehird> He is on IRC quite often
00:30:05 <zzo38> shinh was on but I received no reply
00:30:21 <AnMaster> ais523, I like gopher, so that link above..
00:30:25 -!- KingOfKarlsruhe has quit (Remote closed the connection).
00:30:40 <zzo38> And the tunes.org log seems to be not working right now
00:30:49 <ehird> It works here
00:31:32 <zzo38> The log works now
00:31:38 -!- ais523 has quit.
00:32:40 <zzo38> Maybe my DNS is mixed up and doesn't always work. I am unsure
00:33:29 <ehird> So, I invented a language earlier today.
00:33:48 <ehird> "What BASIC would be if everything was event-based instead of imperative, and there were only assignments and a few other things and stuff."
00:33:54 <ehird> Catchy name, I'm sure you'll agree.
00:34:07 <zzo38> What link for description of language you invented earlier today
00:34:36 <ehird> No link right now
00:34:37 <ehird> Here's an example
00:34:58 <ehird> 0 SUM
00:34:58 <ehird> 0 NUMBERS
00:34:59 <ehird> ON INPUT% N
00:35:01 <ehird> SUM + N SUM
00:35:03 <ehird> NUMBERS + 1 NUMBERS
00:35:05 <ehird> OVER
00:35:07 <ehird> ON INPUT$ =''
00:35:09 <ehird> NUMBERS READ
00:35:11 <ehird> ' NUMBERS, SUM ' READ
00:35:13 <ehird> SUM READ
00:35:15 <ehird> OVER
00:35:17 <ehird> READ actually prints, it means "read out"
00:35:21 <ehird> It should be obvious what it does but how it works is a bit odd
00:35:23 <AnMaster> ehird, that looks like AppleBASIC...
00:35:33 <ehird> Here it is with blank lines
00:35:34 <ehird> 0 SUM
00:35:34 <ehird> 0 NUMBERS
00:35:36 <ehird>
00:35:38 <ehird> ON INPUT% N
00:35:40 <ehird> SUM + N SUM
00:35:42 <ehird> NUMBERS + 1 NUMBERS
00:35:44 -!- oerjan has joined.
00:35:44 <ehird> OVER
00:35:46 <ehird>
00:35:48 <ehird> ON INPUT$ =''
00:35:49 <oerjan> UNDER
00:35:50 <ehird> NUMBERS READ
00:35:52 <ehird> ' NUMBERS, SUM ' READ
00:35:54 <ehird> SUM READ
00:35:56 <ehird> OVER
00:35:58 <ehird> easier to read that way
00:36:02 <AnMaster> oerjan, <ehird> "What BASIC would be if everything was event-based instead of imperative, and there were only assignments and a few other things and stuff."
00:36:05 <AnMaster> is the context
00:36:17 <ehird> The interesting thing is,
00:36:22 <ehird> in "INPUT% N"
00:36:22 <AnMaster> oerjan, hi btw
00:36:25 <oerjan> AnMaster: would i have said "OVER" if i cared about the context?
00:36:25 <ehird> That's actually an assignment
00:36:34 <AnMaster> oerjan, no idea.
00:36:36 <ehird> and INPUT$ ='' is an assignment too, although not how you might think
00:36:37 <oerjan> i mean "UNDER"
00:36:39 <ehird> = is a variable modifier.
00:36:49 <ehird> Basically, everything is an assignment
00:37:09 <ehird> if you assign to a variable starting =, it is compared to the rest and is true if the thing it'd assign is equaal to that.
00:37:16 <oerjan> everything is water
00:37:16 <AnMaster> ehird, did you see my comment about AppleBASIC above?
00:37:21 <ehird> it's "VALUE VARIABLE"
00:37:24 <ehird> thus the 0 SUM
00:37:26 <ehird> so INPUT% N
00:37:27 <ehird> is
00:37:30 <ehird> N = INPUT%
00:37:33 <ehird> and INPUT$ = ''
00:37:34 <ehird> is
00:37:43 <ehird> X = INPUT$; IF X = '' THEN TRUE ELSE FALSE
00:37:50 <ehird> except X isn't actually assigned
00:37:59 <ehird> and, of course, assigning to READ prints out the value
00:38:10 <ehird> $ means string and % number, there's actually two different INPUT commands
00:38:39 <ehird> ON foo\n...\nOVER means "Whenever performing foo happens (is true), do the stuff, then finish,."
00:38:46 * AnMaster tries to come up with rules that would make befunge harder to use
00:38:49 <ehird> Basically, it listens for user input and the like all the time, but by default does nothing.
00:38:54 <oerjan> panta rhei
00:38:54 <AnMaster> what about swapping arguments for -
00:39:01 <ehird> Anyway, I think it's easy to understand from that, does that make sense zzo38?
00:39:12 <AnMaster> so you need 4\- to do the same as 4- now
00:39:14 <ehird> You can also define your own assignments and stuff
00:39:14 <zzo38> Yes it make sense. OK
00:39:23 <ehird> So if you want to condition on multiple stuff you can
00:39:25 <ehird> Like
00:39:33 -!- comex has changed nick to judicaster.
00:39:43 <ehird> if we want to say FOO whenever we get a number below 10
00:40:36 <ehird> BEGIN
00:40:36 <ehird> INPUT% N
00:40:37 <ehird> N < 10
00:40:39 <ehird> IS INBEL10% N
00:40:42 <ehird>
00:40:43 <ehird> ON INBEL10% N
00:40:45 <ehird> 'FOO' READ
00:40:47 <ehird> END READ
00:40:49 <ehird> OVER
00:40:51 <ehird> END is a string with a newline.
00:40:57 <ehird> So, BEGIN\n...\nIS blah means "blah is true if the stuff is true"
00:41:08 <ehird> Pretty simple, like I said it's just event-based BASIC, sort of
00:41:27 <ehird> I called it Simple Tables, because the CPU architechture I thought about that would run it well involved tables for events
00:42:01 <oerjan> <ehird> oerjan is wrong
00:42:10 <oerjan> haven't used tabs in vim, then
00:42:23 <ehird> The machine architechture basically had two instructions
00:42:28 -!- Judofyr has quit (Read error: 110 (Connection timed out)).
00:42:38 <ehird> an instruction that made it easy to condition on an event (which is: any outside input, or clock tick, or whatever)
00:42:43 <ehird> i.e. one instruction, that would just idle then jump
00:42:51 <ehird> And another one which you gave a pointer
00:42:56 <ehird> And it'd read that pointer, and see another pointer
00:42:58 <ehird> read that, execute it
00:43:00 -!- bsmntbombdood has quit (Read error: 145 (Connection timed out)).
00:43:00 <ehird> and go on one
00:43:12 <ehird> So an ON would just add to the pointer list of that event
00:43:20 <ehird> and an ON of an event not seen before would add it to the event table jump
00:45:24 <ehird> bye
00:47:28 -!- zzo38 has quit.
00:48:28 -!- bsmntbombdood has joined.
00:48:47 -!- Jophish has quit (Read error: 104 (Connection reset by peer)).
00:53:07 -!- Corun has joined.
00:53:13 <AnMaster> $ ~/funge/interpreters/rcfunge/funge tests/sigfpe.b98
00:53:13 <AnMaster> Floating point exception
00:53:16 <AnMaster> should I report it
00:53:18 <AnMaster> sigh
00:53:44 <AnMaster> just all division by zero
00:53:51 <AnMaster> which is well defined in befunge to be 0
00:53:58 <AnMaster> this time in various fingerprints
00:55:28 * oerjan thought this was from sigfpe the blogger for a moment
00:55:45 <AnMaster> from who?
00:55:58 <AnMaster> also SIGFPE is floating point exception
00:56:03 <oerjan> http://blog.sigfpe.com/
00:56:14 <oerjan> well i remembered that the next moment
01:06:12 * pikhq is doing a rather absurd DVD ripping spree...
01:06:19 <pikhq> 43 fucking DVDs.
01:06:26 <pikhq> (Farscape, in its entirety)
01:06:26 <oerjan> pikhq the ripper
01:07:23 <pikhq> Fortunately, copying the DVD to disc can be done seperately from the encode. So, just spend a few hours feeding discs in, and let a batch encode run for, oh, say, a week.
01:13:19 <MizardX> http://paste2.org/p/164029 :)
01:14:00 -!- [helloworld] has joined.
01:15:07 <[helloworld]> hello, i'm trying to write simple ROT-program in brain-fuck but i have problems with rot-1 ;/ it doesn't work for all cases. I just increase ascii value, but it doesn't work, where i have got Z, it shoul return A
01:15:11 <[helloworld]> could you hlp me?
01:15:19 * oerjan swats MizardX -----###
01:15:23 <oerjan> I AM NOT EHIRD
01:15:39 <MizardX> You have shared nicks sometime in the last 4 months
01:16:01 <[helloworld]> yes
01:16:02 <oerjan> well yeah i remember him impostering me the other day
01:16:05 <[helloworld]> i asked about that
01:16:20 <[helloworld]> but still have no idea :/
01:17:06 <oerjan> [helloworld]: well you need to test for Z i guess
01:17:19 <oerjan> also, what about non-alphabetic characters?
01:17:29 <[helloworld]> but how can i do simply if() in BF?
01:17:50 <[helloworld]> i start learn BF, i want to write in only for A-Z chars
01:18:26 <[helloworld]> i read only one char increase it and write
01:18:29 <oerjan> take a look at http://esoteric.voxelperfect.net/wiki/Brainfuck_algorithms
01:18:43 <[helloworld]> but i should first check is it a 'Z"
01:19:31 <oerjan> so you probably need the if-then-else algorithm there
01:19:48 <oerjan> http://esoteric.voxelperfect.net/wiki/Brainfuck_algorithms#if_.28x.29_.7B_code1_.7D_else_.7B_code2_.7D
01:20:34 <oerjan> see the beginning of the article for how to interpret the algorithms
01:20:37 <[helloworld]> or maybe modulo
01:20:50 <[helloworld]> what should be easier?
01:21:26 <oerjan> hm maybe
01:21:48 <Sgeo> Does the Rickroll phone number still work?
01:22:23 <oerjan> well the modulo looks short enough
01:23:22 <[helloworld]> but how to use it?
01:24:35 <[helloworld]> or maybe if, it looks easier
01:26:14 <[helloworld]> what is: temp0[-] should i change it? it's forbidden chars
01:26:17 <oerjan> well for if you would need to subtract 'Z' from your character, then test, since all basic testing is for 0
01:26:32 <oerjan> [helloworld]: i said to read the beginning of the article for that
01:27:46 <[helloworld]> i did that and stil don't know ;/
01:28:40 <oerjan> basically the variable names are abbreviations for >'s and <'s to get to that particular spot
01:29:31 <[helloworld]> still don't know, could you give me an example code with if instruction?
01:29:52 <oerjan> you need to first choose where on the tape each variable is
01:31:24 <[helloworld]> but how can i 'save' this vars on the 'tape'
01:31:47 <[helloworld]> i read one chars using ","
01:31:56 <[helloworld]> then where/how should i store it?
01:32:03 <oerjan> yes, so go to the right place before you do ,
01:32:29 <[helloworld]> so this char shoulnd't be the first in my program?
01:32:55 <pikhq> Not unless you want it stored at cell 0.
01:33:02 <pikhq> Which could very well be quite reasonable.
01:33:14 <oerjan> well you want to loop, so it at least needs to be in a loop
01:33:39 <oerjan> but it could be worthwhile to duplicate it, for example cat is ,[.,]
01:34:00 <pikhq> That's generally a good idea, since you *probably* want to check for EOF.
01:34:10 <oerjan> (assuming EOF=0)
01:34:36 <[helloworld]> ok but if I only want read only one char from input?
01:34:51 <pikhq> Then you don't have read in a loop.
01:34:55 <[helloworld]> why should i use loop?
01:35:22 <oerjan> then you don't need to
01:35:33 <[helloworld]> ok, so I read that char and how can i check is it 'Z' or no
01:36:01 <oerjan> you need to subtract the code for 'Z' since all testing is for 0
01:36:21 <oerjan> you can use just a bunch of -'s for starters
01:36:28 <[helloworld]> don't understand, could you paraphrase?
01:36:54 <oerjan> the code for 'Z' is 64+26 = 90
01:37:03 <oerjan> so 90 minuses
01:37:29 <oerjan> there are shorter ways though, but they require some copying around
01:37:36 <MizardX> http://paste2.org/p/164039 <-- updated
01:37:45 <pikhq> There's another page on the wiki for those shorter ways.
01:38:04 <oerjan> yes, Brainfuck constants
01:38:49 <[helloworld]> ok, i have ,---[90 times]. Then i should check is that [90 minuses]==var i have read?
01:39:32 <pikhq> No, you do - 90 times on the var you've read, and then check whether that's 0.
01:40:05 <[helloworld]> how can i chec it?
01:40:10 <[helloworld]> k, but wait
01:40:25 <[helloworld]> if it's not 0 i should write that var++?
01:40:54 <oerjan> yeah you'll need to add 91 back then
01:41:12 <[helloworld]> but stil don't know how to code if
01:41:19 <[helloworld]> how can i check is it 0?
01:41:29 <oerjan> see the if then else algorithm
01:41:52 <[helloworld]> i do that and still don't understand that "pseudo"code
01:41:53 <oerjan> now you need to select cells for temp0 and temp1. x is your original var.
01:42:20 <oerjan> if you let temp0 and temp1 be the next cells you can use the second, simpler version
01:42:41 <[helloworld]> but how to select that cells in BF?
01:42:54 <oerjan> with the right number of >'s and <'s
01:43:10 <oerjan> you need to know what cell you are on before, and which you want to go to
01:43:38 <[helloworld]> could you paraphrase
01:43:48 <oerjan> since you have just subtracted 90 from x, you will still be at x
01:44:00 <oerjan> so to get to temp0 you do >
01:44:15 <oerjan> and to get to temp1 after that, another >
01:44:27 <oerjan> then you go back to x with <<
01:45:08 <[helloworld]> ok, now understand selecting, but stil don't udnerstand why should i use that temps
01:46:38 <oerjan> basically the way to test for 0 is with a [loop]. but you need some trickiness to get out of that loop after just one test, and to know what the test result was
01:47:34 <[helloworld]> i've already known: read my var x and substract 90 from it. Then i have to check is my "new" var is 0
01:47:42 <[helloworld]> and now i don't know how to code it
01:48:32 <oerjan> temp0[-]+temp1[-]x[code1x>-]>[<code2x>->]<<
01:48:41 <oerjan> that's the second version
01:49:00 <oerjan> assuming x is the first cell, temp0 the second and temp1 the third
01:49:41 <oerjan> code1 will start running at x, it will be run if x is nonzero
01:50:11 <oerjan> code2 will also start running at x, it will be run if x is zero
01:50:26 <[helloworld]> so I should change it that code temp0 via > and temp1 via >> ?
01:50:49 <oerjan> it depends where you start from
01:51:18 <oerjan> but assume code1 and code2 don't move (i don't think they need to). then we should know where you are all through that mess
01:51:39 <oerjan> let me change those to >'s and <'s for you
01:52:04 <oerjan> >[-]+>[-]<<[code1>-]>[<code2>->]<<
01:52:09 <[helloworld]> >[-]+>[-]<<[code1x>-]>[<code2x>->]<<?
01:52:24 <[helloworld]> ok
01:54:26 <[helloworld]> it's working :)
01:54:29 <[helloworld]> thanks a lot
01:54:34 <oerjan> :)
01:55:14 <[helloworld]> it's my second BF code :) (first was Hello-world ^^)
01:55:17 <oerjan> you're welcome
01:58:40 <oerjan> oh
01:58:43 <oerjan> happy pi day
02:00:06 <[helloworld]> thanx ;)
02:00:26 <[helloworld]> cya
02:00:32 -!- [helloworld] has quit ("MegaIRC v3.97 http://ironfist.at.tut.by").
02:13:52 <AnMaster> heh
02:13:59 <oerjan> huh?
02:14:05 <AnMaster> if (fspace.bottomRightCorner.y < position->y)
02:14:05 <AnMaster> fspace.bottomRightCorner.y = position->y;
02:14:05 <AnMaster> if (fspace.topLeftCorner.y > position->y)
02:14:05 <AnMaster> fspace.topLeftCorner.y = position->y;
02:14:10 <AnMaster> that generates better code
02:14:11 <AnMaster> than
02:14:16 <AnMaster> if (fspace.bottomRightCorner.y < position->y)
02:14:16 <AnMaster> fspace.bottomRightCorner.y = position->y;
02:14:16 <AnMaster> else if (fspace.topLeftCorner.y > position->y)
02:14:16 <AnMaster> fspace.topLeftCorner.y = position->y;
02:14:20 <AnMaster> which is rather weird
02:14:29 <AnMaster> oerjan, don't you agree?
02:14:56 <oerjan> huh, again
02:15:07 <AnMaster> oerjan, you agree then or?
02:15:12 <oerjan> yes
02:15:14 <AnMaster> anyway. reason: x86 has "conditional move", avoiding overhead of branching.
02:15:20 <AnMaster> with else if you can't use it
02:15:29 <AnMaster> since you need to jump past then
02:15:45 <AnMaster> oerjan, so the former is in fact faster
02:15:51 <AnMaster> due to less branching
02:15:59 <oerjan> ah so pipelining makes the first do more at one time, essentially?
02:16:04 <AnMaster> in fact the former has no branches
02:16:05 <AnMaster> at all
02:16:59 <AnMaster> oerjan, well possibly that too
02:17:02 <AnMaster> but don't think so
02:17:12 <AnMaster> but mainly this is due to branch prediction
02:18:13 <oerjan> oh well
02:18:45 <AnMaster> oerjan, http://paste.lisp.org/display/77000
02:19:09 <AnMaster> fspace there is really fspace.topLeftCorner.x
02:19:13 <AnMaster> but they have same address
02:19:24 <AnMaster> first member of struct
02:19:39 * oerjan gives up understanding that
02:19:49 <oerjan> (tldr essentially)
02:19:56 <AnMaster> oerjan, well it is a bit confusing since all this is in RIP addressing
02:20:08 <AnMaster> that is relative the program counter
02:20:23 <AnMaster> oerjan, the comments show the expanded values
02:20:43 <AnMaster> oerjan, what is "tldr"?
02:20:44 <oerjan> i think you are misunderstanding me. i am saying i cannot be bothered to try and understand that.
02:20:52 <oerjan> "too long, didn't read"
02:23:09 <AnMaster> oerjan, since "position" is passed in registers on amd64 this is even more confusing
02:23:13 <AnMaster> it isn't even on stack
02:24:17 -!- neldoreth has quit (Read error: 113 (No route to host)).
02:36:53 -!- olsner has joined.
03:26:14 -!- sebbu2 has joined.
03:43:52 -!- sebbu has quit (Success).
03:46:33 -!- GreaseMonkey has joined.
04:03:46 -!- oerjan has quit ("Good night").
04:04:47 -!- Corun has quit ("Leaving").
04:37:13 <mad> Hmm
04:37:39 <mad> I'm trying to design a set of cpu/sound/video hardware for something like a demo
04:37:58 <mad> probably to just run it in an emulator
04:38:19 <mad> and I'm out of inspiration
04:38:33 <mad> especially for the cpu part
04:48:12 <mad> also should be 16 bits-ish and possible to implement on FPGAs
04:50:02 <psygnisfive> BITCHES
04:51:12 <lament> 16 bitches?
05:06:41 <psygnisfive> yes
07:37:25 -!- Sgeo has quit ("Leaving").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:48:32 -!- mad has quit ("Radiateur").
09:04:56 -!- MigoMipo has joined.
09:53:57 -!- GreaseMonkey has quit ("Client Excited").
10:06:01 -!- Slereah has joined.
10:17:08 -!- neldoreth has joined.
10:18:06 -!- Slereah_ has quit (Read error: 110 (Connection timed out)).
10:24:14 -!- tombom has joined.
10:25:46 -!- KingOfKarlsruhe has joined.
10:35:56 <fizzie> Oh, and yet another conversion variant: http://zem.fi/~fis/qbc.html has a lot more authentic colors.
11:15:08 -!- Mony has joined.
11:29:13 -!- MigoMipo_ has joined.
11:30:48 -!- MigoMipo has quit (Nick collision from services.).
11:30:54 -!- MigoMipo_ has changed nick to MigoMipo.
11:40:32 * AnMaster is irritated... Spent three hours trying to track down a "rootkit" detected by chkrootkit, only to find and confirm it was a false positive.
11:40:54 <AnMaster> (of course I did it from bootcd too, so even more wasted time)
11:43:02 -!- sebbu2 has changed nick to sebbu.
13:15:07 -!- neldoreth has quit ("Lost terminal").
13:15:23 -!- neldoreth has joined.
13:15:49 -!- Jophish has joined.
13:21:13 -!- KingOfKarlsruhe has quit (Remote closed the connection).
14:12:17 -!- Corun has joined.
14:46:13 -!- BeholdMyGlory has joined.
15:16:05 -!- FireyFly has joined.
15:26:14 -!- neldoreth has quit (Read error: 110 (Connection timed out)).
15:32:57 -!- neldoreth has joined.
15:52:20 -!- Corun has quit ("This computer has gone to sleep").
15:53:04 -!- Corun has joined.
15:55:33 -!- KingOfKarlsruhe has joined.
16:15:00 -!- Corun has quit ("Leaving").
16:40:34 -!- tombom has quit ("Peace and Protection 4.22.2").
16:42:39 <ehird> fizzie: the background is blue, silly.
16:42:51 <ehird> also, a qbcnou would be nice
16:42:52 <ehird> 03:50 psygnisfive: BITCHES
16:42:56 <ehird> "but i don't say bitches!"
16:43:01 <ehird> MizardX: lol i am not ais523 :D
16:44:22 <MizardX> There is an updated version: http://paste2.org/p/164039
16:44:58 -!- Judofyr has joined.
16:45:01 <MizardX> I removed the spourious nick changes that made the script think you where the same person
16:46:26 -!- Corun has joined.
16:50:25 <ehird> MizardX: that's a rather limited selection of logs
16:51:04 <MizardX> Yes. Only since november.
16:54:33 <ehird> I'll write a script to download all of clog
16:57:30 <AnMaster> ehird, English question:
16:57:51 <AnMaster> "Move the IP forward one step" or "Move the IP forwards one step"?
16:57:55 <AnMaster> and also:
16:58:03 <AnMaster> "Move the IP backward one step" or "Move the IP backwards one step"?
16:58:14 <ehird> AnMaster: 1) either works, the latter is more pronouncable 2) either works, the latter sounds a lot better
16:58:20 <AnMaster> mhm
16:58:23 <ehird> so I'd go for the latter both times
16:58:40 <AnMaster> ehird, yeah I thought "backwards" sounded better, but I wasn't sure about forward(s)
16:58:41 <AnMaster> thanks
16:59:08 <ehird> np
16:59:25 <AnMaster> ehird, btw did you see that code I posted yesterday, where if was faster than else if?
16:59:26 <AnMaster> :D
16:59:57 <ehird> yes
17:00:23 <ehird> anyone know curl here?
17:00:25 <AnMaster> weird isn't it? I mean, logically, just testing one branch should be faster.
17:00:37 <AnMaster> ehird, as in libcurl API or curl the command line tool?
17:00:40 <ehird> latter
17:00:49 <AnMaster> ah well then I'm not the right person to ask
17:00:55 <AnMaster> well I used curl a bit
17:01:01 <AnMaster> so I might be able to help
17:01:06 <AnMaster> what is the issue?
17:01:12 <ehird> I just want it to output a one-line progress bar, instead of this monstrosity:
17:01:13 <ehird> % Total % Received % Xferd Average Speed Time Time Time Current
17:01:14 <ehird> Dload Upload Total Spent Left Speed
17:01:16 <ehird> 100 277k 100 277k 0 0 71867 0 0:00:03 0:00:03 --:--:-- 81084
17:01:35 <ehird> hmm, well actually they're so small I don't need a progress bar
17:01:38 <ehird> oh well, thanks anyway :P
17:01:39 <AnMaster> ehird, have you see what wget outputs?
17:01:54 <AnMaster> -#/--progress-bar Display transfer progress as a progress bar
17:01:57 <AnMaster> ehird, tried that ?
17:02:00 <ehird> ah, thanks :)
17:02:21 <AnMaster> ehird, from curl --help | grep progress
17:02:25 <AnMaster> -_-
17:02:31 <ehird> well sorry ;_;
17:02:45 <AnMaster> ehird, no problem
17:03:27 <AnMaster> just wanted to help you in the future. You know you always tell me to use google so to keep the balance I have to tell you to use --help/man/info/grep/whatever
17:03:29 <AnMaster> ~
17:10:31 -!- Corun has quit ("This computer has gone to sleep").
17:23:08 <ehird> I wrote a script to download all clog logs (or, if you already have them, update them to the current day)
17:23:12 <ehird> It also renames them to YYYY-MM-DD
17:23:21 <ehird> It'd be nice if I could fix the times too; anyone know clog's timezone? Well, I could check.
17:23:22 -!- ais523 has joined.
17:23:25 <ehird> hi ais523
17:23:30 <ais523> hi ehird
17:23:49 <ais523> also, /is/ my-cars (car . cdr)?
17:24:01 <ehird> yes
17:24:07 <ehird> it's the lisp translation of "My other car is a cdr"
17:24:14 <ais523> heh
17:24:33 <ais523> surely people would use a list not a cons cell to list their cars, though?
17:24:38 -!- ais523 has set topic: (eq? (cadr my-cars) 'cdr) | http://tunes.org/~nef/logs/esoteric/?C=N;O=D.
17:24:40 <ehird> no
17:24:44 <ehird> "my other" means there's only two
17:24:51 -!- ehird has set topic: (eq? (cdr my-cars) 'cdr) | http://tunes.org/~nef/logs/esoteric/?C=N;O=D.
17:24:57 <ehird> it's a pair of cars
17:25:14 <ais523> hmm, ok
17:25:20 <ais523> but cons cells are inherently ordered
17:25:23 <ais523> I suppose lists are too, though
17:27:17 <ehird> My script is currently downloading aaaall the tunes.org logs.
17:27:31 <ehird> It automatically only downloads ones you haven't downloaded yet, too.
17:27:49 <ehird> I want to make it fix the timezones, too
17:27:50 <ehird> to UTC
17:28:07 <ehird> hmm
17:28:12 <ehird> it's 16: here, 09: there
17:28:19 <ehird> so UTC-7
17:28:32 <ehird> hmm
17:28:33 <ehird> agh
17:28:38 <ehird> it crosses the day line, of course
17:28:42 <ehird> so I'd have to move lines between files
17:28:49 <ehird> :\
17:28:54 <ehird> ais523: worth it, do you think?
17:29:06 <ais523> yes
17:29:19 <Azstal> it would normally be UTC-8, though
17:29:28 <ehird> oh, right
17:29:32 <ehird> does UTC have daylight savings?
17:29:38 <Azstal> or, -8 from us, anyway
17:29:39 <ehird> if not, I can just blanket -8
17:30:52 <ehird> hmm
17:30:55 <ehird> should be simple enough
17:31:10 <ehird> if it's N hours away from midnight, strip from file onwards and append to 'Putthisinthenextfile'
17:31:20 <ehird> when you make a file, splurge putthisinthenextfile after the first 'starting' line
17:31:22 <ehird> repeat
17:31:37 <ehird> if you come to today - 1, disregard putthisinthenextfile (It never downloads an incomplete log)
17:34:37 <ehird> I'll make it download first, though
17:36:59 <ehird> anyway, the net effect should be -- wait a few minutes, get YYYY-MM-DD logs with UTC timestamps, fully greppable
17:51:59 <ehird> you know what irritates me?
17:52:12 <ehird> OOP weenies "praising" functional programming by saying it has things to contribute to architechture
17:52:22 <ehird> because, of course, _replacing OOP_ cannot possibly be a productive path
17:52:37 <ais523> functional and OOP simultaneously is of course entirely possible
17:52:38 <ehird> no, we just have to stick and pile crap on to our existing model, see? those functional languages are just wacky things we'll cherry pick from
17:52:45 <ehird> ais523: yes, but I mean the OOP C# Java sort of people
17:52:46 <ehird> always say that
17:52:48 <ais523> that doesn't mean it's a good idea for all programs
17:53:05 <ehird> they never consider that maybe replacing OOP is better than adding on to it
17:53:14 <ehird> it's always things "contributing" to mainstream languages
17:55:26 <ehird> so anyway
17:55:34 <ehird> should I write a book about esolangs and esoprogramming
17:55:40 <ehird> i mean I've been toying with the idea for a while.
18:04:23 <ais523> so have I
18:04:32 <ais523> but our books would probably look very different
18:04:37 <psygnisfive> ehird: i changed my ways just for you.
18:04:56 <ehird> ais523: why? :P
18:05:03 <ais523> Asztal: I misread UTC-8 as UTF-8, and got confused for a moment
18:05:06 <psygnisfive> its a symbol of my love *-*
18:05:08 <ehird> well, mine was gonna have a loot of theoretical stuff
18:05:12 <ehird> and then like some practical tipz
18:05:13 <ais523> ehird: because we seem to disagree stylistically on everything
18:05:21 <ais523> but that's not too dissimilar from what I was planning
18:05:30 <ais523> I think I'd include in-depth discussions of many of the most popular esolangs, though
18:05:40 <ais523> I wonder how to measure esolang popularity? Page-hits on the wiki?
18:05:50 <ehird> I was maybe gonna do two books
18:05:58 <ehird> one about esoprogs & esolangs in general
18:06:04 <ehird> one about how to actually write a damn program in brainfuck/intercal/etc
18:06:10 <ais523> two sections of the same book might work better
18:06:13 <ehird> mm
18:06:27 <ehird> I can't imagine they'd be too big, yeah :P
18:06:56 <ais523> wow, http://esoteric.voxelperfect.net/wiki/Special:Popularpages is pretty interesting
18:07:06 <ais523> I'm surprised Ook! is so far up, for instance
18:07:19 <ais523> and that INTERCAL is so far down
18:07:29 -!- Judofyr_ has joined.
18:07:53 <ehird> so I found a qbasic game that dosbox was too slow to run X
18:07:54 <ehird> XD
18:08:02 <ais523> you can speed it up
18:08:06 <ehird> it had "delay = 10000"
18:08:09 <ais523> it was obviously designed for more modern computers
18:08:12 <ehird> I'm setting it to "delay = 0"
18:08:22 <ehird> ais523: it was made in 1995 by a friend; but it was his second ever game
18:08:29 <ehird> for example, all IFs were just gotos, etc
18:08:31 <ais523> heh
18:08:38 <ais523> that's before I was born
18:08:38 <ehird> so, it's probably a large artifact of the code
18:08:43 <ehird> ais523: what, 1995?
18:08:50 <ais523> oh, misread it as 1985
18:09:00 <ehird> It was slightly after I was born, I think
18:09:27 <ehird> ais523: what cpu cycles do you have your qbasic dosbox?
18:09:31 <ehird> mine is 3000
18:09:42 <ais523> I leave it on default
18:09:45 <ais523> I don't use it much, you see...
18:09:51 <ehird> it'll be in the title bar
18:11:02 <ehird> wow, this game is fancy, it even has an icon.
18:14:14 <ehird> I can't type backslash, argh
18:20:17 -!- Judofyr has quit (Read error: 110 (Connection timed out)).
18:25:16 <ehird> Huh.
18:25:17 <ehird> BASIC is portable.
18:25:25 <ehird> I just translated some C64 basic to QBasic trivially. :P
18:25:31 <ais523> I wouldn't be surprised if there was at least one portable version by now
18:25:32 <ehird> (graphical)
18:25:40 <ais523> arguably, VB.NET is portable due to Mono, but that's hardly BASIC
18:26:55 <ehird> wait, spectrum
18:26:55 <ehird> not c64
18:26:59 <ehird> Spectrum BASIC:
18:26:59 <ehird> 10 BORDER 0; PAPER 0
18:27:00 <ehird> 20 FOR n = 1 TO 7
18:27:02 <ehird> 30 INK n
18:27:04 <ehird> 40 CIRCLE 100+n*10,100+n*10,50
18:27:06 <ehird> 50 NEXT n
18:27:08 <ehird> QBasic:
18:27:10 <ehird> SCREEN 12
18:27:12 <ehird> FOR n = 1 TO 7
18:27:14 <ehird> COLOR n
18:27:17 <ehird> CIRCLE (1==+n*10,100+n*10),50
18:27:18 <ehird> NEXT n
18:27:20 <ehird> err
18:27:22 <ehird> CIRCLE (1+n*10,100+n*10),50
18:33:00 -!- oerjan has joined.
18:35:35 <oerjan> <lament> 16 bitches?
18:35:48 * oerjan imagines some kind of counting song
18:40:48 <fizzie> ehird: It's not blue in my qbasic.exe help-browser by default; it's black there, even though the edit screen is white-on-blue.
18:40:57 <ehird> oh right
18:41:36 <fizzie> Although at least quickbasic has a colour configura-o-tron for the UI.
18:43:59 <ehird> http://jsspeccy.zxdemo.org/
18:44:09 <ehird> all it needs now is a BASIC editor
18:44:47 -!- Judofyr_ has changed nick to Judofyr.
18:50:49 <ehird> ais523: you know how you said the shuffle should have buttons on the headphones?
18:50:50 <ehird> it _does_
18:50:55 <ais523> wow
18:50:56 <ehird> I just realised
18:51:01 <ais523> but unfortunately, it isn't just the headphones?
18:51:14 <ehird> There's a thin unit: http://images.apple.com/ipodshuffle/gallery/images/ipodshuffle_image1_20090311.jpg
18:51:18 <ehird> but yes, not quite all in those tiny tiny earphones
18:51:53 <Slereah> You have a thin unit
18:51:53 <ehird> http://images.apple.com/ipodshuffle/gallery/images/ipodshuffle_image3_20090311.jpg <- headphone cable controls
18:51:53 <ehird> Slereah: Oh burn.
18:51:56 <Slereah> kekeke < `?>
18:55:25 <oerjan> kekeke? is that some kind of french laugh?
18:55:45 <ehird> Korean.
18:56:02 <oerjan> aha
18:56:19 <Deewiant> It's "lololo" put through the Orcish/Human filter in World of Warcraft
18:56:43 <Deewiant> If I remember correctly, anyway
18:56:48 <oerjan> hm
18:57:27 <Deewiant> Evidently "kek" is "lol" but "kekeke" is "hahaha" according to Wikipedia
18:58:10 <ehird> no
18:58:13 <ehird> it originates from starcraft iirc
18:58:26 <ais523> there's an orcish/human filter on world of warcraft?
18:58:26 <Deewiant> The origin is the Korean
18:58:28 <ehird> or at least, common usage
18:58:34 <ais523> how does it work, just swapping certain letters?
18:58:45 <Deewiant> I think so, yes, with some hardcoded words (like "lol" -> "kek")
18:58:54 <ehird> it doesn't, considering the < `?`> smiley next to it it's obviously meant to be korean
18:59:27 <Deewiant> ehird: It originates in Warcraft, to be precise
18:59:38 <oerjan> wspanig elttres
18:59:47 <Deewiant> I.e. Warcraft: Orcs and Humans from 1994
18:59:53 <Deewiant> Or 1993? Not sure
18:59:56 <oerjan> *wspaipgn
19:01:21 <oerjan> ot wspa, ro ont ot wspa, httas' hte uqseitno
19:02:17 <Deewiant> s/httas'/htta si/
19:02:32 <oerjan> an ode to orcs enjoying hot spas, obviously
19:03:54 <oerjan> octnartcoisn tfw!
19:04:08 <pikhq> Qapla'!
19:04:14 <ais523> hmm... it seems to be mostly anagramming rather than substituting letters
19:04:37 <oerjan> ais523: i hope you are not thinking i am being authentic here
19:05:01 <oerjan> or does that mean i'm more authentic than i thought?
19:06:06 -!- kar8nga has joined.
19:06:28 <pikhq> Hell, now that I see the quote in question, make that "taH pagh, taHbe"...
19:07:43 <psygnisfive> :o
19:07:46 <psygnisfive> KLINGON!?
19:07:47 <psygnisfive> :o
19:07:48 <oerjan> my klingon is rather rusty.
19:07:57 <oerjan> as in, dead before birth, really
19:08:00 <Slereah> QAPLAH
19:08:05 <psygnisfive> i dont know klingon
19:08:37 <oerjan> Slereah: i do vaguely recall it being case sensitive, though
19:08:42 <Slereah> Yes
19:08:43 <psygnisfive> it is.
19:08:53 <Slereah> Well, the transliteration anyway
19:08:57 <psygnisfive> klingon uses caps and lowercase for different sounds
19:09:02 <Slereah> They don't
19:09:06 <psygnisfive> they do.
19:09:10 <psygnisfive> in the transliterations.
19:09:13 <Slereah> It's the transliteration that does that
19:09:18 <Slereah> Klingon has an alphabet
19:09:22 <psygnisfive> yes i know this
19:09:24 <psygnisfive> thank you.
19:09:28 <psygnisfive> it has two, actually
19:09:31 <psygnisfive> but thats besides the point
19:09:47 <ehird> HOEFLER TEXT
19:09:59 <psygnisfive> hoefler text?
19:10:04 <ehird> Yes!
19:10:26 <psygnisfive> and why is this font interesting now?
19:10:33 <ehird> It is awesome.
19:10:37 <psygnisfive> ok
19:10:43 <ehird> Also, *typeface.
19:10:44 <psygnisfive> its italic Q is pretty neat
19:10:45 * oerjan hoefles around
19:11:28 <psygnisfive> text figures <3
19:15:31 * oerjan swats a wiki spammer -----###
19:15:45 * ais523 catches the wiki spammer in a butterfly net -----\XXXXX/
19:15:45 <oerjan> he'll never know what hit him
19:16:28 <oerjan> i don't think the gentle butterfly net is appropriate for spammers
19:16:41 <ais523> well, it's to hold them still while you swat them
19:16:54 <fizzie> Why does the gentle butterfly net remind me of a frying pan?
19:17:10 <ehird> Hello! I am testing stuff. Please feel free to totally ignore me.
19:17:11 <ehird> Thank you!
19:17:18 <ais523> frying pans are similar but harder and more painful
19:17:18 -!- Corun has joined.
19:17:22 <ais523> also they have a smaller volume
19:17:39 <fizzie> Frying pans are presumably preferred by the really hard-core butterfly enthusiasts.
19:17:54 <oerjan> um, you would be surprised
19:18:32 <ehird> http://screencast.com/t/jlgWoqvK (needs flash)
19:18:48 <ais523> ehird: just do it all command-line and use termcast
19:18:53 <ehird> heh
19:18:55 <ais523> that doesn't need flash, or indeed a web browser
19:19:07 <ehird> it needs telnet. and it requires you to use command line tools.
19:19:19 <ehird> what do you mean needing telnet is a problem? needing flash isn't either.
19:19:21 <ais523> well, it's for broadcasting terminals, of course it requires command line tools
19:19:40 <ais523> besides, Windows Vista comes with telnet by default, and not Flash
19:19:46 <ais523> likewise for every other common OS, I think
19:19:55 <ais523> but doing it with windows is more impressive
19:19:55 <ehird> why are you using a computer? use a television. that doesn't need RAM, or indeed a CPU. well, it's for broadcasting images, of course it requires passivity
19:20:05 <ehird> besides, my house came with a TV, but no computer
19:20:23 <Azstal> I'm not sure Windows Vista comes with telnet by default
19:21:00 <ais523> it does, it's just not enabled by default
19:21:04 <Azstal> Well, it does, but you have to install it.
19:21:06 <fizzie> windowshelp.microsoft.com sez: "By default, Telnet is not installed with Windows, but you can install it by following the steps below."
19:21:12 <ais523> no install is needed
19:21:15 <ais523> at least, it's on the computer
19:21:16 <ehird> Huge video capture is huge! I bet this one will be like 15MB+.
19:21:17 <ais523> but you have to turn the thing on
19:21:19 <ehird> Stupid FLV.
19:21:35 <ehird> Testing, testing.
19:22:13 <fizzie> Installing is what they call "turning it on" on that windows help thing, though. Although admittedly the installation instructions go to some "Turn Windows features on or off" page.
19:22:45 <fizzie> Also other very good questions there: "Telnet doesn't look like Windows. Why?"
19:23:03 <fizzie> "I've got the Telnet window open. Now what?"
19:23:52 <ais523> interesting fact: for ages, Windows NT only supported one locally logged in person at a time, but allowed any number of users to telnet in
19:25:30 <ehird> That may be a fact, but I'm not sure why it's so interesting. :P
19:25:57 -!- oerjan has quit ("And then, a miracle occurs").
19:26:23 <ehird> ...and I am here to capture this miracle forever and ever.
19:26:30 <ehird> Oh, I feel so special to be selected as the sole receiver.
19:26:37 <ehird> Whatever will become of my life when this wonder is over?
19:26:43 <fizzie> It's interesting because it has 2*2*2*3*5 letters.
19:26:47 <ehird> I'll flip burgers or something. I'll burger flips.
19:26:50 <ehird> I am a burger.
19:26:53 <ehird> Arem
19:26:55 <ehird> Aren't you?
19:27:05 <fizzie> Is "burger" a verb?
19:27:17 <olsner> of course
19:27:30 <olsner> otherwise you wouldn't be able to say "burger flips"
19:27:57 -!- Corun has quit ("This computer has gone to sleep").
19:30:19 <ehird> http://screencast.com/t/vdo7feUDvw <-- Burgers, miracles, etc.
19:30:28 <ehird> Can you tell I'm testing?
19:30:46 <fizzie> No, you sound just like you usually do.
19:30:51 <ehird> :-D
19:31:18 <ehird> It'd be nice if Jing was less... laggy. And less SWF.
19:31:26 <ehird> maybe I'll write my own capturerotron
19:36:47 <ehird> http://www.newartisans.com/2009/03/hello-haskell-goodbye-lisp.html <- Yet another joins the club.
19:49:06 -!- ais523 has quit (Remote closed the connection).
19:49:47 -!- BeholdMyGlory has quit (Read error: 104 (Connection reset by peer)).
19:50:11 -!- BeholdMyGlory has joined.
20:18:57 -!- Mony has quit ("Quit").
20:23:14 <judicaster> ehird: what IRC client is that
20:23:20 <ehird> limechat
20:23:22 <ehird> OS X only
20:23:28 <ehird> http://limechat.net/mac/
20:23:29 <ehird> well
20:23:32 <judicaster> looks better than colloquy
20:23:33 <ehird> there is a limechat for windows by the same author
20:23:36 <ehird> but it's totally separate
20:23:37 <ehird> and it is
20:24:05 <ehird> also
20:24:06 <ehird> "Note that you need to install it even if you are using OSX 10.5.5. "
20:24:07 <ehird> ignore that
20:24:09 <ehird> it's bullshit
20:24:15 <ehird> just download limechat, it works :P
20:26:51 <ehird> omg
20:26:54 <ehird> there's limechat for the iphone
20:26:56 <ehird> why nobody tell me
20:27:08 <ehird> http://limechat.net/iphone/images/serverlist.png
20:27:16 * ehird grabs
20:27:44 <ehird> hrmps, £3
20:32:37 <ehird> AnMaster: should I learn erlang?
20:32:59 <ehird> http://gist.github.com/79022 On second thoughts, maybe not.
20:46:30 <ehird> oh, screen 13 is trivial
20:46:57 <ehird> x+(y*w)
20:47:00 <ehird> where w = width of stream
20:47:04 <ehird> screen
20:48:35 <AnMaster> hi
20:48:39 <ehird> hi AnMaster
20:48:40 <AnMaster> ehird, maybe. If you want.
20:48:45 <ehird> I got fast graphics working in qbasic
20:49:04 <AnMaster> oh? nice
20:49:14 <ehird> I'll show the code as soon as this finishes running :P
20:49:25 <AnMaster> ehird, have guests today that stay over night. Not much time to talk.
20:49:30 <Azstal> using poke inset of pset?
20:49:31 <ehird> kay
20:49:35 <ehird> Asztal: yeah, pretty much
20:49:36 <Azstal> instead*
20:49:46 <ehird> it's for screen 13 (@AnMaster: 320x200, 256 col)
20:49:48 <AnMaster> (relatives...)
20:49:52 <ehird> but I couldn't get it working before
20:49:57 <ehird> now it seems to work
20:50:04 <AnMaster> mhm
20:50:11 <AnMaster> @AnMaster: 320x200, 256 col <-- ?
20:50:17 <ehird> that's what screen 13 i
20:50:18 <ehird> s
20:50:23 <AnMaster> k
20:50:33 <AnMaster> ehird, screen 13 meaning?
20:50:38 <ehird> screen mode 13
20:50:40 <AnMaster> ah
20:50:41 <ehird> QBasic: SCREEN 13
20:51:08 <AnMaster> ehird, I think "the 13th terminal" which is very different
20:51:12 <ehird> heh
20:51:17 <AnMaster> thought*
20:51:23 -!- neldoreth has quit ("leaving").
20:51:28 -!- neldoreth has joined.
20:51:40 <ehird> Looks like it's finishing off...
20:51:42 <AnMaster> ehird, and it just didn't make sense for DOS!
20:51:53 <ehird> you should see my multi display DOS setup
20:51:54 <ehird> it's hardcore./
20:52:06 <ehird> i have a 17" text display
20:52:11 <AnMaster> <ehird> http://gist.github.com/79022 On second thoughts, maybe not. <-- wth
20:52:12 <ehird> a 14" 640x480 16-col display
20:52:17 * AnMaster tries to understand that code
20:52:21 <ehird> and a 15" 320x200 256-col display
20:52:23 <ehird> AnMaster: it's from erlang
20:52:25 <ehird> 's source code
20:52:26 <ehird> otp, thing
20:52:29 <ehird> err
20:52:31 <ehird> erl_eval
20:52:32 <ehird> or something
20:52:46 <judicaster> any language that has a fun keyword is cool with me
20:52:57 <ehird> fun awesome -> radical
20:53:14 <AnMaster> ehird, it doesn't make much sense
20:53:23 <ehird> why not
20:53:59 <AnMaster> ehird, well maybe in context. But you can call a fun with unknown arguments count at compile time in cleaner ways
20:54:11 <AnMaster> apply(Fun, Args) -> term() | empty()
20:54:11 <AnMaster> Types Fun = fun()
20:54:11 <AnMaster> Args = [term()]
20:54:16 <AnMaster> that is a BIF even
20:54:27 <ehird> er, no
20:54:28 <ehird> becaus
20:54:29 <ehird> e
20:54:32 <ehird> that's in the evaluator
20:54:35 <ehird> it isn't an actual function
20:54:37 <ehird> thus the eval_fun shit
20:55:24 <AnMaster> ehird, well that code assigns a fun(a,b,c,...) to F that calls eval_fun
20:55:36 <ehird> I'm not dumb, I can read i
20:55:37 <ehird> t
20:55:38 <AnMaster> ehird, I'm not sure why this is useful.
20:55:39 <ehird> it's just hdeous
20:55:41 <ehird> hideous
20:55:44 <AnMaster> I mean. what is the context
20:55:46 <AnMaster> and I agree
20:56:08 <AnMaster> what source file is it from?
20:56:16 <ehird> dunno
20:56:43 <ehird> Howdy neighbor! This here's sup-config, ready to help you jack in to
20:56:43 <ehird> the next generation of digital cyberspace: the text-based email
20:56:45 <ehird> program. Get ready to be the envy of everyone in your internets
20:56:47 <ehird> with your amazing keyboarding skills! Jump from email to email with
20:56:48 <AnMaster> hm /usr/lib/erlang/lib/stdlib-1.15.5/src/erl_eval.erl
20:56:49 <ehird> nary a click of the mouse!
20:56:50 <AnMaster> it seems
20:56:51 <AnMaster> wth
20:56:51 <ehird> — sup-config program
20:58:30 <AnMaster> ehird, hm. It seems very weird indeed. The normal way would be to compile to erlang byte code then run that iirc
20:58:32 -!- Sgeo has joined.
20:58:43 <AnMaster> you can do that sort of stuff
20:59:31 <AnMaster> This module provides an interpreter for Erlang expressions. The expressions are in the abstract syntax as returned by erl_parse, the Erlang parser, or a call to
20:59:31 <AnMaster> io:parse_erl_exprs/2.
20:59:33 <AnMaster> hm
21:03:35 <AnMaster> ehird, and yes that code was horrible. But then it isn't something I ever needed to do thankfully
21:04:02 <AnMaster> it seems erl_eval is meant to support safe evaluation of erlang code
21:04:17 <AnMaster> with callbacks for all function calls and such
21:04:34 <AnMaster> During evaluation of a function, no calls can be made to local functions. An undefined function error would be generated. However, the optional argument LocalFunction‐
21:04:34 <AnMaster> Handler may be used to define a function which is called when there is a call to a local function. The argument can have the following formats:
21:11:18 <ehird> AnMaster: here's the code
21:11:19 <ehird> SCREEN 13
21:11:23 <ehird> DEF SEG = &HA000
21:11:26 <ehird> FOR n = 0 TO 32767
21:11:29 <ehird> FOR x = 0 TO 100
21:11:34 <ehird> POKE x + (1 * 320), n
21:11:35 <ehird> NEXT x
21:11:36 <ehird> NEXT n
21:11:47 <ehird> it's `x + (y * 320)`
21:11:58 <ehird> anyway, that flashess a band of colour on the second line of the screen.
21:11:59 <ehird> a lot.
21:15:30 <fizzie> Next you'll be graduating to VGA palette rotation tricksies. (That's also trivial: OUT &H3C8, <palette index> followed by OUT &H3C9, <red>; OUT &H3C9, <green>; OUT &H3C9, <blue> with rgb values in the [0, 63] range; and it auto-advances, so you can just OUT &H3C8, 0 and then feed the whole 256-color palette in the 0x3c9 port.
21:16:40 <ehird> fizzie: what does that buy you?
21:35:22 <AnMaster> nice
21:36:11 <AnMaster> btw confusing: callgrind reports that 0 system time was spent in fclose() or fwrite() when writing files. Even though commenting out those calls actually reduces run time...
21:36:12 <AnMaster> wth
21:36:25 <AnMaster> it reports the system time just fine for other stuff
21:36:31 <fizzie> You can do "animation" fast without screen-redrawing. As long as you're happy with just manipulating palette values.
21:36:47 <AnMaster> ==16002== L2 refs: 123,201 ( 28,492 rd + 94,709 wr)
21:36:47 <AnMaster> ==16002== L2 misses: 30,943 ( 21,054 rd + 9,889 wr)
21:36:47 <AnMaster> ==16002== L2 miss rate: 0.0% ( 0.0% + 0.2% )
21:36:54 <AnMaster> I don't believe valgrind can count?
21:37:04 <AnMaster> the miss rate seems way off
21:38:20 <AnMaster> or, if it is actually relative L1 refs in the table above...
21:38:21 <AnMaster> http://paste.lisp.org/display/77046
21:38:26 <AnMaster> then it is very confusing output
21:46:45 <fizzie> (And of course it also "buys you" a less silly color palette -- well, less silly for many uses -- than the default 256-color one.)
21:49:38 <fizzie> Stop all the QBasic nonsense before I catch the qb bug too, though. I'm already very close to running dosbox; probably would've started it already, except I'm afraid it might use enough CPU to make the virtualbox windows vm get some audio-playing glitches.
21:58:26 <fizzie> The "Version Differences" list at http://zem.fi/~fis/qbc.html#QEw4MDBm should make you appreciate QBasic over the older pre-5 DOS GW-BASIC.
22:16:01 -!- oerjan has joined.
22:17:01 <oerjan> <ehird> Whatever will become of my life when this wonder is over?
22:18:18 <oerjan> you will be caught up in a struggle between religious sects with fiercely different interpretations of the miracle. as a result you will end up being burned on the stake, although that will still be many years in the future.
22:18:36 * oerjan hopes this cleared it up.
22:20:23 <fizzie> Are you sure you should be revealing your information-of-the-future stuff to us? I understand it's usually very hush-hush.
22:20:58 <oerjan> not this one. it is a self-fulfilling prophecy, and those are important to get into the open.
22:22:43 <AnMaster> hm
22:23:01 <AnMaster> what exactly does this mean: char* const args[]
22:23:03 <AnMaster> in C
22:23:16 <oerjan> black magic.
22:23:22 <AnMaster> int execvp(const char *file, char *const argv[]);
22:23:24 <AnMaster> is the context
22:23:26 <AnMaster> the POSIX API
22:23:34 <oerjan> at least that's how i understand const in C (i.e., not very well at all)
22:23:52 <AnMaster> well I understand const char*, just not char* const
22:24:12 <fizzie> It's a constant pointer.
22:24:25 <AnMaster> hm
22:24:36 <fizzie> I mean, "const char*" is a pointer to constant characters, while "char* const" is a constant pointer to (modifiable) characters.
22:24:52 <fizzie> cdecl> explain char* const args[]
22:24:52 <fizzie> declare args as array of const pointer to char
22:24:54 <oerjan> hm does const commute with some of it? i.e. is const char * == char const * ?
22:25:01 <fizzie> Yes.
22:25:22 <fizzie> There's a long discussion about the benefits of "const char *" and "char const *" in the C++ FAQ.
22:25:28 <fizzie> It's about "business reasons".
22:25:32 <oerjan> heh
22:26:13 <AnMaster> those should be the same...
22:26:23 <AnMaster> so it would just be a matter of coding style -_-
22:26:52 <fizzie> "Fred const* x is functionally equivalent to const Fred* x. However, the real question is which should be used.
22:26:57 <fizzie> Answer: absolutely no one should pretend they can make decisions for your organization until they know something about your organization. One size does not fit all; there is no "right" answer for all organizations, so do not allow anyone to make a knee-jerk decision in either direction. "Think" is not a four-letter word."
22:27:04 <fizzie> That's a very typical piece of the C++ FAQ.
22:27:04 <AnMaster> char *const argv[restrict] <-- nice one from posix_spawn()
22:27:17 <AnMaster> what does *that* restrict change
22:27:26 <AnMaster> wait
22:27:56 <AnMaster> in an argument list this is pointer to array of pointers to null terminated strings
22:28:11 <AnMaster> the pointers to the strings are constant
22:28:16 <AnMaster> and may not alias each other?
22:28:24 <AnMaster> or what bit does restrict there restrict
22:28:24 <AnMaster> ?
22:28:30 <fizzie> That sounds reasonable, but it's a silly-looking place for the restrict.
22:28:45 <AnMaster> int posix_spawn(pid_t *restrict pid, const char *restrict path,
22:28:45 <AnMaster> const posix_spawn_file_actions_t *file_actions,
22:28:45 <AnMaster> const posix_spawnattr_t *restrict attrp,
22:28:45 <AnMaster> char *const argv[restrict], char *const envp[restrict]);
22:28:50 <AnMaster> is the full prototype
22:29:35 <fizzie> To tell you the truth, I'm actually a bit surprised that it's legal. But my guess is that "char *const argv[restrict]" might be the same thing as "char *const *restrict argv", maybe.
22:29:36 <AnMaster> it may also indicate argv and envp can't alias each other
22:29:38 <AnMaster> I'm not sure
22:30:01 <AnMaster> fizzie, restrict is perfectly legal inside [] in argument lists
22:30:17 <fizzie> Yes, obviously, but it still looks silly.
22:30:33 <fizzie> I don't see where else it could be in a [] thing, so I guess there's not really an alternative.
22:30:42 <AnMaster> fizzie, for example, this is valid: static inline void mulMatrices(const double a[restrict 16], const double b[restrict 16], double r[restrict 16])
22:30:55 <AnMaster> yeah that is 16 as in size
22:31:08 <AnMaster> 16 restrict isn't valid though:
22:31:13 <AnMaster> /home/arvid/src/cfunge/code-cleanup/src/fingerprints/3DSP/3DSP.c:139: error: expected ‘]’ before ‘restrict’
22:32:50 <AnMaster> fizzie, nice syntax eh?
22:32:52 <AnMaster> ~
22:33:19 <ehird> 20:36 fizzie: You can do "animation" fast without screen-redrawing. As long as you're happy with just manipulating palette values.
22:33:21 <ehird> ha
22:33:30 <ehird> 20:46 fizzie: (And of course it also "buys you" a less silly color palette -- well, less silly for many uses -- than the default 256-color one.)
22:33:31 <fizzie> Yes, well, I'm not quite sure where else it could be, so I guess it makes sense; it just looks silly.
22:33:33 <ehird> what are the values?
22:33:35 <ehird> 32-bit colours or w/e?
22:33:45 <ehird> 20:49 fizzie: Stop all the QBasic nonsense before I catch the qb bug too, though. I'm already very close to running dosbox; probably would've started it already, except I'm afraid it might use enough CPU to make the virtualbox windows vm get some audio-playing glitches.
22:33:47 <ehird> dosbox uses like 0 cpu
22:33:50 <ehird> do eet ;)
22:34:03 <ehird> I mean qbasic is just awesome.
22:34:09 <fizzie> Yes, and come to think of it, that virtualbox seems to use something like 10-30 % of one core, anyway.
22:34:22 <ehird> how many cores you got?
22:34:27 <fizzie> Just two.
22:34:34 <ehird> me too! we're core-buddie.
22:34:35 <ehird> buddies
22:34:40 * AnMaster only has one code
22:34:42 <AnMaster> core*
22:34:45 <fizzie> The R/G/B values (each written separately) are 6-bit values, since VGA only does 18-bit colors.
22:34:57 <ehird> hmm fizzie should I not get an 8-core so we can stay core buddies? :(
22:35:00 <AnMaster> ehird, however I do have root on a Quad Core Opetron server!
22:35:08 <AnMaster> legal root
22:35:13 <ehird> pfft, quad core.
22:35:15 <AnMaster> (of course)
22:35:21 <ehird> my hypothetical 2xquad-core nehalem scoffs at you.
22:35:24 <AnMaster> ehird, model name : Quad-Core AMD Opteron(tm) Processor 1354
22:35:28 <AnMaster> don't think that is too bad
22:35:59 <fizzie> ehird: Go do 8-core if you want; I can just sum up different computers and pretend they're somehow metaphysically speaking part of the same system.
22:36:09 <ehird> fizzie: i tried that once
22:36:16 <ehird> in this room, I have 5 cores
22:36:17 <ehird> I think
22:36:33 <ehird> err 6
22:36:33 <AnMaster> I just link a few erlang nodes :P
22:36:35 <pikhq> Currently, there's only 2 cores in this room. I run old hardware.
22:36:37 <ehird> 7
22:36:41 <AnMaster> pikhq, same
22:36:47 <ehird> iMac: 2, ancient powermac: 1, iphone: 1, nintendo DS: 1, gamecube: 1, game boy advance sp: 1
22:36:53 <ehird> assuming I didn't miss anything
22:37:04 <ehird> of course, most of those cores are ridiculously underpowered...
22:37:13 <ehird> oh wait
22:37:18 <ehird> livebox runs linux so it must have some sort of cpu
22:37:18 <ehird> 8
22:37:27 <ehird> hey I don't need to buy an 8-core
22:37:30 <ehird> I have it already!
22:38:18 <ehird> It'd be nice if QBasic would work with, say, more than 80x24
22:38:19 <Azstal> ehird: the DS has two CPUs :)
22:38:19 <fizzie> Nintendo DS counts as two.
22:38:22 <ehird> Or, you know, DOS in general
22:38:24 <ehird> wait, the DS has two cpus?
22:38:30 <fizzie> There's both a 66 MHz and 33 MHz ARMs.
22:38:35 <ehird> that's some powah.
22:38:38 <Azstal> an ARM9 and ARM7, I think
22:38:47 <fizzie> ARM9 and ARM7; the ARM7 pretty much only does sound an input, though.
22:38:57 <ehird> i have 9 cores
22:39:00 <ehird> top of the range!
22:39:02 <AnMaster> night
22:39:32 <ehird> Cassette tape support Yes No
22:39:33 <ehird> aw bummer.
22:39:40 <fizzie> An unsubstantiated rumour says that in the official Nintendo dev-kit you can't really write custom code for the ARM7 anyway, there's just the Nintendo-provided binary that can handle sound-playing and other hardware functions unique to the ARM7 side.
22:39:41 <ehird> Code organization Linear Modular
22:39:47 <ehird> is that referring to the awful F2 sub browser?
22:39:52 <ehird> that hides subs from your main text?
22:40:11 <fizzie> Yes, probably. And maybe also the fact that you can actually have subs, although that's covered elsewhere too.
22:40:29 <ehird> I'm pretty sure even old BASICs had subs apart from really old ones
22:40:36 <ehird> fizzie: your code prints out \ as \\, it's causing alignment issues
22:41:02 <fizzie> Oh, I didn't de-escape that; probably didn't notice it either.
22:42:21 <fizzie> I have in this room two Athlon X2 dual-core things (sum: 4), two iBooks (sum: 6), and then all those "you can only non-seriously count these", like a DS (=8), a Symbian phone (=9), a Linksys WLAN thing (=10), and some even less-computery systems like the amplifier which has some sort of cpu/dsp dual-thing. I'm sure we can agree on some core-buddy number, though.
22:42:38 <ehird> a DS has 8 cores?
22:42:39 <ehird> What now?
22:42:40 <ehird> oh
22:42:43 <ehird> it's a running total
22:42:48 <fizzie> It's just the cumulative sum, yes.
22:43:14 <ehird> yeah, a linksys router with 10 cores would be fun
22:43:42 <ehird> so fizzie have you started up dosbox :P
22:43:56 <ehird> I recommend setting cpu cycles to 5000, it seems to run the most authentic while not being stupidly slow
22:44:10 <Deewiant> It depends on what you're running
22:44:24 <ehird> Well, you probably want >5000 for QBasic games, given their dog-slowness.
22:44:48 <Deewiant> But is that authentic speed?
22:45:12 <ehird> Well, I'm operating ont he assumption that this game was actually playable in 1995
22:45:16 <ehird> As opposed to taking one second to turn
22:45:18 <fizzie> Not yet, no. I'm still just considering. For some reason dosbox's keyboard layout wasn't automagically okay either.
22:45:22 <Deewiant> My point was that 'authentic speed' depends on what you're doing, the emulation is slower for some apps than others
22:45:44 <ehird> Mm.
22:45:48 <fizzie> And I've seen some pretty unplayable qbasic "games".
22:46:18 <ehird> Even with cpu cycles 53000 it's too slow on some things
22:46:30 <Deewiant> Raising CPU cycles slows stuff down after a certain point
22:47:00 <Deewiant> There's the 'dynamic' mode, or whatever it was called, which often works best
22:47:09 <ehird> I'll try that
22:47:26 <fizzie> That's the on-x86-only binary translation thing, I guess.
22:48:08 <fizzie> Deewiant: Since you're such a dosbox gooroo, how do I get my keyboard to work right? By default this seems like the US layout.
22:48:10 -!- kar8nga has quit (Read error: 110 (Connection timed out)).
22:48:12 <ehird> Deewiant: that changed absolutely nothing. It just sticks at 3000 cycles.
22:48:21 <ehird> oh
22:48:22 <ehird> it's core=
22:48:23 <ehird> not cycles
22:48:25 <ehird> dur
22:48:31 <Deewiant> ehird: Then it was something else, I don't remember what it's called but it removes the cycle count from the title bar
22:48:44 <ehird> core=dynamic
22:48:49 <ehird> hmm
22:48:53 <ehird> it sstill says cpu cycles, though
22:49:09 <Deewiant> fizzie: I just spent half a day a few weeks back trying to get the layout to work right, the best I could do was an almost-working (backspace is both backspace and caps lock) US
22:49:22 <ehird> I can't type \, it shows up as #.
22:49:36 <Deewiant> It's not really friendly to non-US layouts
22:49:42 <ehird> This is a US layout.
22:49:46 <ehird> Albeit an Apple one.
22:49:49 <Deewiant> I'm talking to fizzie
22:49:52 <ehird> ah
22:49:54 <Deewiant> Or in general
22:49:56 <oerjan> <ehird> I can't type #, it shows up as #. <-- say what?
22:49:58 <Deewiant> Not to you in particular, anyway
22:50:06 <ehird> oerjan: in DOSBox.
22:50:14 <ehird> My \ key is just above my (one line) enter key.
22:50:39 <oerjan> That's strange, my # key is above 3.
22:50:40 <Deewiant> So anyway, a colemak layout with swapped caps lock and backspace was pretty much impossible to get to work
22:50:50 <Deewiant> In Windows, I got it to work really easily though
22:51:10 <ehird> Okay, even with cpu cycles: max this game is ridiculously slow
22:51:57 <fizzie> Oh, right, there's that ctrl-f1 keymapper, can that do something useful?
22:51:58 -!- Corun has joined.
22:52:05 <Deewiant> I couldn't get it to work right
22:52:13 <Deewiant> It thought right alt was page down
22:52:16 <Deewiant> And other stuff like that
22:52:31 <fizzie> Maybe I'll just use the US layout since it seems to work right.
22:52:33 <Deewiant> Oh, there were two possible keyboard modes in the .conf file
22:52:55 <Deewiant> The other one worked like that (not at all) and the other one worked partly, can't remember how exactly
22:53:08 <Deewiant> In the end I just stuck with US with broken backspace
22:53:15 <ehird> broken backspace, that must be a pain
22:53:21 <Deewiant> No, backspace works
22:53:34 <Deewiant> ehird:
22:53:34 <Deewiant> ehird: 2009-03-14 23:49:08 ( Deewiant) fizzie: I just spent half a day a few weeks back trying to get the layout to work right, the best I could do was an almost-working (backspace is both backspace and caps lock) US
22:53:43 <ehird> ah
22:53:56 <Deewiant> I have a ZX Spectrum+ on which backspace is 0 over 90% of the time
22:54:00 <Deewiant> That's a pain
22:54:01 <ehird> Anyway, fizzie, I recommend you set:
22:54:03 <ehird> cycles=max
22:54:05 <ehird> in the configuration
22:54:12 <ehird> It's still dog slow, but you can write QBasic programs and have them finish before you die.
22:54:47 <Deewiant> "D'oh, typo. D'oh, zero! D'oh, zero! (...) Yay, backspace! D'oh, didn't hold it down, still 60 zeroes before my typo"
22:55:05 <fizzie> Also the mouse won't work, but I'm not sure I'd be using that much. F6 for window-swapping feels a bit silly though.
22:55:31 <Deewiant> I didn't have mouse trouble
22:56:10 <fizzie> If I click the window so that it captures the mouse, I can only move the cursor up and down on the rightmost column of the screen.
22:56:53 <fizzie> I guess the more important thing is that I have no clue what to do with qbasic.
22:57:14 <ehird> fizzie: You type, and F5 runs.
22:57:18 <ehird> Ctrl-Break terminates.
22:57:23 <ehird> You can open, save, find, replace.
22:57:25 <ehird> And F2 browses subs.
22:57:30 <ehird> For all else, see your manual. :P
22:57:36 <ehird> (Yes, I am deliberately misinterpreting)
22:58:19 <ehird> Whoa. I just sped my program up like 5x by using POKE instead of pset.
22:58:19 <ehird> :D
23:00:02 <fizzie> How did you interrupt this thing again? I didn't follow that part of the conversation. :p
23:00:10 <ehird> Ctrl-Break.
23:00:18 <ehird> Which doesn't work for me but there you go
23:00:38 <fizzie> It didn't really want to work for me either.
23:00:46 <ehird> fizzie: Try alt-Break.
23:00:48 <ehird> Just Break.
23:00:49 <ehird> Shift-Break.
23:00:50 <ehird> etc.
23:00:57 <ehird> Ctrl-Shift-Break. blah blah
23:01:04 <fizzie> Alt-Break changed the window title to be QBASIC PAUSED, that's about it.
23:01:29 <ehird> hmm second
23:02:12 <ehird> aha
23:02:14 <ehird> fizzie: ctrl-break ESC
23:02:24 <ehird> err, but alt-braek froze it
23:02:25 <ehird> don't do tha
23:02:27 <ehird> trestart dosbox :P
23:02:43 <fizzie> Alt-break here just pauses it, and a second alt-break restores.
23:02:48 <ehird> Ah.
23:02:51 <ehird> Then ctrl-break ESC.
23:02:54 <ehird> Huh, also, a note
23:03:04 <ehird> For actual lines, use LINE, it's faster than repeated POKEs
23:03:10 <ehird> POKE is just fast for single pixel thangz.
23:03:19 <fizzie> Sure, a qbasic loop is slow-as-molasses.
23:03:39 <ehird> Did ctrl-break esc work for you?
23:04:01 <fizzie> It had already finished; I'll try when I get stuck next.
23:04:24 <ehird> I'm being transported back to good old days I never had :P
23:05:26 <fizzie> I had some qbasic days, and I'm not sure they were especially good. I think the Commodore kids and such got all the good old days, while PC people just got the sucky old days.
23:05:43 <ehird> Well, QBasic is pretty cool.
23:09:31 <ehird> aha
23:09:32 <ehird> fizzie: try
23:09:37 <ehird> ctrl-scrollock ESC
23:10:04 <ehird> yep
23:10:05 <ehird> it works
23:10:07 <ehird> in fact
23:10:10 <ehird> just ctrl-scrollock
23:10:11 <ehird> no ESC
23:10:12 <ehird> works perfectly
23:10:42 -!- kar8nga has joined.
23:10:46 <fizzie> Yes, seems to. Good.
23:11:10 <ehird> Demoscene law dictates that I now write a mandelbrot renderer that twirls it around.
23:11:35 <fizzie> It will not be very fast.
23:11:51 <ehird> Hey, a mandelbrot viewer came with QBasic, apparently.
23:11:55 <ehird> It's gotta be possible.
23:12:02 <fizzie> Sure, just not very fast.
23:12:07 <ehird> Sides, I can use inline machine code.
23:12:45 <fizzie> Oh yes, the comfortable solution.
23:13:07 <ehird> Well, there's nothing you can't do with QBasic!
23:14:20 <fizzie> ehird: Anyway, here's one palette-rotation example for you, if you can bother waiting for it to finish drawing: http://zem.fi/~fis/prot.txt
23:14:43 <ehird> That's scarily ... organized.
23:15:25 <ehird> fizzie: Heyyy, that's my fractal!
23:15:30 <ehird> :DD
23:15:38 <ehird> Whoa it changes colour.
23:15:40 <fizzie> Right, it's the ehird fractal.
23:15:42 <ehird> Best program ever.
23:17:27 <ehird> fizzie: Try replacing (X AND Y) with (X OR Y).
23:17:32 <fizzie> Yes, well, "changes colour" is pretty much what you get with palette-messups. As far as graphics chipsets go, VGA is pretty boring.
23:17:41 <ehird> It's the same!
23:18:35 <ehird> fizzie: wtf, XOR produces it too
23:18:39 <ehird> is there any operation that DOESN'T produce it?
23:18:52 <ehird> XOR's pallette changing is diagonal, which is nice.
23:19:01 <Deewiant> Are those bitwise or boolean operations?
23:19:05 <ehird> Bitwise
23:19:16 <ehird> fizzie: (X + Y) gives a smooth gradient
23:19:42 <fizzie> Yes, that's just "manhattan-distance from (0,0)" and the palette happens to be a smooth gradient.
23:19:49 <ehird> haha :D
23:20:29 <fizzie> X IMP Y gives it to you in a bit different orientation, but most bitwise ops do "look" rather similar when done that way.
23:20:47 <fizzie> X EQV Y is perhaps a bit different-looking.
23:21:06 <ehird> err it is
23:21:07 <ehird> ?
23:21:09 <ehird> it looks the same to me
23:21:13 <fizzie> It also has a bit of a "straight line looks curved" visual illusion going on, or maybe it's just my eyes that are wonky.
23:21:20 <ehird> oh
23:21:23 <ehird> fizzie: EQV is XOR
23:21:24 <ehird> for this
23:21:34 <fizzie> Right, I didn't try XOR. But yes, sure.
23:21:54 <fizzie> It's just NOT (x XOR y) anyway.
23:21:58 <ehird> I wish it wrapped on overflow instead of errored
23:22:38 <ehird> fizzie: anyway, that palette changing would indeed be useful to animate without redrawing anyhting
23:22:49 <oerjan> EQV and XOR are dual. (NOT x) EQV (NOT y) = NOT (x XOR y)
23:23:42 <ehird> Hmm, how do you convert a string to an int...
23:24:05 <fizzie> The canonical palette-animation example is an animated sea: just allocate 8 or 16 colors for a blue-white gradient, use that to draw your sea tiles, then you can rotate that 16-color block to get waves.
23:24:52 <ehird> http://zem.fi/~fis/qbc.html#QEw4MDI1
23:25:02 <fizzie> CVI(string) converts to an integer.
23:25:11 <fizzie> And CVL to long.
23:25:22 <ehird> ah
23:25:43 <ehird> are you sure?
23:25:49 <ehird> as in CVI("123")=123
23:25:53 <fizzie> Not really, no.
23:25:58 <ehird> VAL converts a string representation of a number to a number.
23:25:59 <ehird> it's VAL.
23:26:17 <ehird> Okay, this is very slow but pretty.
23:26:24 <fizzie> CVI is the inverse of MKI$, which is for formatted int-printing.
23:26:38 <fizzie> STR$/VAL seems to be the human-readable pair.
23:26:44 <ehird> Aw, overflow.
23:26:45 <fizzie> I don't really remember any of this stuff.
23:27:00 <ehird> Okay.
23:27:02 <ehird> *Hokay.
23:27:07 <ehird> What now, hrm
23:28:07 <ehird> http://library.thinkquest.org/19436/download/gorilla/gorilla.bas
23:28:12 <ehird> gorilla.bas; albeit double spaced.
23:28:26 <Deewiant> Exciting!
23:28:27 <fizzie> That thing would be useful (in a very limited sort of way) for quick prototyping of... well, something; if it were, you know, quick.
23:28:41 <ehird> "thing"?
23:28:46 <ehird> QBasic?
23:28:49 <fizzie> qbasic.
23:29:02 <ehird> I am very upset you do not consider it a viable programming choice :P
23:29:31 <ehird> GORILLAS RUNS :D
23:29:41 <oerjan> *RUN
23:30:17 <oerjan> or possibly, *GORILLA
23:31:21 <ehird> IF again$ = "y" THEN GOTO spam
23:33:26 <ehird> haha, setting gravity=-1 in gorillas messes everything up
23:33:43 <ehird> velocity 1? the banana just shoots off into space. veeery slowly.
23:38:39 <fizzie> Incidentally, VGA can do this unchained mode, where you get four 64K planes, with plane 0 containing pixels 0, 4, 8, .., plane 1 containing 1, 5, 9, ... and so on; then you can set a write mask of 0b1111 and write a pixel to all four planes simultaneously; that's quite a bit faster if you just need to write the same value to all pixels.
23:39:22 <fizzie> (And of course it lets you use all the 256K memory a VGA card has, so you can do double-buffering with hardware-assisted page-flipping.)
23:39:29 <ehird> Hmm
23:39:34 <ehird> Is there any way to have more than one palette at a time?
23:39:44 <ehird> Like, changing the palette in the middle of a redraw?
23:39:49 <fizzie> It's just that things are more complicated then, and whenever you add a bit of qbasic logic, things get real slow real fast.
23:40:00 <ehird> Then you could have >256 colours
23:40:39 <fizzie> I don't think I've seen such tricks done on a PC, really. I don't think you can get any interrupts at particular raster-lines or anything.
23:40:54 <ehird> Mm. So drawing is atomic, then.
23:40:54 <fizzie> You'd need some pretty careful cycle-counting, at the very least.
23:41:11 <fizzie> Not very doable in a qbasic program.
23:41:16 <ehird> fizzie: what if you drew only some of the pixels per redraw, and flashed between them really fast? I guess the hardware isnt' fast enough to make that plausible
23:41:48 -!- MigoMipo has quit ("QuitIRCServerException: MigoMipo disconnected from IRC Server").
23:42:11 <ehird> lament: link to haccordion?
23:42:15 <ehird> Since I have leopard now
23:43:05 <fizzie> Oh, I'm sure you can flash between two screens at 60hz (it's just a couple of writes to the VGA registers to switch the display start offset) so you can draw two pictures with close-enough colors, and that way get colors between the ones in the (static) palette, if you don't mind the horrible flickering.
23:43:15 <ehird> fizzie: in asm it could be fast enough. maybe?
23:43:26 <ehird> but yeah, N segments gives you 256*N colours
23:43:39 <ehird> so if you have a segment per pixel the possibilities [for your epilepsy] are boundless
23:44:30 <ehird> "Okay this is subjective because it depends on your definition of large. When I say large, I mean about 6 gigs or so. Because your company's source tree is probably that large."
23:44:34 <fizzie> You can fit up to four frames of that 320x200 256-color mode on the standard video memory. I really don't have a clue how slow the palette reprogramming is.
23:44:34 <ehird> That is one shit company.
23:47:37 <ehird> Hokay, mandelbrot.
23:47:42 <ehird> Let's see if I can't done figure this out?
23:52:38 <ehird> er wait
23:53:30 <ehird> Oh dear, my mandelbrot leavs a flat nothing,.
23:56:34 <oerjan> -2 to 2 on both axes if you want all of it
23:56:36 <oerjan> iirc
23:56:44 <ehird> Actually, it's just a bug.
23:56:46 <ehird> Well.
23:56:49 <ehird> Maybe not quite a bug, just.
23:56:52 <ehird> It takes 5 years.
23:58:07 <fizzie> I think the (-2,-2) .. (2,2) range is not the aesthetically most pleasing one. I don't remember what I've used, though. That certainly should contain all of it, anyway, so you can fine-tune.
23:58:48 <oerjan> might do something refining, painting larger squares first
23:59:16 <ehird> Oh well, I'll stick to simpler fractals.
23:59:27 <ehird> I can render a sierpinski in 4.5 seconds, you know.
23:59:44 <ehird> Actually it's more like 8 seconds
←2009-03-13 2009-03-14 2009-03-15→ ↑2009 ↑all