←2010-10-31 2010-11-01 2010-11-02→ ↑2010 ↑all
00:00:09 * Sgeo digs up stuff from his past
00:00:10 <Sgeo> http://i.imgur.com/S6pDQ.png
00:00:15 <Sgeo> Apparently this is OfficeSuite
00:00:22 <elliott_> * Sgeo digs up stuff from his past
00:00:24 <elliott_> don't you do that all day?
00:00:41 <fizzie> You an probably use the first, third, fifth and so on megabytes, though.
00:00:47 <fizzie> s/an/can/
00:01:19 <Sgeo> At some point, I will feel nostalgic about #esoteric
00:01:22 <fizzie> Or maybe zeroth, second and fourth; depending on how you number those.
00:01:23 <Sgeo> After #esoteric dies
00:01:55 <Sgeo> Or IRC channels may be longer lived than other communities
00:01:59 <Sgeo> That seems likely
00:02:03 <Sgeo> But still
00:02:09 <Sgeo> Will Freenode really be around forever?
00:02:33 <olsner> fizzie: or you can use all of them as long as you account for the mirroring :)
00:02:56 -!- MigoMipo has quit (Quit: Quit).
00:03:06 <fizzie> olsner: Yes, well, the addresses, sure; but not the physical megabytes.
00:04:54 <elliott_> "On most newer computers starting with the IBM PS/2, the chipset has a FAST A20 option that can quickly enable the A20 line. To enable A20 this way, there is no need for delay loops or polling, just 3 simple instructions."
00:04:59 <elliott_> THAT SOUNDS NICE NO I/O OK THX
00:05:06 <elliott_> "However, this is not supported everywhere and there is no reliable way to tell if it will have some effect or not on a given system. Even worse, on some systems, it may actually do something else like blanking the screen, so it should be used only after the BIOS has reported that FAST A20 is available. Code for systems lacking FAST A20 support is also needed, so relying only on this method is discouraged."
00:05:09 <elliott_> HAHAHAHAHAHAHAHAHAHA
00:05:13 <elliott_> "Another way is to use the BIOS."
00:05:15 <elliott_> yes that's better thank you
00:05:43 <Sgeo> Please tell me that you're researching history
00:05:54 <Sgeo> Actually, I have no idea what you're trying to do
00:06:17 <elliott_> writing a bootloader
00:06:45 <olsner> writing a bootloader *is* researching history
00:07:20 <olsner> it's actually something like an accelerated trip through all revisions of the x86 isa and bios api:s
00:08:22 <Sgeo> That's only if you want to support more than just your own machine
00:08:39 <Sgeo> I assume
00:09:38 <olsner> most of the steps you need to do on any machine
00:10:22 <elliott_> cmp word [magic], word [MIRROR_MAGIC]
00:10:26 <elliott_> doesn't work, what a surprise!
00:10:43 <Sgeo> So why "all revisions"?
00:11:04 <elliott_> Sgeo: because it starts off in 16-bit real mode
00:11:15 <elliott_> and you use the bios to get shit done
00:11:24 <elliott_> then you do the, cough, fun dance to get into protected mode
00:11:24 <Sgeo> I never learned x86 stuff
00:11:27 <elliott_> then if you're on 64-bit
00:11:32 <elliott_> you do the fun dance to get into long mode from there
00:11:34 <Sgeo> Or x64 stuff
00:11:38 <elliott_> *x86-64
00:11:50 <Sgeo> Anything sinful about abbreviating it to x64?
00:11:53 <elliott_> yes
00:11:55 <elliott_> i'll stab you
00:11:58 -!- elliott_ has changed nick to elliott.
00:12:01 -!- elliott has quit (Changing host).
00:12:01 -!- elliott has joined.
00:12:04 <Sgeo> With your _?
00:12:22 <elliott> yes
00:12:27 <elliott> olsner: http://wiki.osdev.org/A20_Line#Testing_the_A20_line dear god this is long and ugly
00:12:29 <elliott> i don't have that kind of space
00:12:32 <elliott> gotta OPTIMISE
00:13:02 <catseye> *OPTOMISE
00:13:30 <elliott> olsner: maybe i'll just deal with the duplicated megabytes :D
00:13:33 -!- sftp has quit (Remote host closed the connection).
00:13:59 <fizzie> You could do the A20 dance outside your bootloader.
00:14:10 <elliott> fizzie: after I get into protected mode???
00:14:18 <fizzie> Assuming reasonable-sized kernel, anyway.
00:14:18 <elliott> that sounds... fun
00:14:43 <catseye> also VICE does not build out of the box on NetBSD because of a *syntax error*.
00:14:51 <fizzie> Yes, I don't see why not; except that then you don't really have the BIOS helping you.
00:15:26 <olsner> any of the A20 methods listed there (except for anything calling into bios) should work from protected mode afaict
00:16:37 <catseye> for (d = hid_start_parse(report, 1 << hid_input, id) {
00:16:37 <catseye> }
00:16:40 <catseye> THIS IS NOT C, PEOPLE
00:16:50 <elliott> catseye: i, uh, wow.
00:17:14 <elliott> olsner: I'm enabling the A20 line with the BIOS.
00:17:17 <fizzie> All this low-level talk reminds me of this nice paper floating around on how to do really fast "software" routing tables with a clever (ab)use of the cache systems: http://citeseerx.ist.psu.edu/viewdoc/download?doi=
00:17:21 <elliott> Because the alternative is talking to the keyboard and I have am oral objection to that.
00:17:28 <elliott> *a moral
00:17:40 <fizzie> *An oral.
00:19:30 <elliott> 0x0F is "pure white on black", yeah?
00:19:35 <elliott> in vgatextspeak
00:19:43 -!- Jack has joined.
00:19:43 <elliott> that's how it appears here
00:19:53 <elliott> I now have a snazzy error message:
00:19:58 <Jack> hey
00:19:59 <elliott> boot <invert>A20?</invert>
00:20:01 <elliott> hello Jack
00:20:09 <elliott> Jack: this channel is about esoteric programming languages
00:20:09 -!- Jack has changed nick to Guest20118.
00:20:16 -!- Guest20118 has changed nick to Jackoz.
00:20:27 <Jackoz> is it an autoreply?
00:20:52 <elliott> no
00:20:57 <Jackoz> oh :)
00:21:06 <elliott> we get tons of people here thinking it's about that *other* type of esoterica.
00:21:11 <elliott> :)
00:21:17 <Jackoz> Ok, btw I know about that mate
00:21:31 <Jackoz> actually I'm developing an esoteric language
00:21:33 <Sgeo> http://i.imgur.com/WjGPH.png
00:21:38 <Sgeo> Worst. UI. Ever
00:21:43 <elliott> Jackoz: cool
00:21:45 <Jackoz> that's why I joined this channel, shortly I'll need some feedback :D
00:21:56 <Sgeo> Suppose I want to move stuf from 200N 200E to 323S 370E
00:22:02 <elliott> prepare the "your language sucks" cannons, men!
00:22:10 <Sgeo> I put the old location in "Rotate Old Prop Around"
00:22:19 <Sgeo> I put the new location in "Offset Values"
00:22:21 <Jackoz> :(
00:22:35 <Sgeo> Except for Height offset, which is the difference in heights
00:22:38 <Sgeo> I wish I was joking
00:22:58 <Jackoz> actually the only real problem is that it is stack based, but I feel it is not enough
00:23:08 <elliott> Jackoz: we're actually nice! on occasion.
00:23:09 <elliott> fizzie: Int 15/AX=2402h - SYSTEM - later PS/2s - GET A20 GATE STATUS
00:23:14 <elliott> fizzie: See, I can just use the BIOS for everything!
00:23:21 <Jackoz> but having a normal "variable declaration" language seemed too overkill
00:23:28 <elliott> Jackoz: stack is nice!
00:23:34 <Jackoz> I have to find something in the middle, so maybe I can get some inspiration here
00:23:39 <elliott> "not enough" is always almost a bad impulse, keeping things simple and pure is what leads to a gem of a language
00:23:43 <elliott> imo
00:23:44 <Sgeo> I'm having an affair with a stack based language
00:23:46 <elliott> but i'm interested, so go on
00:23:54 <elliott> Jackoz: Sgeo is our friendly channel bot
00:24:28 <Sgeo> channel bot write in Factor for great justice
00:24:52 <Sgeo> ^^too coherent for a fungot-like bot
00:25:06 <Sgeo> Hey, fungot doesn't detect on fungot-
00:25:07 <fungot> Sgeo: using the odd syntax for one
00:25:20 <Sgeo> -fungot-
00:25:21 <fungot> Sgeo: toi ei oo fnord ja kanava fnord? l)
00:25:29 <elliott> Jackoz: a bot with a tendency to call the other bots.
00:25:32 <Jackoz> elliott: I'm trying to keep it fully functional with powerful but obscure operators, but this implies having to manipulate the stack a lot
00:25:40 <fizzie> elliott: "later PS/2s" -- surely you're not going to limit yourself on such!
00:25:44 <elliott> stack manipulation is fun, but ok :)
00:25:47 <elliott> fizzie: Oh yes I am.
00:25:51 <Sgeo> Just to clarify, I'm not actually a bot
00:25:54 <elliott> fizzie: *to such
00:26:00 <Sgeo> Well, maybe a nostalgia-bot
00:26:04 <elliott> Jackoz: he's also wired to say he's not a bot whenever his botness is mentioned :)
00:26:19 <elliott> fizzie: They're technically "optional", but the amount that I care is zero. :P
00:26:26 <Jackoz> Sgeo: do some goole searches for me!
00:26:30 <Jackoz> *google
00:26:52 <Sgeo> There's no way I'm actually failing a Turing-test, am I?
00:27:16 <elliott> What we have learned here: Sgeo truly is indistinguishable from a simple computer program.
00:27:30 <elliott> Or, y'know, [some less cynical conclusion about the way people react to other people when they have assumptions].
00:27:42 <fizzie> Sgeo: The fungot-not-replying thing was probably that one occasional bug it has that I haven't managed to catch.
00:27:42 <fungot> fizzie: i don't need that much range anyway.
00:27:45 <Jackoz> elliott: just to give you an idea http://jacoposantoni.com/impossible/operators (but many operators aren't documented there yet)
00:27:57 <Sgeo> testing. fungot-like. testing
00:27:57 <fungot> Sgeo: yes, i'm just trying to understand syntax-case. so i'll be here tomorrow for a response on c.l.s
00:28:09 <fizzie> (And apparently 'e doesn't think it's worth fixing anyway.)
00:28:22 <elliott> cmp al, 1
00:28:22 <elliott> je protect
00:28:22 <elliott> gotta be a simpler way of writing that
00:28:23 <elliott> oh well
00:28:39 <Sgeo> comp.lang.???
00:28:40 <Sgeo> scheme?
00:28:43 <Sgeo> smalltalk?
00:28:46 <fizzie> Scheme.
00:29:01 <fizzie> syntax-case is a tricky Sceme macro thing.
00:29:03 <elliott> Jackoz: just so you know, trash is usually called "drop"
00:29:10 <elliott> Jackoz: and dupe dup
00:29:24 <elliott> Jackoz: this is a good language
00:29:34 <Jackoz> elliott: thanks, I'll take it into account :)
00:29:41 <Jackoz> elliott: that's why I joined here
00:29:44 <elliott> Jackoz: you should see some of the first esolangs people come up with :)
00:29:50 <elliott> they can be truly awful
00:30:38 <Sgeo> elliott, it's impolite to make someone laugh at food-time
00:30:41 <Jackoz> elliott: I was thinking about having many stacks with a default behaviour that is usually good without any additional thought from the developer but I wasn't unable to come up with anything yet
00:30:43 <Sgeo> I could be dead thanks to you
00:31:01 <elliott> Sgeo: surely you're a bot now
00:31:10 <Jackoz> Sgeo !search pr0n
00:31:20 <elliott> boot sector is 168 bytes, that's over a *fifth* of the maximum!
00:31:28 <Jackoz> this damn bot, it needs some fixes
00:31:39 <elliott> In fact, it's basically a third.
00:31:57 <Sgeo> Who said I have to give the results back to you? *ponders* I don't think you want the results
00:32:20 <Sgeo> </nasty>
00:32:41 <elliott> fizzie: You! Tell me why my segments go all strange after going into protected mode.
00:33:48 <catseye> it's building openssh
00:33:52 <catseye> ...
00:33:54 <catseye> that's why!
00:34:29 <elliott> OH!
00:34:41 <elliott> Because video memory is 0xB8000 on the other side of the divide, not 0xB800.
00:34:43 <elliott> Duh.
00:35:16 <elliott> Now it works in qemu but not bochs -- which is *never* a good sign.
00:37:15 <Sgeo> ...how does that happen?
00:38:48 <elliott> Because bochs is anal and slow and qemu is lax and fast.
00:39:25 <elliott> 00134663903e[CPU0 ] interrupt(): gate descriptor is not valid sys seg (vector=0x0d)
00:39:25 <elliott> 00134663903e[CPU0 ] interrupt(): gate descriptor is not valid sys seg (vector=0x08)
00:39:37 <elliott> 00134663903e[CPU0 ] interrupt(): gate descriptor is not valid sys seg (vector=0x08)
00:39:39 <elliott> whoops
00:39:45 -!- FireFly has quit (Quit: swatted to death).
00:39:48 <elliott> so lol something is up.
00:40:13 <olsner> something's causing an interrupt, and you probably haven't set up an interrupt descriptor yet
00:40:29 <elliott> olsner: ah.
00:40:32 <elliott> bochs is a bitch, then
00:41:10 <elliott> olsner: wrong!
00:41:13 <elliott> olsner: well
00:41:19 <elliott> I set up idtr using yours (dw 0 dd 0)
00:41:26 <elliott> olsner: is it triggering despite that or something?
00:41:28 <elliott> and i have to set up more?
00:41:30 <elliott> if so WOOOOOO.
00:41:57 <olsner> you don't have to set up more as long as you have interrupts disabled and don't do anything wrong :)
00:42:10 <elliott> olsner: clearly I do, because it happens anyway :)
00:42:15 <elliott> lidt [idtr]
00:42:20 <elliott> align 4
00:42:21 <elliott> idtr:dw 0
00:42:21 <elliott> dd 0
00:42:28 <Sgeo> It occurs to me that I have a record of my Opera usage
00:42:35 <olsner> elliott: you just have to stop doing something wrong that causes the interrupts
00:42:42 <Sgeo> So if I'm ever tempted to try Opera again, say in a few years...
00:43:03 <olsner> elliott: did you disable interrupts?
00:43:17 <elliott> olsner: probably not!
00:43:34 <elliott> olsner: i should figure out how!
00:43:54 <Sgeo> I shouuld learn how this stuff works
00:43:54 <elliott> olsner: wait yes i did
00:43:56 <fizzie> CLI, isn't it?
00:43:59 <elliott> cli
00:43:59 <elliott> lidt [idtr]
00:44:00 <fizzie> That looks like a pretty small IDT.
00:44:02 <elliott> lgdt [gdtr]
00:44:04 <Sgeo> Especially if I want to build a computer at some point
00:44:05 <elliott> fizzie: blame olsner
00:44:22 <elliott> Sgeo: all of this is utterly irrelevant to the trivial "stick a few components together in a case".
00:44:32 <elliott> the latter is like lego.
00:44:32 <Sgeo> I meant in virtual worlds
00:44:46 <Sgeo> I know how to stick components in the real world together
00:44:47 <elliott> Sgeo: !google typical
00:45:02 <fizzie> The first few (19) entries of the idt can be invoked by processor-generated exceptions.
00:45:05 <Sgeo> ..?
00:45:12 <Sgeo> Oh
00:45:25 <Sgeo> You're not giving me advice, you're saying that I'm being typical me
00:45:33 <fizzie> vector=0x0d there is a general protection fault.
00:45:35 <Sgeo> You are typically typical you
00:45:37 <Sgeo> So what?
00:45:43 <elliott> fizzie: Well that's not good.
00:45:47 <fizzie> And vector=0x08 is a double fault.
00:45:51 <elliott> other_side:
00:45:52 <elliott> mov word [0xB8000+ebx+2], 0x0F21
00:45:52 <elliott> x:hlt
00:45:52 <elliott> jmp x
00:45:57 <elliott> What's so protection-faulty about that?
00:47:17 <fizzie> Have you reloaded your ds after the jump to protected mode? If ds was zero before, I would assume it still has that 64k limit. But really, I haven't done this before: ask oelsner.
00:47:28 <elliott> ølsner
00:47:41 <fizzie> Oerrrrsleer.
00:47:45 <elliott> But fizzie is right!
00:47:50 <elliott> push DATA_SEGMENT pop ds works just fine.
00:48:46 <fizzie> Ommina sleep now, though; good luck with protecting your modes.
00:49:09 <elliott> Hey, look!
00:49:14 <elliott> fizzie: catseye: olsner: BOOTLOADER COMPLETE
00:49:15 <elliott> (sort of)
00:49:19 <elliott> And it's 200 bytes exactly.
00:49:19 <olsner> elliott: sweet
00:49:32 <elliott> That includes the "jmp KERNEL_SEGMENT:0" at the very end that I'm not sure will work entirely properly here.
00:49:41 <elliott> olsner: I should probably reset all the registers like you do.
00:50:23 <elliott> But still, 200 bytes to read the kernel from a floppy disk, giving diagnostics along the way, enable the A20 line (giving "boot? <inverted>A20</inverted>" if it doesn't work), jump into protected mode and jump to my kernel.
00:50:24 <elliott> Not bad.
00:50:31 <elliott> brb
00:50:32 <olsner> elliott: yes, having all of them point to a proper 32-bit data segment is useful
00:53:17 <catseye> that's frightening
00:58:29 -!- FireFly|n900 has joined.
00:58:35 <FireFly|n900> Hi
00:59:18 <FireFly|n900> Golf a BF infinite loop code fragment that can be inserted in any valid brainfuck program
00:59:33 <FireFly|n900> Would +[]+[] be the shortest possible?
01:01:01 <Ilari> '[]+[]'?
01:01:25 <FireFly|n900> Hm
01:01:36 <FireFly|n900> I suppose that works
01:02:34 -!- FIQ has joined.
01:04:23 * Sgeo wonders if he can find his Haskell BF interpreter
01:05:33 <pikhq> FireFly|n900: Define the Brainfuck.
01:07:51 <Jackoz> in any case you should be able to wrote a BF interpreted in any language in just a couple of minutes
01:08:08 <Jackoz> *interpreter
01:08:17 <pikhq> Try writing one in Malbolge.
01:08:26 <Jackoz> except Malbolge :)
01:08:31 <pikhq> (if you can, you win all the Internet points)
01:08:34 <Jackoz> I was excluding esoteric languages actually
01:08:38 <FIQ> brb write one in MSL :D
01:08:46 <pikhq> There's non-esoteric sub-Turing languages.
01:09:04 * Sgeo was about to o.O, but SQL would be one, right?
01:09:19 <Sgeo> Oh, and "non-programming" languages like HTML
01:09:20 <pikhq> SQL is indeed one.
01:09:21 <Jackoz> it depends on which extensions of SQL are available
01:09:30 <Jackoz> HTML is not a programming language
01:09:33 <pikhq> Sgeo: HTML is still a language, though.
01:09:34 <Jackoz> it's a markup language
01:09:43 <pikhq> Yup, for Hyper Text.
01:10:06 <Sgeo> English would count as TC, right?
01:10:16 <Jackoz> why not?
01:10:26 <Sgeo> Are there any non-TC natural languages/
01:10:42 <Jackoz> you can easily define a corrispondence between a turing complete language and the english language, providing the right semantics
01:11:15 <Ilari> Also, I don't think it would be easy to write BF interpretter in any esolang I have designed (I actually have more than that Pointer-B mess...)
01:11:43 <Sgeo> Is Ancient Egyptian TC?
01:12:20 <Jackoz> Sgeo: are you assuming the semantics as they intended it?
01:12:57 <Jackoz> in any case Egyptians didn't have any 0 concept
01:13:04 <catseye> Sgeo: I think we can safely say "yes" to that
01:13:29 <Jackoz> so
01:13:41 <Jackoz> I'm not sure that hieroglyps are a TC language
01:13:51 <Jackoz> at least not using their original semantics
01:14:10 <pikhq> Jackoz: Hieroglyphs were an orthography for a language.
01:14:15 <catseye> Jackoz: I would be *extremely* surprised if they did not have a concept for "nothing"
01:14:33 <catseye> actually make that *****extremely*****
01:14:38 * Sgeo was thinking "off", but just realized how riduculous that was
01:14:38 <Jackoz> pikhq: it's much more than that
01:14:50 <Sgeo> riduuuuuuuculous
01:14:54 <Sgeo> </elliott>
01:15:06 <Jackoz> pikhq: hieroglyps are far more esoteric as normal languages since they were used either to express words eithers as just word fragments
01:15:28 <Sgeo> My English parser broke.
01:16:09 <Jackoz> sorry, english is not my mother language and I'm watching a movie so my attention is partially here
01:16:12 <pikhq> My English lexer *also* broke.
01:16:31 <pikhq> And my Japanese lexer sees funny squiggles.
01:16:32 <Jackoz> in any case you shouldn't have reached parsing phase, you should have stopped before.
01:16:57 <pikhq> Jackoz: English speakers have highly accepting lexers.
01:17:55 * Sgeo now ponders where the term "lexing" came from
01:17:55 <Jackoz> catseye: they had the concept of zero intended as perfection or completion but it wasn't, strictly talking, a numeral concept
01:18:42 <catseye> Jackoz: You don't need numerals to build a Turing Machine, though.
01:19:04 <Jackoz> catseye: no, but I think you need the concept of zero intended as zero :)
01:19:23 <Sgeo> Might the concept of words be sufficient?
01:19:37 <Jackoz> this is something somewhat trivial for us, we should ask an ancient Egyptian
01:20:01 <pikhq> Jackoz: No, you don't even need that.
01:20:07 <Sgeo> I'll just take Apophis and hand him over to the Tok'ra
01:20:14 <Sgeo> Then we can ask his host!
01:20:15 <catseye> I also wonder if "I have no money" in Ancient Egyptian was regarded as a state of perfection or completion :)
01:20:44 <Sgeo> [spoiler] but whatever
01:20:46 <pikhq> Jackoz: One could just as well have a Turing machine with an alphabet consisting of 日 and 本 instead of 0 and 1.
01:20:58 <pikhq> Doesn't even matter what the symbols *mean*.
01:23:00 <Jackoz> that's undoubtely true, but we are talking about using a language to see if it is TC
01:23:30 <Jackoz> actually you can build a TC language with any chosen alphabet, from that point of view every language is TC
01:24:07 <Jackoz> the problem in that case is that you should be able to build a partial function that describes the behaviour of the turing machine by using their already existing semantics
01:25:01 <Jackoz> without choosing an arbitrary one, just to prove its Turing completeness
01:26:33 <Jackoz> otherwise you are just proving that a language, which shares its alphabet with hieroglyps, is TC
01:26:43 <catseye> You only need a small number of verbs and nouns and adjectived to describe a Turing machine: left, right, change, check, etc. I would guess there has never been a human language in existence that has lacked these concepts, and words for them.
01:26:59 <catseye> *adjectives
01:28:04 <Jackoz> that's why Turing completeness is a concept quite useful from a theoretical point of view, but really overused all around
01:28:15 * olsner stops fiddling with protected mode and goes to bed
01:28:43 <olsner> should extend my code so it can go into long mode too
01:29:32 <Jackoz> languages that are not TC simply aren't languages used to express computations. So the fact that SQL is not TC doesn't astonish me :)
01:30:33 <Jackoz> by the way this channel should be called #pedantic, you are really all ready to push newcomers in a corner ..
01:30:40 <FIQ> yay, done
01:30:55 <FIQ> $bf(++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.) -> HelloWorld!
01:30:56 <FIQ> :D
01:33:26 -!- iamcal has joined.
01:33:26 -!- cal153 has quit (Read error: Connection reset by peer).
01:34:15 <elliott> back
01:34:23 <elliott> <catseye> that's frightening
01:34:26 <elliott> why? the size of the bootloader?
01:34:40 <elliott> <pikhq> There's non-esoteric sub-Turing languages.
01:34:41 <elliott> e.g. C
01:34:44 <elliott> at least without libc
01:34:57 <elliott> <Jackoz> by the way this channel should be called #pedantic, you are really all ready to push newcomers in a corner ..
01:35:13 <elliott> some of us -- cough pikhq -- have not learned that you're meant to start being nice once the newbie demonstrates a modicum of intelligence :)
01:36:47 <elliott> just kidding pikhq let's be friends.
01:36:49 <elliott> or something
01:37:00 <elliott> woo one of the spontaneous channel lulls
01:37:10 <elliott> Jackoz: I think it's meaningless to talk about natural languages being TC
01:37:15 <elliott> they're description languages
01:37:33 <elliott> "Is XML TC?" is a meaningless question, but XML-Prog-Lang-2000 can perfectly well be TC with its syntax in XML
01:37:46 <elliott> "Are S-Expressions TC?" is also meaningless, but Lisp is certainly Turing complete.
01:38:01 <elliott> Similarly, you could define a language out of valid English sentences, and it could be Turing complete.
01:38:10 <elliott> "Give me N gram(s) of sugar." could add N to the accumulator, etc.
01:38:31 <Jackoz> elliott: re, that was my point. I think that TC has its coolness but it is somewhat not so much significative
01:38:48 <Jackoz> it is just the best effort we've been able to do in the field of computational theory
01:39:26 <elliott> just because you can't apply the concept of turing-completeness to some things doesn't mean it's meaningless :)
01:39:33 <elliott> like saying colours aren't an ideal concept, because you can't ask what the colour of 3 is
01:40:17 <Jackoz> I don't say it is meaningless, I say that every language used to compute something is 99.9% TC
01:40:21 <catseye> elliott: I would disagree. There is a subset of English that is Turing-complete, even with the natural semantics of the sentences (no contrived meaning for what N grams of sugar is, e.g.)
01:40:39 <elliott> catseye: well sure, but it's not English that's TC
01:40:43 <elliott> just like the s-expression
01:40:46 <elliott> (define (brainfuck x) ...)
01:40:48 <elliott> doesn't prove S-expressions TC
01:40:52 <elliott> it proves Scheme TC
01:40:56 <catseye> English is more than S-expressions, though.
01:41:00 <catseye> Sentences have meanings.
01:41:02 <elliott> catseye: what that shows is that English Interpreter Deluxe is TC.
01:41:05 <elliott> catseye: well, sure
01:41:08 <elliott> but they're descriptive meanings
01:41:11 <elliott> they describe objects
01:41:16 <elliott> you could describe a turing machine
01:41:20 <elliott> etc.
01:41:29 <elliott> but you can't actually describe something that takes a Turing machine to compute
01:41:37 <elliott> (although you can describe a Turing machine that computes a certain thing)
01:41:59 <catseye> elliott: You are hopelessly confused on this point.
01:42:19 <elliott> catseye: That's an... interesting way to say "we disagree".
01:42:30 <Jackoz> just to avoid a fight, can I ask a side question?
01:42:51 <Jackoz> catseye the one of Cat's Eye Technologies?
01:42:56 <elliott> Yes.
01:43:09 <Jackoz> cool, my maximum respect to you :)
01:43:21 <Jackoz> since I remember your website from many years ago
01:43:28 <elliott> Don't believe the hype! catseye is actually a slimy, slithery snake of EVIL and LIES.
01:43:42 <catseye> elliott: If I had said "words are TC", our analogy with S-exps would make sense. But I said "English", not "words".
01:43:51 <catseye> *you
01:43:51 <Jackoz> yeah, then he tried to push me in a corner together with the others :(
01:43:53 <catseye> *your
01:44:12 <elliott> catseye: And I believe that English is a language describing (and is thus executable) objects in a sub-TC way.
01:44:15 <elliott> Well.
01:44:25 <elliott> "The contents of the tape after executing the Brainfuck program '...'."
01:44:29 <Jackoz> I wonder why elitistic nerds are also misanthropic
01:44:35 <elliott> catseye: You may be right!
01:44:39 <elliott> Jackoz: it's IRC, get over it :P
01:44:51 <elliott> Jackoz: I saw no pushing into corners, just nitpicking and discussion
01:44:58 <elliott> and when the conversation is this academic, nitpicking is important
01:45:10 <elliott> <Sgeo> My English parser broke.
01:45:21 <Jackoz> yes, some years are passed from my last IRC visit :)
01:45:23 <elliott> this is Sgeo's wonderfully polite way of saying "please restate what you last said, I couldn't understand it"
01:45:36 <elliott> ironic, i'm usually the asshole here
01:45:52 <Jackoz> it's hard to speak about academic topics when english is not your mother language
01:45:56 <catseye> Jackoz: I'm sorry if it seemed like I was pushing you into a corner; certainly not my intent, I was just arguing my position.
01:45:58 <Jackoz> I'm really trying to do my best :)
01:46:02 <elliott> Jackoz: i swear we're nice and cuddly
01:46:20 <Jackoz> nah, I'm just joking. Actually I was just trying to make you feel a little bit guilty about something
01:46:57 * Sgeo didn't mean to be an asshole
01:46:58 <elliott> Jackoz: YEAH WELL I HATE YOU TOO
01:47:07 <elliott> now back to my bootloader -- the only true friend i have
01:47:12 <Jackoz> my main concern
01:47:13 <Jackoz> is to find
01:47:14 <Jackoz> a way
01:47:19 <elliott> to talk over multiple lines?
01:47:21 <elliott> congrats :)
01:47:30 <Jackoz> to change my stack language in something different
01:47:38 <elliott> "in something different"?
01:47:42 <Jackoz> yeah, sorry, as I stated I'm not used anymore to IRC :)
01:47:44 * elliott legitimately doesn't understand
01:47:49 <elliott> oh, i do it too
01:47:53 <elliott> i'm just being silly
01:48:02 <elliott> good heuristic: lines in #esoteric are not serious 99% of the time
01:48:23 <Jackoz> I mean that just having a stack needs too many extra operations
01:48:51 <Jackoz> so I thought that here some dark-uber-mega-nerd-misantrophic-guy
01:48:55 <Jackoz> could give me a better idea
01:50:00 <elliott> well it's a bit of a vague question :)
01:50:11 <Jackoz> yes, I can get it
01:50:13 <Jackoz> my actual idea
01:50:29 <Jackoz> was to avoid variable declaration
01:50:51 <elliott> Jackoz: functional?
01:50:55 <Jackoz> but *guessing* having many stacks that are used by convention
01:50:55 <elliott> if every function has a fixed number of arguments
01:50:58 <Jackoz> yes, it is
01:51:02 <elliott> then the program is just f g x y h x y z
01:51:07 <elliott> if f has three arguments
01:51:12 <elliott> and g and h have two
01:51:16 <elliott> then that's f(g(x,y),h(x,y),z)
01:51:17 <elliott> etc.
01:51:29 <Jackoz> ok, now assume that many builtin instructions
01:51:37 <Jackoz> can work on different parameters according to the stack
01:51:46 <Jackoz> (either number of parameters, either types)
01:51:59 <Jackoz> for example .>
01:52:09 <Jackoz> computes the floor function if it finds a float onto the stack
01:52:18 <Jackoz> while it works like OCaml iter (or each)
01:52:27 <Jackoz> if it finds a collection and a lambda
01:52:27 <coppro> oh god this language looks awesome
01:52:45 <Jackoz> so that
01:52:54 <Jackoz> 2.2 .> will leave 2.0 onto the stack
01:52:55 <Jackoz> while
01:53:05 <Jackoz> {1,2,3,4}[^].> will print 1 2 3 4
01:53:28 <elliott> Jackoz: right
01:53:35 <elliott> Jackoz: so, function overloading except on a stack basically.
01:53:41 <Jackoz> yes
01:53:49 <elliott> and? :)
01:53:52 <Jackoz> this can be good but a little bit weak in certain situations
01:53:54 <elliott> just not sure what your question is
01:53:54 <elliott> ok
01:54:07 <Jackoz> my question was about not using a stack but something different :)
01:54:17 <Jackoz> maybe multiple stacks that are filled accordingly to the types?
01:54:26 <elliott> so each lambda goes on the lambda stack?
01:54:27 <elliott> etc.?
01:54:28 <Jackoz> I really don't know, I just thought that the stack was not enough
01:54:37 <Jackoz> something like that
01:54:46 <Jackoz> actually there is a lambda stack, but it is used to track execution
01:54:56 <elliott> right, "return stack".
01:55:09 <Jackoz> yes, the good old activation record
01:55:14 <elliott> Jackoz: general advice - keep it simple. your language looks interesting as it is
01:55:16 <Jackoz> of CPUs
01:55:24 <elliott> ok, it's not *hugely* esoteric, but it's definitely more esoteric than most languages
01:55:45 <Jackoz> so your personal advice is to keep it this way?
01:55:57 <elliott> personally, yes; but if you hit on something interesting, don't let me stop you :)
01:55:59 <elliott> Jackoz: maybe a queue!
01:56:01 <elliott> that would be ... odd
01:56:06 <Jackoz> rotfl
01:56:26 <Jackoz> that would be crazy
01:56:42 <Jackoz> I could implement a fuzzy rule
01:56:55 <Jackoz> that tries to execute the right implementation of the operator
01:56:58 <elliott> coppro: you want nothing more than to read my bootloader, right?
01:57:01 <Jackoz> according to what it actually finds on the stack
01:57:12 <elliott> Jackoz: well that's not fuzzy that's just function overloading isn't it? :)
01:57:19 <Jackoz> not at all
01:57:47 <Jackoz> then I was thinking about
01:57:54 <coppro> elliott: ob
01:57:57 <Jackoz> not having to pick values from the stack, or rotate them
01:58:19 <coppro> no, this language must have only one stack
01:58:22 <Jackoz> like something that is able to guess the correct operation not caring about order of parameters
01:58:24 <elliott> coppro: http://sprunge.us/UfHO boot.s!
01:58:28 <coppro> it should have an 'evaluation stack'
01:58:32 <elliott> Jackoz: coppro is now in charge of your language :)
01:58:38 <Jackoz> :D
01:58:46 <coppro> err, sorry
01:58:47 <coppro> two stacks
01:58:53 <coppro> one for values/functions, one for evaluations
01:58:56 <Jackoz> don't want to be invasive, just to get some ideas
01:58:56 <elliott> coppro: it already does
01:59:02 <elliott> Jackoz: invasive? howso?
01:59:14 <Jackoz> just by submerging you with questions
01:59:28 <coppro> if we get tired/annoyed we'll just not answer
01:59:33 <elliott> nothing could ever match Sgeo's questioning power
01:59:38 <coppro> that too
01:59:44 <elliott> and we still answer him
01:59:47 <elliott> mostly because he doesn't shut up if we don't
01:59:48 <coppro> very little matches this channel's noise:signal ration
02:00:09 <Jackoz> you just need a Sgeo-pass filter
02:02:11 <coppro> Jackoz: I need to read logs and stop commenting things I don't understand in the slightest
02:02:30 <Jackoz> coppro: don't worry, I like your good intents
02:02:46 <Jackoz> which could be a good way to test the expressiveness of the language?
02:03:08 <Jackoz> trying to implement things as project euler challenges?
02:03:20 <elliott> Jackoz: it's esoteric, it's not meant to be expressive! well ok that's not true but still
02:03:24 <elliott> Jackoz: implement a brainfuck interpreter
02:03:25 <elliott> or Underload
02:03:36 <Jackoz> I was already trying it
02:03:44 <Jackoz> but the use of the stack was really tough :)
02:03:45 <elliott> :)
02:03:52 <Jackoz> that's why I came here
02:03:58 <coppro> hmm
02:04:04 <coppro> it would be easier to help with a specification
02:04:16 <Jackoz> {:}#y{>}#z{'>:[:1+:],'<:[:1-:],'+:[%;3$>1+3$:<%%],'-:[%;3$>1-3&:<%%],'.:[2$2$>^^]}#x(:16:)0 0"+[>,]<-[+.<-]";0 0%[;'[= [,:1+:][']= [@y:>>% %4$% %<<,<<][1+]??]??]e@y^^ [@x:>>!]e
02:04:23 <Jackoz> this is how much far I gone
02:04:25 <coppro> but now I realize that what I was thinking is not what you are thinking
02:04:30 <elliott> coppro: there's a function reference :P
02:04:40 <Jackoz> that function reference is really old :(
02:04:43 <coppro> but now I have an excellent idea for a language
02:05:17 <Jackoz> coppro: don't steal my ideas! :)
02:05:53 <coppro> based on your small code samples, it's RPN, right?
02:06:01 <elliott> no shit :P
02:06:14 <Jackoz> yes, it is
02:06:52 <coppro> yeah; I want a bracketless functional PN language
02:07:00 <elliott> coppro: I already mentioned that...
02:07:04 <elliott> coppro: And REBOL already did that.
02:07:09 <elliott> coppro: And Logo already did that.
02:07:14 <coppro> elliott: I know you mentioned it
02:07:15 <Jackoz> ok, this could give a better view: http://img823.imageshack.us/img823/9518/operators.png
02:07:29 <Jackoz> but many of these instructions can work with different parameters too
02:07:40 <coppro> and REBOL has brackets
02:07:47 <elliott> Jackoz: Is that an excel spreadsheet?
02:07:51 <elliott> coppro: yes, but it doesn't need them
02:07:57 <elliott> coppro: pure functions can be just
02:08:01 <elliott> f g x y z h a b c
02:08:03 <Jackoz> unfortunately yes
02:08:10 <elliott> coppro: and logo has no brackets... well, it has [], but that's just lambda
02:08:12 <Jackoz> after trying to keep consistency directly in source code
02:08:12 <coppro> so does logo
02:08:21 <elliott> coppro: so? you could easily get rid of lambda
02:08:24 <elliott> have it be
02:08:26 <elliott> lambda (list)
02:08:26 <Jackoz> I had to find a simpler way, since many things were subjected to change
02:08:31 <elliott> *(list) (list)
02:08:31 <elliott> then you'd do
02:08:38 <coppro> elliott: list
02:08:40 <elliott> lambda cons :a cons :b nil
02:08:45 <elliott> for (lambda (a b)
02:08:46 <elliott> then uh
02:08:51 <coppro> that would require brackets for any sane implementation
02:09:00 <elliott> lambda cons :a cons :b nil cons :display cons :a nil
02:09:01 <elliott> would be
02:09:03 <Sgeo> Aren't stack languages bracketless RPN?
02:09:08 <elliott> (lambda (a b) (display a))
02:09:12 <elliott> coppro: i meant list as in a list object
02:09:13 <elliott> not the list function
02:09:18 <coppro> Sgeo: yes, which is considerably easier than bracketless PN
02:09:21 <catseye> lambda add #1 #2
02:09:43 <elliott> coppro: no it's not
02:09:44 <coppro> Jackoz: what's the real issue?
02:09:51 <elliott> RPN languages with lambda have [] too
02:09:53 <elliott> exact same problem
02:09:55 <elliott> "problem"
02:09:58 <Sgeo> Oh
02:10:02 <Sgeo> Durh
02:10:06 <Jackoz> coppro: I tried to explain it in my words but with no success :/
02:10:07 <coppro> elliott: lies. I will show you the evility of my language
02:10:12 <coppro> Jackoz: :/
02:10:47 <Jackoz> I was wondering if something what is not just a stack but that doesn't work by variable declarations too exists
02:10:53 <Jackoz> what = that
02:11:12 <elliott> Jackoz: here is what i think you want to say
02:11:20 <elliott> "Are there languages which are neither concatenative or imperative?"
02:11:24 <elliott> perhaps?
02:11:26 <Jackoz> I mean that variable declaration is verbose
02:11:36 <elliott> Jackoz: lambda calculus :)
02:11:57 <Jackoz> while using just a stack is verbose too, since you then need to manipulate it very often inside the code
02:12:15 <catseye> coppro: sally has no brackets. no proper lambdas, either, but it would be a straightforward addition
02:12:18 <Jackoz> so I would like to have a computational model which works without having to do explicitly any of two
02:12:36 <Jackoz> maybe it simply doesn't exist
02:14:12 <elliott> Jackoz: of course it does
02:14:15 <elliott> Jackoz: see the lambda calculus
02:15:02 <Jackoz> the real problem about λ-calculus is that it needs a more complex VM underlying it
02:15:38 <Jackoz> mmh I'll take a look, but I remember from university that it needs to care about bound variables, free variables and so on
02:15:50 <Jackoz> and having to declare parameters will bring back verbosity
02:16:33 -!- FIQ has quit (Quit: - nbs-irc 2.39 - www.nbs-irc.net -).
02:16:43 <Jackoz> (by the way I'm just guessing, this is the real first approach to an esoteric languages)
02:16:51 <Sgeo> I have found something too obscure for Fark1
02:16:52 <Sgeo> http://www.fark.com/cgi/comments.pl?IDLink=5726773
02:16:56 <Jackoz> my lexer broke too
02:17:17 <elliott> <Jackoz> the real problem about λ-calculus is that it needs a more complex VM underlying it
02:17:21 <elliott> only on imperative hardware
02:17:29 <elliott> lambda-calculus on the Reduceron would be a sinch
02:17:41 <Sgeo> sinch
02:17:42 <Sgeo> sin
02:17:54 * Sgeo channels elliott
02:18:03 <Jackoz> I love the relativistic way you approach things
02:18:20 <Jackoz> in any case I'm not writing this language in an imperative language
02:18:25 <elliott> Jackoz: well if all we cared about was intel amd x86 windows linux... we'd be very boring. :)
02:18:29 <elliott> Jackoz: ocaml is imperative
02:18:31 <elliott> it's just functional, too
02:18:40 <elliott> but ocaml functions can have any side effects they want
02:18:43 <Jackoz> yes, it's not pure functional
02:18:50 <Jackoz> but you can use it as a pure functional
02:18:55 <Jackoz> if you want
02:18:56 <elliott> "impure functional" is a rather worthless concept academically :)
02:19:02 <elliott> perl counts as impure functional
02:19:04 <elliott> it has lambdas
02:19:33 <Jackoz> I actually skipped the course about functional languages years ago
02:19:44 <Jackoz> just because I was too young to feel their coolness
02:20:23 <Jackoz> so I admit my ignorance
02:20:35 <Jackoz> but I assert that OCaml is purer than perl from that point of view :)
02:20:52 <elliott> purER, sure, but just try and define the scale of purity mathematically >:)
02:21:18 <Jackoz> (purer is not correct in english?)
02:21:24 <elliott> Jackoz: it's correct
02:21:26 <elliott> i was emphasising it
02:21:31 <elliott> i.e. "pur*er*, but not pure"
02:21:41 <elliott> "MORE pure" is equivalent emphasis
02:21:53 <Jackoz> :)
02:21:55 <elliott> catseye: aiee, you didn't tell me -- you can't read a whole floppy with one int 13h!
02:22:07 <elliott> catseye: you'd have to go through the heads and cylinders and stuff
02:22:07 <Jackoz> where are you from? (just to chitchat, but I have to ask it after some lines)
02:22:21 <elliott> catseye: i can only read 31 kilobytes as-is!
02:22:26 <elliott> Jackoz: england
02:22:27 <catseye> elliott: that's because i didn't know that!
02:22:39 <Sgeo> Which is purer, OCaml or Factor?
02:22:46 <Sgeo> I guess it depends on what is meant by pure
02:22:49 <elliott> catseye: http://www.ctyme.com/intr/rb-0607.htm
02:22:53 <elliott> catseye: "CL = sector number 1-63 (bits 0-5)"
02:23:03 <Sgeo> Purely concatenative, in which Factor is obviously closer, or purely functional
02:23:06 <elliott> catseye: 63 * 512 bytes = 31.5 k
02:23:07 <Sgeo> Which, um
02:23:09 <elliott> *31.5k
02:23:17 <Jackoz> Sgeo: the point is that you can't define a degree of pureness (or at least I think that was elliott's point
02:23:17 <catseye> elliott: so read a bunch of chunks in a loop
02:23:17 <elliott> catseye: so yeah, urgh!
02:23:24 <elliott> catseye: oh i will once the kernel is big enough :D
02:23:25 <elliott> Jackoz: it was
02:23:38 <Jackoz> you can assert it empirically
02:23:39 <elliott> catseye: other things i'll do then: do the A20 line properly, rather than relying on the BIOS...
02:23:48 <elliott> catseye: say, how hard is it to talk to the floppy without the bios, any ideas?
02:25:06 <Jackoz> elliott: since you seem fond of this topic, which languages are pure functional but with performance comparable to OCaml? just for curiosity
02:25:29 <Jackoz> (this means compiled into native and strongly type inferred)
02:25:31 <elliott> Jackoz: I, uh, Haskell! If you write your code in a way that GHC serendipitously happens to like...
02:25:31 <catseye> elliott: i doubt you actually want to talk to a *floppy*, but... i don't think it's *super* hard, just messy
02:25:53 <elliott> catseye: mm. wait, surely befos reads from the floppy?
02:25:58 <elliott> via ide or something i guess though
02:26:00 <catseye> elliott: using bios, yes
02:26:06 <elliott> catseye: oh, right, you never cli
02:27:19 <Jackoz> elliott: I'm scared that the lack of imperative features can make simple things really complex sometimes
02:27:41 <elliott> Jackoz: if you code inside the IO monad in haskell, then it's "just" like an imperative language
02:27:58 <Jackoz> elliott: wait, this should make it impure too
02:28:06 <elliott> Jackoz: nope
02:28:40 <elliott> Jackoz: I'd try to explain, but to *really* explain why it doesn't make the language impure in any way requires a dumbed-down version of a category theory concept and I'm not in the mood for that :)
02:28:42 -!- p_q has joined.
02:29:10 <elliott> Jackoz: for any X you can find a tutorial explaining how monads are actually just like X :)
02:29:19 <elliott> Even burritos (http://blog.plover.com/prog/burritos.html)
02:29:32 <Jackoz> elliott: maybe I won't even understand you
02:29:54 <elliott> Jackoz: monads are actually really simple -- it's explaining them that's the hard thing
02:30:01 -!- poiuy_qwert has quit (Ping timeout: 252 seconds).
02:30:15 <elliott> Jackoz: the best policy for a beginning haskeller is just to trust that the IO monad works :)
02:30:37 <Jackoz> elliott: faith is not something I'm used to rely upon :)
02:31:05 <elliott> Jackoz: when you wrote your first program, did you ask how on earth "print foo" put little dots representing foo on the screen, or did you just go "ok, that says 'foo'"? :)
02:31:26 <elliott> it *is* possible to fully understand monads before using them -- but impractical, and pointlessly difficult
02:31:30 <Jackoz> elliott: I actually did, but I was unable to answer my self :(
02:31:49 <Jackoz> elliott: this means that after OCaml I'll try Haskell, since functional programming really opened my mind
02:32:29 <elliott> Jackoz: It is a good idea.
02:32:31 <Jackoz> elliott: just a last question.. does Erlang worth trying?
02:32:59 <elliott> Jackoz: opinions are divided :)
02:33:03 <elliott> it has interesting things.
02:33:11 <elliott> i don't want to be the one to make that decision for you :)
02:34:07 <Jackoz> elliott: for your answering availability you just gained an alpha release of my language as soon as it's ready, now feel happy..
02:34:19 <elliott> Jackoz: I can barely contain my excitement.
02:34:22 <elliott> (sarcasm, but ok :P)
02:34:31 <Jackoz> elliott: that is a good start
02:34:35 <elliott> Jackoz: you know what's cool? my OS doesn't boot!
02:34:44 <Jackoz> elliott: linux?
02:34:50 <elliott> Jackoz: no, literally, MY os :)
02:35:07 <elliott> because writing an os is the best thing anyone can ever do apart from ....
02:35:08 <elliott> i don't know
02:35:12 * Sgeo is fully willing to attempt to describe why the IO monad is not impure
02:35:13 <elliott> resurrecting the dinosaurs
02:35:20 <Jackoz> elliott: writing a programming language is just second to that
02:35:21 <Sgeo> But elliott will yell at me
02:35:25 <elliott> Jackoz: please don't take up Sgeo on his offer; he is an excellent confuser :)
02:35:30 <Jackoz> (from my point of view)
02:36:10 <Sgeo> But it's so SIMPLE
02:36:14 <Sgeo> Kind of
02:36:19 <Jackoz> is it a bootloader problem or a OS problem?
02:36:25 * Sgeo feels like a burrito tutorial author
02:36:29 <Jackoz> just because you were talking about bootloaders so far
02:37:40 <elliott> Jackoz: bootloader, i think
02:37:50 <elliott> either my floppy assembly script isn't working, or my bootloader isn't actually jumping to the kernel
02:38:01 <elliott> ^@^@^@^@^@Uª^@^@^@^@^@^@^@^@
02:38:04 <elliott> suspicious lack of my kernel there
02:38:26 * Sgeo just wants to blurt out what's on his mind
02:38:37 <elliott> Sgeo: /msg me with it
02:38:38 <elliott> i'm eager to hear it
02:38:48 * elliott prepares himself
02:39:39 <Sgeo> Just making sure I don't embarrass myself by using an example function that doesn't actually exist
02:39:50 <elliott> just do it in /msg
02:40:02 <elliott> dd: `kernel/kernel': cannot skip to specified offset
02:40:04 <elliott> that would explain it!
02:40:31 <elliott> oh, it needs to be seek=
02:40:32 <elliott> that would explain it
02:40:34 <elliott> skip= is for input
02:40:59 <elliott> not that that works, either :D
02:41:17 <elliott> @^@^@^@^@UªEVERYBODY PARTY!ôéêÿÿÿ^@^@^@
02:41:20 <elliott> ok it is copying ther
02:41:21 <elliott> *there
02:44:28 <Sgeo> My explanation appears to have the elliott seal of approval?
02:45:30 <elliott> MAYBE
02:47:59 <Sgeo> <Sgeo> Things that might seem impure, such as getChar function, don't actually do what they say. Instead, they return a description. getChar always returns the same description of the action of getting a character. You piece together descriptions to make a bigger description. Whatever main describes is what's done
02:54:09 <elliott> catseye: gah! my bootloader isn't loading correctly!
02:54:17 * Gregor clicks "Popular amongst people in their twenties" on AppBrain.
02:54:23 <Gregor> Damn it. People in their twenties are retards.
02:54:24 -!- augur has quit (Remote host closed the connection).
02:54:48 -!- augur has joined.
02:55:58 <catseye> elliott: in the source of developing software, it is common that errors, or "bugs", are introduced. one of the jobs of the software developer is to locate and fix these bugs, a process called "debugging".
02:56:24 <elliott> catseye: no it's clearly the bioses fault
02:56:27 <elliott> evidence: fuck the bios
02:56:31 <elliott> how can you disagree?
02:56:35 <elliott> now catseye -- fix my bios
02:56:40 * Sgeo is not a technophile
02:57:05 * Sgeo is also not funny
02:57:29 * catseye never knows what Sgeo is talking about half the time
02:58:14 -!- Behold has quit (Read error: Connection reset by peer).
02:59:19 -!- augur has quit (Ping timeout: 265 seconds).
02:59:31 <catseye> but I *set* GTK_CFLAGS, you stupid configure script! don't tell me it's not set!
03:00:54 <elliott> Okay, the read is failing; even if the floppy is random, I just display zeroes.
03:03:24 <Sgeo> Aren't you using a VM?
03:03:31 <elliott> ...yes...
03:04:08 <Sgeo> Oh. Maybe I should ask what read is failing? Is it a read your code is doing, or is the VM actually simulating faulty hardware now?
03:05:20 <elliott> foremr
03:05:21 <elliott> *former
03:05:52 * Sgeo ponders jEdit
03:07:12 <elliott> ...okay, this is just inexplicable
03:07:18 <elliott> I'm following the interrupt spec perfectly.
03:07:29 <elliott> It's not erroring out.
03:08:35 <catseye> ok so apparently it was not smart enough to look for pkg-config *on my search path*, it had to be told where it was
03:09:08 <catseye> oh! and netbsd world built.
03:09:49 <elliott> catseye: including kernel?
03:11:00 <catseye> yes, but i may have to build it again; i need t check somehtin
03:11:09 <elliott> catseye: because if so DEBIAN YAY :p
03:11:37 <catseye> no its good
03:11:52 <elliott> catseye: DO YOU TOTALLY REMEMBER THE SSH COMMAND (nothing is more important)
03:13:08 <catseye> it started with ssh
03:13:46 <elliott> catseye: ssh -L R 9292:localhost:22 cpressey@
03:13:47 <catseye> i believe emulating linux 2.6 will require linux 2.6 shared libs; such things are not so convenient as to be in pkgsrc already
03:13:51 <elliott> i think that's it
03:13:53 <elliott> no, it won't
03:13:55 <elliott> catseye: it's in a _chroot_
03:14:00 <elliott> the chroot contains _all the linux libraries_ including glibc
03:14:08 <elliott> when you chroot, it looks for /lib/libc or whatever, the /bin/sh
03:14:12 <elliott> which is of course *inside the chroot*
03:14:17 <catseye> ok
03:15:18 <catseye> well, need to reboot to test new kernel
03:15:23 <elliott> hahaha good luck
03:15:41 -!- catseye has quit (Quit: Lost terminal).
03:15:44 <Sgeo> ......
03:16:09 <elliott> Sgeo: ...what?
03:16:54 -!- Sgeo|jEdit has joined.
03:16:58 <elliott> ...
03:17:54 -!- Sgeo|jEdit has left (?).
03:17:54 -!- Sgeo|jEdit has joined.
03:18:18 -!- Quadlex has quit (Read error: Operation timed out).
03:18:23 * Sgeo is now accidentally spamming comex
03:18:58 <Sgeo|jEdit> There we go
03:19:42 <Sgeo|jEdit> For what it's worth, I hate this client
03:20:13 <Sgeo|jEdit> (What? Sgeo have taste?)
03:22:00 -!- Sgeo|jEdit has quit (Read error: Connection reset by peer).
03:29:07 -!- catseye has joined.
03:30:11 <catseye> that was interesting
03:30:23 <catseye> it claims to not have any file system modules compiled into the kernel
03:30:36 <catseye> thus could could not mount the, uh, filesystem
03:31:08 <catseye> also, the new kernel makes my speakers go "WEEP!" during boot now
03:31:33 <catseye> custom kernel time!
03:32:20 -!- augur has joined.
03:32:41 -!- augur has quit (Remote host closed the connection).
03:33:28 <catseye> oh the silly
03:33:40 <catseye> all fs support is built as modules by default
03:33:42 <catseye> ALL
03:34:03 -!- Quadlex has joined.
03:37:39 <elliott> catseye: don't you embed your fs in the kernel? SHEESH
03:38:00 * Sgeo ponders the limitations of any editor not written in Factor attempting to do syntax hilighting on Factor code
03:39:10 <elliott> Sgeo: just freakin' use FUEL
03:39:21 <elliott> not even jedit's author, uses it any more
03:39:25 <elliott> and that's the same as factor's author!
03:39:34 <elliott> he uses fuel like everyone else
03:40:01 <Sgeo> How well does emacs really run on Windows/
03:40:19 <elliott> perfectly.
03:42:35 <Sgeo> Does the editor.emacs thingy know where to look on Windows?
03:42:48 <catseye> "PAL emulation" in VICE should be called "CRT emulation" -- as a North American I feel discriminated against by this
03:43:29 <elliott> catseye: it, presumably, only emulates the characteristics of a PAL C64 on a PAL TV
03:43:37 <elliott> Sgeo: you have to set it, just like on unix
03:43:40 <catseye> it makes it look like a tv!
03:43:57 <elliott> catseye: it's lovely :P
03:44:05 <elliott> OK FUCK YOU BIOS
03:45:42 <catseye> even in ntsc mode! which they seem to have improved slightly in this version
03:46:01 <elliott> catseye: why would you want to use ntsc mode
03:46:07 <elliott> pal representin'
03:47:09 <catseye> ...............................for nostalgia!
03:47:36 <catseye> i tried Factor once and it defeated me
03:47:38 <elliott> catseye: but it looks exactly the same, more or less :P
03:48:11 <catseye> i tried Emacs like a dozen times an it always defeated me too
03:48:31 <elliott> "dw 0xAA55
03:48:31 <elliott> For some reason the signature has to be written this way round!"
03:48:36 <elliott> what is it with morons writing tutorials?
03:48:53 <Sgeo> catseye, hmm?
03:49:51 <catseye> ok so i'm gonna check out this ophis thing
03:50:04 <elliott> catseye: the manual is pretty good
03:50:15 <elliott> catseye: http://hkn.eecs.berkeley.edu/~mcmartin/ophis/manual/book1.html
03:50:29 <catseye> NUTS TO MANUALS
03:50:42 <elliott> catseye: i don't mean read it :P
03:50:44 <elliott> i just mean reference it
03:51:31 <elliott> "This tutorial is to show you how to load sectors from a floppy disk. Variations will be needed to get this code to work on most other disks."
03:51:32 <elliott> there
03:53:30 <catseye> disks of varying floppiness
03:54:02 <catseye> ok so ophis can assemble my existing code RIGHT
03:55:13 <pikhq> elliott: Be nice? What's that?
03:55:23 <catseye> well, at least one file!
03:55:23 <elliott> lawl
03:55:58 <elliott> it just doesn't work! aaargh
03:56:03 <elliott> pikhq: WANNA DEBUG MY BOOTLOADER?
03:56:44 <Sgeo> Maybe I should write a bootloader at some point
03:57:03 <Sgeo> *everyone laughs at the thought of Sgeo doing something like that*
03:59:03 <catseye> ok ophis is decent. i hope he's improved label arith. and being able to produce a symbol map would be a nice feature. but, i can hack on it myself if i like
04:00:10 <catseye> Sgeo: it's not difficult. really.
04:00:25 <Sgeo> elliott certainly seems to be having trouble
04:00:42 <catseye> elliott is trying to make elephants dance in his bootloader.
04:00:53 <elliott> catseye: actually, my problem right now is loading sectors from the floppy
04:01:00 <elliott> catseye: i can enable the a20 line, i can go into protected mode, everything
04:01:03 <elliott> catseye: i just can't load the kernel
04:01:14 <catseye> you load the kernel *before* the otehr stuff, right?
04:01:23 <elliott> catseye: yes. well, i print "boo" first.
04:01:30 <elliott> also: reset the disk. but you're meant to do that
04:01:45 <catseye> and it was working before, from what i gather
04:01:57 <elliott> seemingly.
04:03:06 <elliott> "The 6 segment registers are all loaded with a segment selector, which is an offset into either the GDT or the current LDT. A segment selector is only 16 bits long and looks like this:"
04:03:08 <elliott> YOU'RE A FUCKING LIAR
04:03:19 <elliott> I'M IN REAL MODE
04:03:21 <elliott> ahem
04:04:19 <elliott> A
04:04:20 <elliott> HA!!!
04:04:33 <elliott> wait what
04:05:25 <elliott> hehehehehe "boob*o*o*" AHEM
04:05:34 <elliott> maturity elliott this is serious
04:07:50 <catseye> brb testing NEW new kernel
04:08:01 -!- catseye has quit (Quit: Lost terminal).
04:09:44 -!- augur has joined.
04:13:18 -!- catseye has joined.
04:13:35 <catseye> cannot exec /sbin/init: error 8
04:13:49 <elliott> catseye: LAWL
04:14:25 <catseye> translation:
04:14:32 <catseye> You have no chance to survive make your time.
04:17:20 <elliott> catseye: end of the netbsd era eh?
04:19:07 <catseye> i apparently have to install more things somewhere else.
04:19:53 <catseye> i need a kernel module for executing ELF files.
04:20:56 <catseye> ok NOW i find http://www.netbsd.org/changes/changes-6.0.html
04:22:05 <catseye> ok
04:22:40 <catseye> ./build.sh modules
04:22:43 <catseye> ok cool
04:23:57 <Ilari> Error 8 is ENOEXEC.
04:24:24 <elliott> 00056902415e[CPU0 ] fetch_raw_descriptor: GDT: index (807) 100 > limit (17)
04:24:25 <elliott> Hmm.
04:24:29 <elliott> Anyone know what that means?
04:25:29 <Ilari> You are trying to access GDT descriptor far above the limits.
04:26:09 <elliott> Ilari: That's the thing, though; I'm really not. :)
04:26:14 <elliott> Ilari: I think my kernel is still failing to load. *sigh*
04:27:09 <Ilari> Limit 17 would mean it only has 3 entries (null, code and data)...
04:27:15 <elliott> Ilari: Indeed, it does.
04:27:29 <elliott> Ilari: I think it's trying to run random memory since the kernel didn't load properly, or suchlike.
04:27:56 <Ilari> It seems like the descriptor its trying to access is 1024, 1025, 1026 or 1027...
04:28:12 <Ilari> Ah, no.
04:28:29 <Ilari> 2048, 2049, 2050 or 2051.
04:29:07 <Ilari> Maybe you try to refer to 0x0008 (that would be code?) and get the bytes swapped for some reason?
04:29:15 <Ilari> Or offset by one.
04:29:43 <elliott> Ilari: The code is loaded at 0x8000.
04:30:06 <elliott> Ilari: The kernel, that is.
04:30:21 <elliott> Ilari: Hmm...
04:30:26 <elliott> jmp KERNEL_SEGMENT:0
04:30:32 <elliott> I do this, but in protected mode.
04:30:41 <elliott> Maybe I should do jmp KERNEL_SEGMENT * 16?
04:30:42 <Ilari> Because trying to refer to segment 0x0800 (instead of 0x0008) would trigger just that kind of error...
04:30:52 <elliott> Ilari: Indeed, KERNEL_SEGMENT = 0x800.
04:32:15 <Ilari> If you are in pmode ring 0 with the likely GDT, the only valid segment to jump to is segment 8.
04:32:26 <elliott> Ilari: Right.
04:32:37 <elliott> Ilari: So what I need to do is... "jmp CODE_SEGMENT:0x8000", right?
04:32:50 <Ilari> I think so.
04:32:54 <elliott> Ilari: Thanks; I'll try that.
04:33:29 <Ilari> You might need to initialize SS first so it validates after jump (0x0010?)
04:33:47 <elliott> mov ax, DATA_SEGMENT
04:33:48 <elliott> mov ds, ax
04:33:48 <elliott> mov es, ax
04:33:48 <elliott> mov fs, ax
04:33:48 <elliott> mov gs, ax
04:33:48 <elliott> mov ss, ax
04:33:52 <elliott> Already done that.
04:34:03 <Ilari> Well, that should work.
04:34:24 <elliott> qemu: fatal: Trying to execute code outside RAM or ROM at 0x000a0000
04:34:24 <elliott> EAX=00000000 EBX=0000ff31 ECX=00000000 EDX=00000500
04:34:24 <elliott> ESI=00000002 EDI=e900fed4 EBP=00000000 ESP=00006ef9
04:34:40 <elliott> Bochs error is just...
04:34:42 <Ilari> Hah. You jumped into VGA memory.
04:34:45 <elliott> 00042725627e[CPU0 ] write_virtual_checks(): no write access to seg
04:34:46 <elliott> 00042725627e[CPU0 ] interrupt(): vector must be within IDT table limits, IDT.limit = 0x0
04:34:46 <elliott> 00042725627e[CPU0 ] interrupt(): vector must be within IDT table limits, IDT.limit = 0x0
04:34:46 <elliott> 00042725627i[CPU0 ] CPU is in protected mode (active)
04:34:49 <elliott> Ilari: ha!
04:34:53 <elliott> I wonder how I managed that.
04:34:59 <elliott> I do set the segment register to vga memory in real mode.
04:35:05 <Ilari> DOSBox would lock up if you did that.
04:35:16 <elliott> hmm
04:35:17 <elliott> mov ax, DATA_SEGMENT
04:35:17 <elliott> mov ds, ax
04:35:21 <elliott> ds was where i had vga memory, so
04:35:26 <elliott> mov word [0xB8000+ebx+2], 0x0F21
04:35:38 <elliott> that's the last time i reference vga memory in my program and as you can see...
04:36:19 <catseye> blub blub
04:36:21 -!- catseye has quit (Quit: Lost terminal).
04:36:23 <Ilari> What instruction actually triggers that execution attempt from VGA memory?
04:36:37 <Ilari> The 'jmp CODE_SEGMENT:0x8000'?
04:38:24 -!- Mathnerd314 has quit (Ping timeout: 240 seconds).
04:39:10 <elliott> Ilari: I'm not sure how to get bochs to tell me that :)
04:39:48 <elliott> Ilari: Hmm, I have replaced CODE_SEGMENT: with "push CODE_SEGMENT \ pop cs" earlier in the program.
04:39:52 <elliott> Then just "jmp (KERNEL_SEGMENT*16)" later.
04:39:56 <elliott> Same error, but that seems clear.
04:39:58 <elliott> *cleaner.
04:40:01 <Ilari> POP CS doesn't exist.
04:40:16 <elliott> Ilari: Are you sure? nasm assembles it happily.
04:40:43 <Ilari> At least on any x86 processor that supports protected mode.
04:40:53 <elliott> Ilari: Oh, looks like it assembles it into a hopeless tangle of things...
04:41:03 <elliott> mov ax, CODE_SEGMENT
04:41:03 <elliott> mov cs, ax
04:41:06 <elliott> That'll work, right?
04:41:17 <Ilari> I don't think you can do that either...
04:41:22 <elliott> Ilari: Can you set CS at all?
04:42:03 -!- catseye has joined.
04:42:08 <catseye> NetBSD catseye 5.99.39 NetBSD 5.99.39 (CATSEYE) #0: Sun Oct 31 16:54:30 CDT 2010 catseye@catseye:/usr/obj/sys/arch/i386/compile/CATSEYE i386
04:42:11 <catseye> elliott: ^^
04:42:21 <catseye> now to install the userland!
04:42:22 <Ilari> I think only far jump, far call, far return, interrupt, syscall or sysreturn can change CS.
04:42:28 <elliott> catseye: NO WAIT YOU SHOULD GIVE ME SSH FIRST >:)
04:42:30 <elliott> :P
04:42:31 <elliott> Or not.
04:42:43 <elliott> Ilari: Oh. Then CS is already correct :)
04:42:45 <elliott> jmp CODE_SEGMENT:dword other_side
04:43:31 <elliott> Ilari: I'm actually at a complete loss why it jumps into VGA memory...
04:44:04 <elliott> Ilari: KERNEL_SEGMENT is 0x800, so it's jumping to 0x8000.
04:44:11 <Ilari> And that's graphics VGA memory, not text VGA memory...
04:44:21 <elliott> Ilari: I still think the floppy might not be reading correctly.
04:44:24 <elliott> Wait, easy way to find out.
04:44:27 <catseye> *** Failed target: mkvarsyesno
04:44:31 <catseye> whuh-oh
04:44:42 <Ilari> Perhaps it runs off the end of kernel, there's only zeroes (AFAIK, that instruction can actually work) and then hits VGA graphics memory?
04:45:05 <elliott> Ilari: *Possibly* the kernel isn't even *there* and there's only zeroes.
04:45:14 <elliott> Ilari: It does pause a bit before crashing.
04:45:32 <elliott> Ilari: But I'm calling the BIOS perfectly, I've even carbon-copied catseye's code -- I have no idea why it isn't reading from floppy!
04:46:13 <Ilari> 00 00 is ADD [EAX], AL. With the segments the way they are, that works even with zero EAX...
04:46:31 <elliott> Ilari: Indeed, I just added this:.
04:46:36 <elliott> mov al, [KERNEL_SEGMENT*16]
04:46:36 <elliott> mov byte [0xB8000+ebx+4], al
04:46:36 <elliott> mov byte [0xB8000+ebx+5], 0x0F
04:46:36 <elliott> mov al, [(KERNEL_SEGMENT*16)+1]
04:46:36 <elliott> mov byte [0xB8000+ebx+6], al
04:46:36 <elliott> mov byte [0xB8000+ebx+7], 0x0F
04:46:38 <elliott> x:jmp x
04:46:40 <elliott> Before the jump.
04:46:44 <elliott> And it just says "boo" on my screen.
04:46:47 <elliott> i.e. i'm putting zeroes there.
04:47:09 <elliott> i.e. the kernel isn't getting loaded.
04:47:11 <elliott> i.e. WTF?
04:49:08 <catseye> elliott: did you post the code somewhere?
04:49:23 <elliott> catseye: I TOTALLY CAN
04:49:36 <elliott> catseye: Ilari: http://sprunge.us/MLOL
04:52:39 <catseye> i like how sprunge has put "LOL" in that url
04:54:14 <elliott> catseye: SO WUTZ MY BUG
04:54:15 <elliott> LOL
04:55:39 <catseye> It just says "boo"?
04:55:55 <catseye> Appropriate for Oct 31 I suppose :)
04:56:16 <elliott> catseye: i don't even know HOW
04:56:24 <pikhq> Today has been a good day.
04:56:25 <elliott> catseye: if you look at my code, it all writes *after* the "boot!"
04:56:28 <elliott> catseye: so wtf
04:57:29 <Sasha> Well, I just got back from trick-or-treating
04:57:36 <Sasha> free candy is best candy
04:57:46 <catseye> "it all writes", you mean, the code after 'protect' does stuff? maybe "t!" is being erased
04:58:17 <elliott> catseye: yeah but HOW
04:58:22 <elliott> it makes the NONSENSE
04:58:23 <pikhq> Sasha: Yeah, I'm eating the leftovers ATM.
04:58:31 <Sasha> heh
04:58:40 <pikhq> (I did not buy the candy, for I live with my parents)
04:59:12 <Sasha> so do I
04:59:20 <Sasha> but I am 16 so I have an excuse
04:59:25 <catseye> elliott: you pop bx
04:59:30 <catseye> but your push bx is commented out
04:59:41 <Sasha> What's you excuse, pikhq?
04:59:45 <elliott> catseye: uh right
04:59:53 <elliott> catseye: push bx before "mov ah, 02h"
04:59:55 <pikhq> Sasha: 20 and go to school nearby.
05:00:00 <Sasha> eh
05:00:04 <elliott> catseye: ok now it's just "boot!"
05:00:08 <elliott> catseye: with what are presumably zero bytes after it
05:00:11 <pikhq> Sasha: So, similar position except it'd be *possible* for me to move out.
05:00:18 <Sasha> heh
05:00:20 <pikhq> Well, except that it's nearly impossible to find a job right now.
05:00:25 <Sasha> I want to move when I am of-age
05:00:27 <elliott> i'm 8 years old and own a flute that gives me a bedroom
05:00:27 <pikhq> Fucking Bush.
05:00:36 <elliott> *15, *don't own
05:00:36 <Sasha> even if I have to walk to Seattle
05:00:39 <elliott> sadly, reality is never quite as perfect.
05:00:41 <Sasha> from Northern AZ
05:00:49 <Sasha> elliott's 15?
05:01:00 <Sasha> that explains the pompous douchebaggery
05:01:02 <pikhq> I actually did move out. And reality is a bitch and a half.
05:01:03 <elliott> Sasha: 8
05:01:28 <pikhq> Sasha: The pompous douchebaggery is just from knowing far better than most people.
05:01:34 <elliott> pikhq: oh shut up
05:01:37 <elliott> you douchebag :)
05:01:40 <Sasha> thinking he knows far better
05:01:48 <elliott> Sasha: it's always interesting to see how many people just accept the pompous douchebaggery until "zomg he's $age_at_time" which suddenly offers an explanation for why i'm a pompous douchebag
05:01:57 <pikhq> Sasha: But, see, he does. :)
05:02:01 <elliott> which, of course, is just a rationalisation, but there you go...
05:02:04 <Sasha> See, I know more than elliott about lots of things. But, I'm not a douchebag.
05:02:14 <Sasha> elliott, I was a pompous douchebag at 15 too
05:02:18 <elliott> Sasha: no, but you are, evidently, incapable of rational thought
05:02:20 <elliott> <Sasha> elliott, I was a pompous douchebag at 15 too
05:02:25 <pikhq> Sasha: You're fucking 16.
05:02:27 <Sasha> and then serious depression kicked in
05:02:30 <elliott> this in no way lends evidence to the proposition that my pompous douchebaggery is due to my age
05:02:33 <pikhq> Sasha: People don't change that damned much in a year.
05:02:38 <Sasha> so I am too depressed to be a douchebag
05:02:40 <elliott> Everyone on the internet is depressed! Everyone on the internet has motherfuckin' autism!
05:02:50 <elliott> Everyone on the internet is so much deeper than all these sheep!
05:02:53 <pikhq> elliott: And every other possible disorder.
05:02:54 <Sasha> I'm diagnosed with clinical depression
05:03:03 <elliott> Everyone on the internet is fucking stupid and you too -- whoever is reading it, you too.
05:03:04 <Sasha> take pills and everything
05:03:52 <elliott> catseye: i think i blame jews for my bootloader
05:03:57 <elliott> it can't be that my code is wrong, absolutely not
05:04:18 <pikhq> elliott: Don't you have someone less offensive to blame?
05:04:34 <elliott> pikhq: Oh, right, Muslims!
05:04:35 <pikhq> elliott: Like that witchdoctor over there?
05:04:41 * pikhq points at nearest black man
05:04:47 <elliott> Actually I blame society.
05:04:51 <elliott> I blame society for my murders.
05:05:36 <catseye> hey, if there was no society, it wouldn't be murder, would it? let's move on.
05:05:48 <catseye> elliott: so now that your stack is no longer stupid
05:05:57 <elliott> catseye: still doesn't work at all
05:06:08 <catseye> you *don't* see the other stuff being printed?
05:06:14 <elliott> catseye: Nope; zeroes.
05:06:20 <catseye> that you saw before. when the stack was stupid.
05:06:20 <elliott> Well, spaces, but they're zeroes.
05:06:25 <elliott> I saw nothing.
05:06:32 <catseye> my mistake
05:06:33 <elliott> I have never seen anything because *it isn't being loaded*.
05:06:44 <elliott> Here's what's loaded right after the first sector, btw:
05:06:49 <elliott> bits 32
05:06:50 <elliott> org 0x8000
05:06:50 <elliott> foo:hlt
05:06:50 <elliott> jmp foo
05:07:36 -!- augur has quit (Remote host closed the connection).
05:07:37 <catseye> write the code to display what's been loaded, before you got into protmode.
05:07:58 <catseye> obv you have to write it in segmented form, so i didn't just say 'copy it to...'
05:08:15 <catseye> "segmented form"="real mode"
05:08:58 <elliott> catseye: i did
05:09:01 <elliott> catseye: zeroes, the same
05:09:04 <elliott> catseye: i did that like three times :)
05:10:20 <catseye> elliott: i don't know if this is it but you don't set dl when you issue the reset interrupt
05:10:32 <catseye> mine has:
05:10:33 <catseye> movah, 00h; call code = reset
05:10:33 <catseye> movdl, 00h; drive
05:10:34 <catseye> int13h
05:10:44 <catseye> yours skips the dl part
05:11:10 <catseye> god forbid you are resetting some OTHER drive.
05:11:30 <elliott> catseye: isn't dl initialised to current-drive???
05:12:00 <catseye> it may be, ok
05:12:11 <elliott> catseye: i'll try though
05:14:03 -!- augur has joined.
05:15:06 -!- augur has quit (Remote host closed the connection).
05:15:39 <elliott> catseye: same result
05:16:13 <catseye> i should de-OPTOMISE my bootblock and make it easier to understand, but the only other thing i can suggest for now is to double-check your sec, cyl, head computations
05:16:31 <catseye> i have a netbsd 5.999999 world now so i have to reboot to completely break my machine, you see
05:16:56 <catseye> brb (knock on wood)
05:16:58 -!- catseye has quit (Quit: leaving).
05:19:06 -!- catseye has joined.
05:19:19 <catseye> NetBSD 5.99.39 inna house!
05:21:00 <elliott> catseye: SSH!
05:23:03 <catseye> otay
05:23:11 * catseye goes to log
05:25:11 <catseye> Bad local forwarding specification 'R'
05:25:24 <elliott> catseye: uh uh
05:25:26 <elliott> catseye: what command did you run
05:25:43 <catseye> ssh -L R 9292:localhost:22 cpressey@
05:25:44 <catseye> YOU SAID
05:26:09 <elliott> catseye: *ssh -R
05:26:13 <elliott> I must have made mistake lol
05:26:18 <elliott> s/-L R/-R/
05:26:38 <catseye> ha
05:26:40 <catseye> done
05:27:26 <elliott> [1] Bad system call (core dumped) sudo chroot debian
05:27:26 <elliott> catseye$
05:27:33 <catseye> wahoo
05:27:35 <elliott> catseye: 2.6 SUPPORT WOO
05:28:03 <catseye> hrm
05:31:14 <Sgeo> xkcd is starting to bore me
05:31:32 <Sgeo> Or at least, this one did
05:33:24 <elliott> Sgeo: up until now *xkcd did not bore you*?
05:34:52 <Sgeo> Night all
05:35:54 -!- Sgeo has quit (Read error: Connection reset by peer).
05:37:42 <Gregor> Europeans are ruining me.
05:38:05 <pikhq> Oh?
05:38:06 <Gregor> Recently I've been counting thumb-first. I don't know why, and I can't stop myself. I've become so conscious of it that I'm even more incapable of stopping it.
05:38:14 <Gregor> The other day I said "queue" instead of "line"
05:38:39 <pikhq> The queue thing might just be bits getting to you.
05:38:43 <elliott> Gregor: ...what do americans normally count with?
05:38:46 <elliott> Pinky first???
05:38:56 <Gregor> elliott: Index-finger first, then to pinky, then thumb is #5
05:38:56 <coppro> elliott: index finger down to pinky, thumb last
05:39:00 <elliott> what
05:39:05 <elliott> that is the most retarded thing i've ever heard
05:39:10 <coppro> yes
05:39:11 <Gregor> elliott: Which is also how Brits count, by the way :P
05:39:15 <elliott> no it isn't
05:39:17 <elliott> well i don't dot hat
05:39:20 <elliott> *do that
05:39:29 <elliott> probably it never occurred to me to do something so blatantly illogical
05:40:13 <pikhq> Peple count on fingers?
05:40:18 <elliott> Yes, peple do.
05:40:18 <pikhq> s/Peple/People/
05:40:19 <catseye> Ilari: and what is error 79? :)
05:40:19 <elliott> Gregor: Just asked two friends, neither of them do that.
05:40:44 <elliott> Gregor: I think my "Brits" you might mean "Brits in the 18th century".
05:40:45 <Gregor> I can't find a Wikipedia article on this.
05:40:46 <elliott> *by
05:40:48 <Gregor> HOW IS THAT EVEN POSSIBLE.
05:40:49 <Gregor> elliott: Possibly.
05:40:58 <Gregor> elliott: Brits also use feet and miles btw.
05:41:04 <elliott> Gregor: Yes. Yes we do.
05:41:11 <elliott> Gregor: Usually for height and road distances only.
05:41:15 <pikhq> elliott: The units should DIE IN A FIRE.
05:41:15 <elliott> Well, people under N. :)
05:41:27 <pikhq> elliott: Along with the stone.
05:41:29 <elliott> pikhq: Y'know, they make perfect sense in base 12.
05:41:52 <pikhq> elliott: Tell that to the hand.
05:41:55 <pikhq> (unit)
05:42:11 <Gregor> Damn it, SOMEWHERE there must be an article about this on Wikipedia!
05:42:55 <elliott> Gregor: Try "hands"
05:43:09 <elliott> Gregor: http://en.wikipedia.org/wiki/Finger_counting
05:43:12 <Gregor> The human hand has five fingers [citation needed]
05:43:12 <elliott> Finger counting, or dactylonomy, is the art of counting along one's fingers. Though marginalized in modern societies by Arabic numerals, formerly different systems flourished in many cultures,[1][2] including educated methods far more sophisticated than the one-by-one finger count taught today in preschool education.
05:43:13 <elliott> Finger counting can also serve as a form of manual communication, particularly in marketplace trading and also in games such as morra.
05:43:13 <elliott> Finger counting is studied by ethnomathematics.
05:43:14 <elliott> ETHNOMATHEMATICS
05:43:18 <Gregor> elliott: Not useful.
05:43:24 <elliott> Gregor: Ethno. Mathematics.
05:43:30 <Sasha> I count differently
05:43:34 <Ilari> 79 => ELIBACC
05:43:37 <catseye> the art
05:43:41 <catseye> thx Ilari
05:43:46 <elliott> catseye: so have you figured it out yet :P
05:43:59 <Sasha> I use the fingercounting method used by American Sign Language
05:44:20 <Gregor> Sasha: That's even screwier than conventional American counting :P
05:44:29 <pikhq> Sasha: I find that very very weird for numbers larger than 10.
05:44:42 <Sasha> Or, I use Chisanbop
05:44:51 <elliott> "Just to be different"
05:44:58 * pikhq has no valid excuse for not knowing ASL.
05:45:11 <catseye> I use thumb-as-5 to count up to 10 on one hand (but not usually)
05:45:15 <catseye> well ok
05:45:17 <catseye> up to 9
05:45:18 <catseye> i lied.
05:45:19 <elliott> Gregor: oh my god, when i start with a fist and try and put my index finger up to count
05:45:22 <elliott> Gregor: my thumb automatically pops out
05:45:23 <elliott> not joking
05:45:31 <elliott> it is SERIOUSLY hard to get the index finger out
05:45:32 <elliott> takes dedication
05:45:37 <Gregor> elliott: Point instead of counting.
05:45:40 <Gregor> :P
05:45:46 <elliott> Gregor: Is that what all Americans do :P
05:45:52 <pikhq> elliott: Do binary numerals instead.
05:46:00 <Gregor> Just training a poor Brit on being a good A'merkin!
05:46:02 <elliott> pikhq: Tried that once; really uncomfortable, impossible to understand.
05:46:05 <catseye> wait if you start with the humb, how do you do 4? i can't hold my pinky back like that!
05:46:08 <Sasha> I can count in binary on my fingers
05:46:09 <catseye> *thumb
05:46:15 <pikhq> elliott: Really simple to do.
05:46:29 <pikhq> elliott: Except that you flip someone off at 100.
05:46:29 <Gregor> catseye: ... do you use your thumb to hold your pinky while counting three?
05:46:36 <catseye> with thumb-last, you use the thumb to hold the pinky in, at 3!
05:46:37 <pikhq> Erm. 100_2.
05:46:39 <catseye> Gregor: yes!
05:46:43 <elliott> pikhq: Requires tons of finger movement though.
05:46:44 <Gregor> catseye: Pretty pathetic :P
05:46:50 <pikhq> elliott: Yeah, well.
05:46:57 <elliott> We're all retarded
05:47:04 <pikhq> elliott: That's what 10000100 is for.
05:47:12 <Sasha> That's what humans are
05:47:15 <Sasha> retarded
05:47:19 <elliott> pikhq: Try 0b1000
05:47:20 <elliott> pikhq: IMPOSSIBLE
05:47:32 <pikhq> elliott: 0? EASY.
05:47:37 <catseye> Gregor: I should show you my "4", it's very entertaining what with the half bent fingers and all.
05:47:51 <catseye> *European "4"
05:47:55 <elliott> pikhq: but it's physically impossible to lift up like that!
05:47:58 <pikhq> catseye: We just hold the thumb in. So much easier.
05:48:05 <pikhq> elliott: ... Zero.
05:48:09 <elliott> pikhq: ???
05:48:10 <elliott> pikhq: 0b1000
05:48:14 <elliott> 1000 in binary
05:48:20 <pikhq> elliott: Oh. Misparsing.
05:48:21 <elliott> with your fingers
05:48:27 <elliott> is physically torturous
05:48:27 <pikhq> elliott: 0 base 1000 is how I parsed it.
05:48:31 <elliott> xD
05:48:42 <pikhq> elliott: It's half-bent. Quite annoying.
05:49:03 <Sasha> If I am feeling like a twat, I convert all my answers to octal for my math class.
05:49:13 <elliott> Sasha: And then you don't just *feel* like a twat!
05:49:21 <Sasha> EXACTLY
05:49:36 <Sasha> Instead of kicking puppies, I do that
05:49:43 <Sasha> it's my only release for anger
05:49:57 * Sasha is slowly dying on the inside
05:51:50 * pikhq shoots Sasha in the leg
05:51:53 <elliott> pikhq: Quater-imaginary finger counting.
05:51:57 <pikhq> Now you're slowly dying on the outside!
05:51:58 <Gregor> You could do so much worse than octal.
05:52:01 <pikhq> elliott: o.O
05:52:05 <elliott> Hmm, that would be difficult.
05:52:08 <elliott> Is there a binary equivalent?
05:52:09 <Gregor> Base-11 would be pretty mean.
05:52:10 <pikhq> Gregor: Base pi?
05:52:20 <Sasha> Gregor: I like duodecimal
05:52:23 <Gregor> Base pi would be more difficult to do than it was worth :P
05:52:28 <elliott> Gregor: Base 9 is the worst for talking in.
05:52:31 <elliott> It's so close to making sense.
05:52:33 <Sasha> or ternary
05:53:02 <Sasha> ooh, or sometimes I will use unal
05:53:15 <pikhq> Naaah, imaginary base.
05:53:21 <elliott> pikhq: Golden ratio finger counting.
05:53:29 <Sasha> base i
05:53:32 <elliott> http://en.wikipedia.org/wiki/Golden_ratio_base
05:53:34 <elliott> *ratio base
05:54:21 <elliott> catseye: You can disconnect from my box now :P
05:55:06 <elliott> "Base √2 behaves in a very similar way to base 2 as all one has to do to convert a number from binary into base √2 is put a zero digit in between every binary digit; for example, 191110 = 111011101112 becomes 101010001010100010101√2 and 511810 = 10011111111102 becomes 1000001010101010101010100√2. This means that every integer can be expressed in base √2 without the need of a decimal point."
05:55:07 <elliott> pikhq: This.
05:55:29 <elliott> pikhq: Sounds quite comfortable for hand-counting.
05:55:37 <pikhq> elliott: Gorgeous.
05:55:44 <Sasha> oh lordy
05:56:08 <elliott> pikhq: I suggest it be done right to left.
05:56:23 <catseye> elliott: otay
05:56:25 <elliott> That is, 1101| on hands where | is right edge of hands = 1011_sqrt(2)
05:56:33 <Sasha> eh
05:56:49 <Sasha> I work binary on my fingers from right to left
05:57:01 <Sasha> the pinky on my right hand has a value of 1
05:57:17 <Sasha> and the pinky on my left, a value of 128
05:59:43 <catseye> bases are for the weak! i use pure numbers
06:00:23 <Sasha> you know what else is for the weak?
06:00:30 <Sasha> CORPOREAL FORMS
06:00:58 <elliott> catseye: SO DID YOU DEBUG MY CODE
06:01:47 <catseye> i've got it all figured out, man
06:01:53 <catseye> but i'm going to sleep
06:01:55 <catseye> good night
06:01:55 <elliott> catseye: DARN
06:01:59 <elliott> catseye: HAVE A BAD NIGHT
06:02:05 <Sasha> bye
06:02:15 -!- catseye has quit (Quit: leaving).
06:10:27 -!- augur has joined.
06:25:59 -!- augur has quit (Remote host closed the connection).
06:42:28 -!- wareya has quit (Ping timeout: 252 seconds).
06:44:00 <elliott> "Did you just DETERMINE the capital of Spain?" --http://www.viruscomix.com/page490.html
06:44:15 <elliott> And with that -- and a broken boot sector, too -- I leave you.
06:44:19 -!- elliott has quit (Quit: Leaving).
06:44:41 -!- wareya has joined.
06:44:55 -!- augur has joined.
07:06:59 -!- sftp has joined.
07:46:17 <myndzi> inb4 negabinary
07:46:46 <myndzi> also: i never thought i'd meet another person who counts binary on their fingers, but then i realized what channel i'm in ;)
07:46:58 <myndzi> i use palms towards me though, so right thumb is LSB
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
09:29:18 -!- sftp has quit (Remote host closed the connection).
09:41:46 -!- Quadlex has quit (Ping timeout: 252 seconds).
09:42:32 -!- Quadlex has joined.
09:47:21 -!- Quadlex has quit (Ping timeout: 240 seconds).
09:51:41 -!- Quadlex has joined.
10:14:20 -!- MigoMipo has joined.
10:36:56 -!- p_q has quit (Ping timeout: 255 seconds).
10:40:16 -!- p_q has joined.
10:51:05 -!- ais523 has joined.
10:53:35 -!- augur has quit (Read error: Connection reset by peer).
10:55:48 -!- augur has joined.
11:44:26 -!- wareya has quit (Ping timeout: 255 seconds).
11:48:48 -!- ais523 has quit (Remote host closed the connection).
12:12:47 -!- ais523 has joined.
12:17:17 -!- Deewiant has quit (Ping timeout: 255 seconds).
12:20:12 -!- wareya has joined.
12:23:53 -!- Deewiant has joined.
12:37:18 -!- BeholdMyGlory has joined.
12:40:26 -!- rodgort has quit (Quit: Coyote finally caught me).
12:40:41 -!- rodgort has joined.
12:43:47 -!- FireFly has joined.
12:46:59 -!- fungot has quit (Read error: Operation timed out).
12:47:10 -!- fizzie has quit (Ping timeout: 250 seconds).
12:50:51 -!- fizzie has joined.
13:00:52 -!- ais523 has quit (Quit: Page closed).
14:56:04 -!- ais523 has joined.
15:15:01 <Vorpal> why on earth is configuring which program should open a given file type so hard in gnome? There is a checkbox to change default when selecting "open with". Thats all. No place to remove apps from that list for example.
15:15:50 <Vorpal> I resorted to editing the underlying .ini-style config file
15:19:19 <Vorpal> Other somewhat related issue: wine likes to steal associations for stuff like *.jpg, *.txt and so on for the included wine-notepad, wine-browser and so on. And keeps adding them back even if you remove them. Disabling that took some work as well.
15:20:15 <Vorpal> Neither thing would be easy for a novice-user. Things like this are probably why we haven't yet seen the "year of the linux desktop". Heh.
15:20:23 <Vorpal> oh btw, hi ais523
15:21:27 <fizzie> You can open Nautilus, select a file of given type, do right-click + properties + "open with"; that gives you a list (with add/remove/reset options) for that file type.
15:21:33 <fizzie> I'm not sure if there's some central place, though.
15:22:15 <ais523> Vorpal: hi
15:22:16 <Vorpal> fizzie, I'm pretty sure there is no central place. I found one for KDE though.
15:22:19 <ais523> I'm in the middle of teaching my students atm
15:22:24 <ais523> but one at a time, at 12-minute intervals
15:22:26 <Vorpal> ais523, ah ok
15:22:31 <Vorpal> ais523, java?
15:22:33 <ais523> so presumably I'll do loads of talking up to but not including :24
15:22:35 <ais523> yes, java
15:22:43 <ais523> IRC's open for me to check up on in the gaps in between
15:22:51 <Vorpal> okay
15:23:14 <Vorpal> ais523, won't take your time with fea^W^W^Wstuff then!
15:23:30 <ais523> ^W = delete last word
15:23:39 <ais523> so that's "ais523, won't take your stuff then"
15:23:47 <Vorpal> ais523, oh right, haven't slept for over 24h
15:23:50 <ais523> which is presumably correct, if not what you meant to say
15:23:54 <ais523> also, why avoid sleep for that long?
15:24:12 <Vorpal> ais523, not intentional, trust me. I had an exam this morning so...
15:24:19 <Vorpal> just couldn't sleep this night
15:24:25 <ais523> so sleeping before it would have been a good idea?
15:24:39 <Vorpal> ais523, yes, I tried but didn't work
15:24:45 <Vorpal> it didn't*
15:33:49 -!- wareya has quit (Ping timeout: 240 seconds).
15:44:01 <ais523> what was the exam about, anyway?
15:58:23 -!- Sgeo has joined.
15:59:07 <Sgeo> *sigh*
15:59:24 <Sgeo> If people weren't so afraid of following instructions, things would be much easier
15:59:27 <Sgeo> Some printer wasn't working
15:59:47 <Sgeo> I "fixed" it by following prompts that were on the screen and choosing to change the paper tray that it used
16:03:13 -!- GregorR has joined.
16:03:40 -!- GregorR has changed nick to Guest55736.
16:05:25 <Sgeo> Guests can only watch the chat
16:08:57 <ais523> Guest55736: stop impersonating Gregor!
16:09:08 -!- Gregor has changed nick to Guest395.
16:09:38 -!- Guest55736 has changed nick to Gregor.
16:09:52 <Gregor> I shouldn't have my BNC log in for me when it doesn't know my nickserv password :P
16:16:12 * Jackoz mumbles
16:16:23 <Jackoz> good afternoon :)
16:21:26 -!- wareya has joined.
16:24:47 -!- augur has quit (Remote host closed the connection).
16:47:50 -!- MigoMipo_ has joined.
16:49:43 -!- p_q has quit (Ping timeout: 245 seconds).
16:50:28 -!- MigoMipo has quit (Ping timeout: 240 seconds).
16:55:27 -!- Phantom_Hoover has joined.
16:59:26 -!- Sgeo has quit (Read error: Connection reset by peer).
16:59:53 -!- Sgeo has joined.
17:04:43 <Vorpal> <ais523> what was the exam about, anyway? <-- computer networks
17:05:37 <Vorpal> <Sgeo> I "fixed" it by following prompts that were on the screen and choosing to change the paper tray that it used <-- do you seriously expect people to read any dialogue boxes?
17:06:12 <Sgeo> Wasn't a dialog box, it was a message on the printer
17:06:14 <Sgeo> But yeah
17:06:43 <Sgeo> Wish people did
17:07:12 <Vorpal> Sgeo, that is even less likely
17:07:34 <Phantom_Hoover> Sgeo, what did you "fix"?
17:08:50 <Sgeo> Switched the printer to tray 2
17:09:21 -!- FireFly|n900 has quit (Quit: ->).
17:11:09 -!- Sgeo has quit (Read error: Connection reset by peer).
17:31:21 -!- sftp has joined.
17:33:39 <Guest395> Your printer-fixing prowess is unohyou'regone never mind.
17:35:57 -!- Quadrescence has quit (Quit: omghaahhahaohwow).
18:01:34 -!- augur has joined.
18:07:43 -!- Gregor has quit (Disconnected by services).
18:07:48 -!- Guest395 has changed nick to Gregor.
18:08:13 -!- GregorR has joined.
18:08:35 -!- GregorR has changed nick to Guest7928.
18:10:34 -!- Guest7928 has quit (Client Quit).
18:14:00 -!- cpressey has joined.
18:17:06 -!- cpressey has set topic: 11 days since last oerjan sighting | http://esolangs.org/wiki/ | DEAD SERIOUS | http://tunes.org/~nef/logs/esoteric/?C=M;O=D.
18:18:55 <cpressey> he's probably on vacation
18:19:01 <cpressey> or dead
18:19:15 <Gregor> Or in a well.
18:19:28 <Gregor> Or on vacation, dead in a well.
18:19:50 <fizzie> The things people do for fun nowadays.
18:20:52 -!- ais523 has quit (Quit: Page closed).
18:24:58 -!- sebbu2 has joined.
18:28:03 -!- sebbu has quit (Ping timeout: 245 seconds).
18:28:03 -!- sebbu2 has changed nick to sebbu.
18:32:38 -!- Phantom_Hoover has quit (Ping timeout: 245 seconds).
18:34:57 -!- tombom has joined.
18:45:47 -!- Phantom_Hoover has joined.
18:49:21 <Gregor> Why does my AC adapter smell like burning solder ...
18:52:13 <cpressey> Parfum du overload
18:58:52 -!- poiuy_qwert has joined.
19:13:50 -!- elliott has joined.
19:14:10 <Ilari> Not a good thing?
19:14:36 <elliott> 07:15:01 <Vorpal> why on earth is configuring which program should open a given file type so hard in gnome? There is a checkbox to change default when selecting "open with". Thats all. No place to remove apps from that list for example.
19:14:36 <elliott> 07:15:50 <Vorpal> I resorted to editing the underlying .ini-style config file
19:14:36 <elliott> 07:19:19 <Vorpal> Other somewhat related issue: wine likes to steal associations for stuff like *.jpg, *.txt and so on for the included wine-notepad, wine-browser and so on. And keeps adding them back even if you remove them. Disabling that took some work as well.
19:14:36 <elliott> 07:20:15 <Vorpal> Neither thing would be easy for a novice-user. Things like this are probably why we haven't yet seen the "year of the linux desktop". Heh.
19:14:39 -!- ais523 has joined.
19:14:42 <elliott> Normal people don't configure their apps.
19:14:46 <elliott> Normal people don't use Wine.
19:14:55 <elliott> Wine doing that sucks, and Gnome's feature could be more obvious,
19:15:01 <elliott> but that is not a problem for "normal people".
19:15:30 <elliott> hi ais523
19:15:43 <elliott> good to see you; haven't in a while
19:17:12 <Jackoz> real users don't use linux either
19:17:17 <Jackoz> they just go with plan9
19:17:26 <elliott> Jackoz: i swear, i had my pitchfork out
19:17:31 <elliott> then you totally redeemed yourself
19:17:33 <elliott> Jackoz++
19:17:54 <Jackoz> or, if they are able to manage bootloader, I can allow them to use their own OSes
19:19:05 <Jackoz> elliott: you were scared about what? microsoft windows? rofl
19:19:16 <elliott> Jackoz: BSDs or, hell, OS X :)
19:20:39 <Jackoz> should I give this book (http://www.amazon.com/Purely-Functional-Structures-Chris-Okasaki/dp/0521663504) a try?
19:20:50 <Vorpal> <elliott> Jackoz: i swear, i had my pitchfork out <-- BSD joke right?
19:20:57 <elliott> Vorpal: no.
19:21:02 <elliott> Jackoz: YES!
19:21:06 <elliott> Jackoz: Chris Okasaki is wonderful
19:21:14 <Vorpal> elliott, worked as one anyway
19:21:23 <Jackoz> I was thinking about buying it, now you convinced me
19:21:42 <elliott> Jackoz: The examples in the book use a version of ML (not OCaml), too, so you probably won't have much trouble reading them.
19:21:55 <elliott> (Laziness is done with a little ad hoc language extension, heh... He does give equivalents in Haskell though.)
19:22:11 <Jackoz> elliott: another dialect? they should be all quite similar
19:22:19 <elliott> Jackoz: Standard ML
19:22:25 <elliott> the original that your poseur OCaml is derived from ;)
19:22:39 <Jackoz> elliott: oh SML, btw laziness shouldn't be so hard to implement
19:22:58 <elliott> Jackoz: yeah he just uses uh $x to denote lazy x i think
19:23:02 <elliott> not sure he actually implemented it
19:23:02 -!- cheater99 has quit (Ping timeout: 245 seconds).
19:23:07 <elliott> but why would you want to *run* code?!?!?
19:23:14 <elliott> we're theoreticians! pfft!
19:23:24 <Jackoz> elliott: what I was wondering is if he will talk about complex things, cause easy ones are already enough mastered
19:24:11 <elliott> Jackoz: I've never heard of anyone who doesn't recommend it :) I haven't read the whole thing myself but I've read parts and a lot of other things Chris Okasaki has written, and I've heard many, many recommendations from cool people, so.
19:24:42 <elliott> Jackoz: You could always click that "look inside" link and get a selection of probably 5 of the most useless pages. :P
19:24:52 <Jackoz> elliott: ok, you've been enough convincing again.. since this kind of books is usually not so much cheap :)
19:25:11 <Jackoz> elliott: I just clicked the "look-rapidshare-inside" big red button
19:25:18 <elliott> Yeah, CS books are... impressively expensive.
19:25:19 <elliott> hehe
19:25:32 <elliott> Jackoz: I couldn't read a whole book on a computer.
19:25:37 <elliott> I'd have to at least print it out.
19:26:51 <Jackoz> me neither, I definetely love the flavour of paper when I hold a book, but before spending some money a peek is needed
19:29:06 <Jackoz> then I bought a pivot monitor just to have some comfort in reading books
19:32:19 <elliott> I need an eBook reader that doesn't suck ass.
19:32:30 <elliott> Maybe Gregor will convince me to get one of those iREXs.
19:32:38 <elliott> *IREX.
19:32:59 <elliott> "As publicly announced, IREX Technologies is no longer trading and this website has been permanently closed."
19:33:01 <elliott> Gregor: Never mind!
19:33:29 <elliott> They went bankrupt because of the FCC :P
19:35:10 <elliott> 09:33:39 <Guest395> Your printer-fixing prowess is unohyou'regone never mind.
19:35:13 <elliott> whut
19:35:25 <elliott> You switched back to Gregor and there's no record of anyone joining or /nicking in the interim in the logs
19:35:39 <Gregor> elliott: Yeah, don't get an IREX :P
19:35:54 -!- zzo38 has joined.
19:35:56 <elliott> 08:09:08 --- nick: Gregor -> Guest395
19:35:56 <elliott> 08:09:38 --- nick: Guest55736 -> Gregor
19:36:08 <elliott> [time passes, no log discontinuity, no nicks to Guest395, no joins of that nick either]
19:36:09 <elliott> Then
19:36:12 <elliott> 09:33:39 <Guest395> Your printer-fixing prowess is unohyou'regone never mind.
19:36:14 <elliott> WHAAAAAAT
19:36:24 <Gregor> elliott: 1) I accidentally had two systems logging in and to set my nick, 2) My BNC doesn't know my nickserv pass.
19:36:39 <elliott> Gregor: Oh, oh I see.
19:36:40 <elliott> I thought it was
19:36:42 <elliott> Gregor -> GuestX
19:36:45 <elliott> GuestX -> Gregor
19:36:53 <elliott> Gregor: You broke my brain with your numbers.
19:37:35 -!- cheater99 has joined.
19:44:25 <Vorpal> elliott, I'm a bit confused about "unohyou'regone never mind" though
19:44:38 <elliott> Try applying the splitting engine.;
19:44:41 <elliott> s/;$//
19:44:58 <Vorpal> hm
19:46:19 <Vorpal> ah
19:47:04 -!- Quadrescence has joined.
19:47:33 <Vorpal> elliott, doyouthinktextwrittenlikethisishardtoreadornot?
19:47:58 <elliott> Vorpal: Not very. And besides, it was a non-word three words.
19:48:02 <elliott> *non-word and three
19:48:11 <Vorpal> elliott, yes
19:48:21 <olsner> elliott: did you do anything more on the boot sector that went into protected mode?
19:48:30 <Vorpal> elliott, I just generalised the issue
19:48:38 <elliott> olsner: I am still working on it; currently, the issue is that it doesn't actually load the kernel.
19:48:46 <elliott> olsner: This makes *no sense whatsoever*.
19:49:29 <Vorpal> elliott, maybeyourenteredthenextsector,thatisrunoutofbytesintheMBR?
19:49:56 <elliott> Vorpal: If I run out of bytes in the MBR my padding would be negative and it would not assemble. No: It is 512 bytes exactly. The issue is that the BIOS interrupt somehow does not load the kernel.
19:50:04 <elliott> The code is only 208 bytes or so, anyway.
19:50:31 <Vorpal> elliott, how easy was "maybeyourentered" to parse, did you need to backtrack from "you're" to "you en[tered]"?
19:50:55 <elliott> This is beyond ridiculous.
19:51:00 <Vorpal> elliott, true
19:52:01 <Vorpal> elliott, I haven't slept for about 34 hours though
19:52:26 <Vorpal> I just couldn't sleep this night. Sigh... some sort of temporary insomnia I guess.
19:52:34 <elliott> Vorpal: wtf -- I couldn't either
19:52:50 <elliott> Vorpal: Admittedly it was about 8am when I started sleepcrastinating and actually went to bed.
19:53:02 <elliott> But then it was 12 am and nothing had happened.
19:53:11 <elliott> This is why it is almost 7 pm now and I've just woken up.
19:53:16 <Vorpal> elliott, am, that is [0,12) right?
19:53:23 <Vorpal> or is it [12,24) ?
19:53:25 <elliott> *12 pm
19:53:31 <Vorpal> I can never keep them apart
19:53:33 <elliott> From midnight onwards:
19:53:55 <elliott> 12 am, 1 am, 2 am, 3 am, 4 am, 5 am, 6 am, 7 am, 8 am, 9 am, 10 am, 11 am, 12 pm, 1 pm, 2 pm, 3 pm, 4 pm, 5 pm, 6 pm, 7 pm, 8 pm, 9 pm, 10 pm, 11 pm
19:53:59 <Vorpal> anyway, I couldn't sleep in the day, had an exam
19:54:06 <Vorpal> during*
19:54:17 <elliott> Holidays here. Although ending rapidly..
19:54:44 <Vorpal> holiday week here, but only for high school and lower
19:55:03 <zzo38> I think TeX contains a lot of lies --- there is one error message that says "Missing { inserted", but actually it isn't inserting anything; what it does is skip the { if there is one, and otherwise displays the error message.
19:55:22 <Vorpal> elliott, has the innovative name of höstlov (en:autumn holiday)
19:55:39 <elliott> Vorpal: It's called "half term" here.
19:55:42 <elliott> And yeah, high school and lower.
19:55:53 <Vorpal> well, it is the current week iirc
19:56:04 <elliott> zzo38: I think it means "I'm pretending there was a { here."
19:56:21 <elliott> Vorpal: It was last week, but today is ~Teacher training day~
19:56:25 <zzo38> elliott: Yes, that would be a better way of writing it, in my opinion.
19:56:30 <Vorpal> elliott, for me it is called "exam week". Oh well, I have more days than usual free at least.
19:56:39 <Vorpal> elliott, oh those
19:56:49 <elliott> Pretty sure they just eat biscuits all day.
19:56:55 <olsner> elliott: at the risk of being obvious, it sounds like the problem is that you're doing something wrong
19:57:01 <Vorpal> elliott, you don't such during university you know
19:57:09 <elliott> Vorpal: What, eat biscuits?
19:57:10 <elliott> olsner: Yes, I considered that.
19:57:28 <elliott> olsner: However I have directly ripped off cpressey's code again almost word for word and it *just doesn't work*.
19:57:33 <Vorpal> elliott, no, skipped teaching due to teachers getting taught
19:57:43 <elliott> Vorpal: Uh, yeah, I know that ...
19:57:49 <elliott> I'm not a moron.
19:57:52 <Vorpal> elliott, but biscuits, short supply too
19:58:08 <elliott> olsner: http://sprunge.us/eKMD
19:58:24 <elliott> olsner: Includes magical debug code! After "boot!" you see the first few bytes of the brave new world^W^W^Wloaded kernel.
19:58:27 <elliott> Which are zeroes, as it stands.
19:58:34 <olsner> hmm, I have some disk code here, but I don't know how it works, and I don't know if it actually supports a >1 sector kernel image
19:58:38 <Vorpal> elliott, and the black market biscuits are too expensive for most students.
19:58:46 <elliott> Vorpal: Theft.
19:59:03 <elliott> olsner: Well, the BIOS call can load N sectors with a parameter for reasonable N.
19:59:03 <Vorpal> elliott, you mean like, raid the cafeterias?
19:59:12 <elliott> Vorpal: Sure. Or whatever shops are nearby.
20:00:00 <Vorpal> elliott, campus is located at the edge of the city. Modern university. Not one of the old ones spread out over half the town centre
20:00:25 <elliott> Vorpal: Psht!
20:00:48 <olsner> hmm, what does dx=0 mean here? my code uses mov dx,0x0180 before all the disk calls
20:00:53 <elliott> I gather that Oxford is like an unkillable patch of weeds. :)
20:01:00 <Vorpal> elliott, should be fixable once the time travel lab gets some actual results
20:01:15 <elliott> DH = head number
20:01:15 <elliott> DL = drive number (bit 7 set for hard disk)
20:01:33 -!- p_q has joined.
20:01:43 <elliott> So you read from the 0x80th head (??????????) of drive 1.
20:01:56 <Vorpal> elliott, I can imagine (wrt Oxford)
20:02:00 <olsner> no, head 1 of first hard drive
20:02:14 <elliott> olsner: Oh, right.
20:02:18 <elliott> olsner: Well, I'm on a floppy.
20:02:29 <elliott> olsner: Also, *pretty* sure that DL gets initialised by the BIOS.
20:02:35 <olsner> or 0th hard drive? or "the" boot drive? not sure which is which here
20:02:40 <elliott> olsner: The worst thing is that *this* *worked*.
20:02:52 <elliott> olsner: If I filled the floppy with /dev/urandom, it'd do crazy shit.
20:02:58 <Vorpal> <elliott> DL = drive number (bit 7 set for hard disk) <-- if not set, floppy?
20:02:58 <elliott> olsner: If I filled it with /dev/zero, the same thing every time.
20:03:04 <elliott> olsner: So *why* is it failing now???
20:03:07 <elliott> Vorpal: Dunno. Guess so.
20:03:11 <Vorpal> elliott, what about cds then? they use something else?
20:03:17 <elliott> CDs are weird.
20:03:25 <Vorpal> oh right, now I remember
20:03:25 <zzo38> DL gets initialized by the BIOS (at least in Bochs, it does, anyways).
20:03:27 <elliott> Don't think BIOSes can do them for you.
20:03:29 <Vorpal> el torrito or something?
20:03:56 <elliott> yes
20:03:58 <elliott> El Torito
20:04:07 <olsner> could it be that you're mistaking the address where the stuff is loaded?
20:04:15 <Vorpal> elliott, why that strange name I wonders
20:04:17 <Vorpal> wonder*
20:04:22 -!- poiuy_qwert has quit (Ping timeout: 252 seconds).
20:04:26 <Vorpal> gah, don't change a /me to a /msg in the middle
20:05:03 <elliott> According to legend, the El Torito CD/DVD extension to ISO 9660 gained its name because its design originated in an El Torito restaurant in Irvine, California.[2] The initial two authors were Curtis Stevens, of Phoenix Technologies, and Stan Merkin, of IBM.[2]
20:05:10 <elliott> El Torito (Spanish for "the little bull") is a Mexican restaurant chain located primarily in California, with a small number of outlets in Oregon, Arizona, and Japan. They have a total of 69 outlets.[1] El Torito is one of several Mexican cuisine restaurants operated by Real Mex Restaurants. The executive chef is Pepe Lopez.
20:05:10 <elliott> Founded in 1954, they claim to be "a pioneer in the California full service Mexican casual dining restaurant segment. Leveraging more than 50 years of operational experience, El Torito is currently the largest Mexican restaurant brand in California in terms of number of restaurants and operates franchise locations in Japan, Turkey and the Middle East."[2]
20:05:36 <Vorpal> heh
20:05:51 <elliott> Fuck OFF Jimbo, I'm not giving you any money.
20:05:55 <zzo38> Does the TRIP test allow that if I write C-TeX, I can make the error messages different? Or only the help messages?
20:06:14 <elliott> Vorpal: There's also:
20:06:14 <Vorpal> zzo38, what?
20:06:15 <elliott> The Rock Ridge Interchange Protocol (RRIP, IEEE P1282) is an extension to the ISO 9660 volume format, commonly used on CDROM and DVD media, which adds POSIX file system semantics. The availability of these extension properties allows for better integration with Unix and Unix-like operating systems.
20:06:15 <elliott> RRIP was developed by Andrew Young of Young Minds, Inc. in the early 1990s. The standard takes its name from the fictional town Rock Ridge in Mel Brooks' film Blazing Saddles.
20:06:17 <elliott> zzo38: I don't know.
20:06:34 <Vorpal> elliott, I know what rock ridge is, though I never thought about the reason for the name
20:07:11 <Vorpal> elliott, I mean, Joilet. Is it named after Joilet, Arkansas or what?
20:07:13 <Vorpal> ;P
20:07:27 -!- zzo38 has quit (Quit: I don't know).
20:07:36 <Vorpal> huh
20:07:39 <Vorpal> strange quit
20:07:47 <olsner> who would remember the name of the fictional town in blazing saddles?
20:08:18 <elliott> Vorpal: It's Microsoft; probably named after jolly toilets.
20:08:26 <Vorpal> olsner, a creepily fanish fan!
20:08:36 <elliott> olsner: Andrew Young
20:08:55 <Vorpal> elliott, *shudder* that made me think of MS Bob
20:09:09 <elliott> I hope the MS Bob recycle bin was a toilet.
20:09:13 <elliott> "Flush"
20:09:16 <Vorpal> elliott, google?
20:09:22 <elliott> It won't be :P
20:09:41 <elliott> "Microsoft originally owned the domain name bob.com, but traded it to Bob Kerstein for the windows2000.com domain name."
20:09:45 <elliott> What a strategy.
20:09:49 <elliott> Now if he had been called Dave...
20:10:06 <elliott> Vorpal: "Bob's install images are used as "padding" on the original Windows XP install CDs as an anti-piracy measure."
20:11:09 <Vorpal> elliott, you know, you could easily do this on your computer. 10 minutes max: 7 minutes to find good images to use. 1 minute to create a new theme and symlink the unchanged stuff in. half a minute to put new icons in, and then 20 seconds to change to that theme
20:11:17 <Vorpal> (for the toilet in gnome I meant)
20:11:34 -!- myndzi\ has joined.
20:11:40 <elliott> Vorpal: I don't use Gnome :P
20:11:53 <Vorpal> elliott, well, which DE/WM do you currently use?
20:12:02 <elliott> Xfce. Admittedly it uses the same icons.
20:12:11 <elliott> But really, the only time I ever see the Wastebasket is in Thunar :P
20:12:35 <Vorpal> elliott, the wastebasket? Oh you must mean the toilet. hah
20:12:50 <elliott> mv old-data ~/.shitter
20:12:58 <Vorpal> yes I know they can't draw a toilet
20:13:00 <Vorpal> very strange
20:13:26 <Vorpal> why do the artist always screw up toilet icons so they look more like paperbins
20:13:56 <elliott> Vorpal: Linux users don't leave the room; they've never seen a toilet.
20:14:09 <elliott> Although they'll need to change their XXXXXXXXL-size nappy soon.
20:14:26 <elliott> Wow did not need that mental image.
20:14:38 <elliott> olsner: SO HAVE YOU FIGURED IT OUT YET
20:15:01 -!- myndzi has quit (Ping timeout: 272 seconds).
20:15:49 <Vorpal> elliott, I concluded in terms of "hi I'm a mac..." openbsd would be the linux "tronman" but with a tinfoil armour instead (one size too small) and a tie added.
20:16:36 <Vorpal> the tie would be rather badly put on
20:16:54 <elliott> Vorpal: and with really puffed up cheeks, red in the face with flame
20:16:59 <elliott> perhaps holding a flamethrower
20:17:03 <Vorpal> elliott, oh definitely
20:17:33 <elliott> Vorpal: also there'd be little patches where there's no armour, but they'd have "ONLY TWO REMOTE HOLES" scribbled on.
20:18:06 <elliott> then when he decides to talk to someone -- his head is in the armour too -- he opens it up and a swarm of bees attack him and he dies. Then he holds up a flag saying "I said in the DEFAULT installation!".
20:18:11 <Vorpal> elliott, indeed. but I didn't like to draw such a mental NSFW picture (considering where those holes are...)
20:18:24 <elliott> No.
20:19:06 <cpressey> NSFVI
20:19:07 <elliott> @^@^@^@^@^@Uªôéúÿÿÿ^@^@^@^@^@^@^@^@^@^@^@^@^@^@
20:19:09 <elliott> THIS IS INEXPLICABLE
20:19:26 <Vorpal> cpressey, Not Safe For Vertical Integration?
20:19:35 <Vorpal> elliott, ah there is a clear pattern to that!
20:19:42 <cpressey> Not Safe for Vorpal's Imagination
20:19:52 <Vorpal> cpressey, oh, touche indeed
20:20:01 <elliott> +-----------------------------------------------------------+
20:20:01 <elliott> +-----------------------------------------------------------+
20:20:11 <elliott> ("The system saves every version of every project, so nothing is ever lost." Aww.)
20:20:21 <Vorpal> elliott, where is that from?
20:20:33 <elliott> OMeta/JS
20:20:59 <Vorpal> elliott, it looks almost like frama-c, which is french which could explain why they use "project" to refer to "immutable processed version of the AST"
20:21:18 <elliott> Presumably, they mean "projection".
20:21:20 <elliott> Or something.
20:21:29 <Vorpal> so as read in is one project, then value analysis creates a new project
20:21:42 <Vorpal> elliott, yes probably but the result is rather weird :P
20:22:14 <Vorpal> elliott, the english is quite good elsewhere in general. Just a few small things that stands out as odd, like this
20:23:31 <Vorpal> elliott, can't find any desc on ometa/js when googling, just interactive "try it out online" kind of things
20:23:44 <Vorpal> so, what is it
20:23:44 <elliott> Vorpal: that is what ometa/js is
20:23:47 <elliott> js = javascript
20:23:52 <Vorpal> elliott, and ometa?
20:23:56 <elliott> http://www.tinlizzie.org/ometa/
20:24:15 <elliott> a meta-meta-parser-framework-meta object framework parser meta meta.
20:24:23 <Vorpal> elliott, hm, any good? Or just yet another one?
20:24:36 <elliott> Vorpal: Mu.
20:24:46 <elliott> Vorpal: It's a Viewpoints Research Institute project.
20:24:47 <Vorpal> elliott, well it said programming language on the page
20:24:50 <Vorpal> which is what I meant
20:24:55 <elliott> It did not.
20:25:02 <Vorpal> "yet another programming language, or one that stands out?"
20:25:11 <Vorpal> oh wait indeed it didn't
20:25:14 <Vorpal> "OMeta is a new object-oriented language for pattern matching"
20:25:25 <Vorpal> well, object oriented language fooled me
20:25:45 <elliott> It's half-research, half lovely VPRI madness.
20:26:13 <Vorpal> elliott, what else have they done? Trying to remember what they are famous for
20:26:40 <elliott> Vorpal: Alan Kay works there, and you may have heard of COLA/idris/pepsi/...
20:26:50 <elliott> *idst
20:26:57 <Vorpal> pepsi certainly but not in this context I think
20:27:17 <elliott> http://piumarta.com/software/cola/ has some information.
20:27:25 <elliott> cola (aka Idst, Jolt, the SODA languages, &c.) is an ongoing project to create a springboard for investigating new computing paradigms. Everything in it is late-bound, the intention being that any paradigm (existing or yet to be invented, formal complexity notwithstanding) be easily and efficiently mapped to it and made available to the user. It is a small part (the implementation vehicle) of the reinventing computing project.
20:27:43 <Vorpal> very... meta?
20:28:42 <elliott> Vorpal: COLA is -- uh, I think "COLA" is the word for this component -- a Smalltalk-esque language on top of it all. VPRI have used it to do insane things such as:
20:28:53 <elliott> You know how in the IP (at least v4) RFC, it has a diagram of a packet?
20:29:02 <elliott> They defined their packet structure by:
20:29:08 <Vorpal> elliott, I got stuck at figuring out what "be easily and efficiently mapped to it and made available to the user" actually meant in practical terms
20:29:09 <elliott> - Writing a parser for the ASCII diagrams
20:29:13 <elliott> - Pasting the diagram in from the RFC
20:29:14 <Vorpal> I mean, it parses fine
20:29:21 <Vorpal> but uh
20:29:40 <Vorpal> elliott, right, I heard about that
20:29:56 <Vorpal> elliott, wasn't there some language with a name starting with E that supported that?
20:30:01 <elliott> Vorpal: tl;dr user-as-programming, meta, etc.
20:30:06 <elliott> E? Uhh...
20:30:10 <elliott> Not E itself?
20:30:15 <elliott> Vorpal: Epigram?
20:30:20 <elliott> I don't think Epigram does that
20:30:20 <Vorpal> elliott, ah yes!
20:30:21 <elliott> *that.
20:30:23 <Vorpal> hm
20:30:24 <elliott> I may be wrong.
20:30:28 <elliott> Trying to rack my brains...
20:30:28 <Vorpal> might have confused it
20:30:31 <Vorpal> elliott, might have *dreamt it*
20:30:32 <elliott> It sort of rings a bell for that but...
20:30:47 <Vorpal> I read something about visual structs and then about epigram quite recently
20:30:55 <elliott> Vorpal: Whatever, anyway, tl;dr: VPRI is Alan Kay's organisation dedicated to being entirely too awesome on a regular basis.
20:31:31 <Vorpal> elliott, http://en.wikipedia.org/wiki/Epigram_%28programming_language%29 seems to have quite fancy decls anyway
20:31:37 <Vorpal> it might be that I confused it with
20:31:47 <elliott> Vorpal: Yes, Epigram 1 is... queer.
20:31:58 <elliott> (Epigram *2* we're not entirely sure is a language. Or has syntax.)
20:32:03 <elliott> (Or can be executed.)
20:32:10 <Vorpal> elliott, awesome!
20:32:10 <elliott> (Or is even thinkable of.)
20:32:20 <elliott> And we've been trying to figure it out since, what, 2005?
20:32:22 <Vorpal> elliott, huh
20:32:29 <Vorpal> that means it must intersect with feather
20:32:38 <elliott> Vorpal: No, it's just extreme vapourware.
20:32:42 <elliott> Stuff happens, but at an amazingly glacial rate.
20:32:43 <Vorpal> question is now, if it is a subset, superset, or just boring intersection
20:32:52 <Vorpal> elliott, you mean like feather?
20:32:56 <elliott> And Connor keeps deciding to chuck things out and rewrite whole swathes of the language.
20:33:04 <elliott> Especially when it turns out that whoops, that won't work.
20:33:16 <Vorpal> elliott, second system syndrome?
20:34:10 <elliott> Vorpal: It's academia. The whole thing is practically an exercise in third system syndrome.
20:34:40 <Vorpal> elliott, anyway I'm sure VPRI is awesome but it is a bit too meta to make any sense when I'm as sleep deprived as I am.
20:35:00 <elliott> Don't worry, it doesn't make any sense when you're awake either.
20:35:01 <Vorpal> elliott, as long as you can produce papers on it at a steady rate
20:35:19 <Vorpal> elliott, I'm not sure if that is good, bad or lacks emotional value
20:35:28 <elliott> It's meta.
20:35:44 <Vorpal> elliott, wow, I would never have guessed! ;P
20:35:54 <elliott> Vorpal: Anyway, VPRI don't need to write papers, they have FUNDING!
20:36:05 <elliott> http://www.viewpointsresearch.org/html/sponsors.htm
20:36:06 <Vorpal> elliott, I meant for epigram mostly
20:36:13 <elliott> SNF, Intel, Motorola, HP, Nokia.
20:36:21 <elliott> And in the past: ARPA, Xerox PARC, Atari, Apple, Disney.
20:36:27 <elliott> *NFS
20:36:28 <elliott> *NSF
20:37:00 <Vorpal> elliott, those companies would want you to get results. Not getting results = no more funding. So they can't go too far into >1 system syndrome
20:37:16 <elliott> Vorpal: VPRI get... few "results" as such.
20:37:31 <Vorpal> elliott, hm, then why do intel still fund them
20:37:37 <elliott> Vorpal: They did Squeak Etoys and Croquet.
20:37:46 <elliott> And they *do* write papers and stuff.
20:37:51 <elliott> But, uh, :)
20:37:57 <Vorpal> elliott, Croquet... what was that now again
20:38:16 <Vorpal> familiar, bell is definitely ringing, but there is all echo around here
20:38:19 <elliott> Vorpal: A not-very-good 3D Smalltalk environment thing and oh god Sgeo is going to pipe up.
20:38:21 <Vorpal> so no clue from where
20:38:30 <elliott> Vorpal: It's an open project; VPRI aren't responsible for most of the badness. :)
20:38:32 <Vorpal> elliott, he is not in the channel atm :P
20:38:55 <Vorpal> elliott, and what did etoys do...
20:39:24 <elliott> Vorpal: http://www.linux.com/var/uploads/Image/articles/130014-1.png
20:39:39 <elliott> Vorpal: VPRI's official goal is "lol, computers + learning".
20:39:43 <elliott> But really, an awful lot of it is just awesome shit.
20:40:02 <Vorpal> elliott, hah. That explains so much about the awful colour theme of squeak
20:40:18 <elliott> Etoys is an addon. :p
20:40:28 <Vorpal> elliott, well, even without that it is quite... colourful
20:40:29 <olsner> elliott: I'm missing a kernel image, obviously, but otherwise it does seem to me that it successfully loads some garbage and jumps into it
20:40:54 <elliott> olsner: Well *that* it does not do, considering I put an infinite loop in there.
20:41:13 <elliott> olsner: How about I give you a .tgz?
20:41:14 <elliott> Something is up.
20:41:19 <olsner> after removing the infinite loop obviously :P
20:41:21 <elliott> Vorpal: Well, Disney.
20:41:37 <Vorpal> elliott, they are behind sqeuak?!
20:41:41 <Vorpal> squeak*
20:41:51 <elliott> Vorpal: It was derived directly from Smalltalk-80 by a group at Apple Computer that included some of the original Smalltalk-80 developers. Its development was continued by the same group at Walt Disney Imagineering, where it was intended for use in internal Disney projects.
20:42:01 <elliott> The colour scheme is just because fuck you. :)
20:42:06 <Vorpal> heh
20:42:29 <Vorpal> elliott, it isn't just the colours, it isn't just the shape of elements, it isn't just the icons. It is all three together.
20:42:42 <elliott> It is pretty bad.
20:42:44 <elliott> olsner: http://filebin.ca/eaxjwt/tempo.tar
20:42:55 <Vorpal> elliott, what, we agree on a UI being bad?
20:43:01 <elliott> Vorpal: Smalltalk-80 was much classier: http://tedkaehler.weather-dimensions.com/us/ted/resume/st80release-lic2.jpg
20:43:38 <Vorpal> elliott, possibly only due to 1 bit per pixel from the look of that image...
20:43:56 <elliott> Vorpal: You could easily add a few highlights and it'd still be nice.
20:43:59 <elliott> Of colour, that is.
20:44:06 <Vorpal> elliott, yes, it would even be nicer
20:44:15 <elliott> http://www.abclinuxu.cz/images/clanky/krivanek/smalltalk-80-2.png
20:44:16 <elliott> More.
20:44:18 <Vorpal> elliott, like, make non-active window borders dark grey or something
20:44:26 <elliott> http://www.abclinuxu.cz/images/clanky/krivanek/smalltalk-80-6.png
20:44:36 <Vorpal> elliott, no colours?
20:44:42 <elliott> Vorpal: It's the early 80s.
20:45:00 <Vorpal> elliott, not common even with greyscale then
20:45:09 <elliott> Vorpal: ?
20:45:26 <elliott> Vorpal: http://www.cosc.canterbury.ac.nz/wolfgang.kreutzer/cosc205/images/stShot1.gif Early Squeak, basically Smalltalk 80 + colours.
20:45:26 <Vorpal> elliott, that is b&w, not even 4 bit greyscale or such
20:45:31 <elliott> Admittedly not very nice colours.
20:45:44 <elliott> Vorpal: The Macintosh was 1-bit in 84.
20:45:55 <Vorpal> elliott, that actually looks better than modern squeak...
20:45:55 <elliott> http://www.cosc.canterbury.ac.nz/wolfgang.kreutzer/cosc205/images/stShot12.gif FUCKING OW MY EYES
20:46:16 <elliott> olsner: So have you fixed it yet?!?!?!?/1
20:46:21 <Vorpal> elliott, I hope this can be blamed on gamma or something
20:46:31 <elliott> Vorpal: IT CAN'T AIEEEEEE
20:46:35 <Vorpal> elliott, ouch
20:46:38 <olsner> elliott: nope, but I seem to have discovered how to connect gdb to bochs
20:46:51 <Vorpal> olsner, sounds like quite a feat
20:46:59 <elliott> Vorpal: bochs is designed to do that :P
20:47:12 <olsner> elliott: doesn't make it less of a feat :P
20:47:15 <Vorpal> elliott, I thought it had a built in debugger?
20:47:17 <Vorpal> and well
20:47:22 <Vorpal> everything with bochs is a feat
20:47:26 <elliott> Well, yeah.
20:47:42 <elliott> Every time I think "Oh, I should use bochs" I start crying.
20:48:05 <elliott> " It can also be used to run older software – such as PC games – which will not run on non-compatible, or too fast computers." --Wikipedia
20:48:07 <elliott> *"It
20:48:12 <elliott> I can't imagine any game wanting to run on a computer THAT slow!
20:48:13 <olsner> afaik, the built-in debugging amounts to having a grayed-out menu option for displaying memory contents, and a box that displays the registers (in real-time! making it too fast to see anything)
20:48:20 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
20:49:13 <Vorpal> elliott, for recording perfect frame timing?
20:49:41 <Vorpal> elliott, because you no longer need a software that allows you to go back to previous frame if you screwed up!
20:50:14 <elliott> Ooh, you could use bochs for tool-assisted speedruns.
20:50:21 <elliott> You get a whole hour to decide what input to give each frame.
20:50:23 <Vorpal> elliott, yes what I said basically
20:50:34 <elliott> Right.
20:50:37 <Vorpal> elliott, well, lets be fair. 45 minutes max on a modern computer
20:51:15 <Vorpal> probably could be as little as 40 minutes, but I doubt less than that
20:54:43 <Vorpal> http://www.viewpointsresearch.org/html/work/pichri.htm: "For example, the Wikipedia is impressive in its number of entries and that it has been made and sustained by the larger Internet community, but its content is mostly hyperlinked text with a few pictures and formulas. It is very far from rich dynamic computer media and from the kind of content that most learners need." <-- because there are only so
20:54:43 <Vorpal> many ways to graphically illustrate http://en.wikipedia.org/wiki/Affirming_a_disjunct (first result on clicking random article)
20:54:46 <Vorpal> elliott, ^
20:55:08 <elliott> and?
20:55:15 <elliott> VPRI are focused primarily on children learning
20:55:29 <Vorpal> elliott, well, wikipedia isn't just that though, so bad example maybe
20:55:54 <elliott> Sigh:
20:55:55 <elliott> "I blame java and bloated, resource-hogging platforms. The disk drive has increased in speed quite a bit in the last 10 years and is still the slowest thing in a computer (excluding the user). If we wrote all programs in efficient languages like C and ASM, our computers should be thousands of times faster than we perceive them to be today. The reliance on interpreted languages and bloated platforms (even the browser is considered a platform nowad
20:55:55 <elliott> ays and is mega-bloated if you ask me) but people continue to think that the advancements of hardware will make up for the lazy and bloated programming solutions that people come up with nowadays."
20:55:58 <elliott> Comment on the Loper OS blog.
20:56:04 <elliott> Because as we all know
20:56:10 <elliott> (1) GNOME is incredibly lightweight and speedy, and
20:56:15 <elliott> (2) Smalltalk was impossibly slow.
20:56:22 <Vorpal> XD
20:56:27 <Vorpal> elliott, what idiot wrote that?
20:56:43 <elliott> http://badcheese.com/; he was kind enough to leave a name and URL so we can all know to not listen to him in the future.
20:56:44 <Vorpal> though, gnome is not slow enough to cause any annoyance at least.
20:56:53 <elliott> GNOME has got better :)
20:57:01 <elliott> But it's certainly not super-C-speedy, that's for sure.
20:57:02 <Vorpal> elliott, well, I used KDE back when GNOME sucked
20:57:13 <Vorpal> elliott, of course, but as long as it is fast enough, who cares
20:57:25 <elliott> Well, see http://www.loper-os.org/?p=300, the post on which it is a comment :)
20:57:49 <elliott> GNOME is not quite fast enough for me to like it. It is okay though.
20:57:51 <elliott> KDE 4 is slower.
20:58:08 <Vorpal> elliott, metacity or compiz?
20:58:17 <Vorpal> elliott, I found metacity far more responsive
20:58:31 <elliott> I have used both.
20:58:36 <Vorpal> hm
20:58:49 <elliott> Anyway, existing DEs have far greater problems than speed.
20:59:01 <Vorpal> elliott, even on my old sempron 3300+ gnome is fast enough that I don't notice any speed difference compared to, say, twm
20:59:29 <elliott> "You can click the mouse on ANY area that you can see in the editor and the cursor will go there and allow you to start typing.
20:59:29 <elliott> If you position yourself at the beginning of the line and hit the left arrow, you will not budge.
20:59:29 <elliott> If you position yourself at the end of the line and hit the right arrow, you will keep moving right
20:59:29 <elliott> This is how IntelliJ IDEA works by default."
20:59:36 * elliott puts IntelliJ IDEA on his list of "weird things".
20:59:46 <cpressey> oh no
20:59:53 <elliott> cpressey: ?
20:59:59 <cpressey> i've heard of that thing
21:00:09 <Vorpal> elliott, actually that sounds almost like kate in block mode
21:00:16 <Vorpal> elliott, apart from the arrow at start of line
21:00:51 <Vorpal> elliott, it is useful to move and copy rectangular blocks rather than every letter between two points
21:00:56 <Vorpal> and such things
21:01:11 <Vorpal> elliott, I use it every now and then, try it out if you never used it
21:01:34 <elliott> I used it extensively when I used TextMate and I have developed a healthy hate of every other editor ever because I can't figure out how to do it quickly.
21:01:39 <elliott> With TextMate it's just alt+drag.
21:01:59 <Vorpal> elliott, it's a mode because it interacts with copy and paste too
21:02:03 <Vorpal> even from other apps
21:02:04 <cpressey> also, I'd just like to say, in Python, string.upper() should totally be a magical attribute (str.upper) that hides the method, because that would be so pythonic, i.e. conceptually incoherent
21:02:23 <Vorpal> elliott, in that, what pasting a multi-line thing does changes with this mode
21:02:33 <elliott> cpressey: Also, x.sort.
21:02:33 <cpressey> back to your regularly scheduled IntelliJ IDEA wtf'ing
21:02:38 <cpressey> elliott: yes totally
21:02:38 <elliott> print x.sort
21:02:39 <elliott> print x
21:02:41 <elliott> Yay!
21:02:43 <elliott> It's so convenient!
21:02:52 <Vorpal> cpressey, __upper__!
21:02:56 <Vorpal> (no reason)
21:02:59 <elliott> Vorpal: Oh, and the nicest thing about it in TextMate:
21:03:00 <Vorpal> (just more... python)
21:03:10 <elliott> Vorpal: If you alt-drag vertically across a certain bit and type, it *adds to all those lines*.
21:03:17 <cpressey> how about every method you could define has a __methodname__ counterpart
21:03:35 <elliott> Vorpal:
21:03:40 <elliott> b|lah
21:03:40 <elliott> q|uux
21:03:40 <elliott> a|sdf
21:03:40 <elliott> a|brt
21:03:40 <elliott> --------------
21:03:41 <elliott> bX|lah
21:03:42 <elliott> qX|uux
21:03:44 <elliott> aX|sdf
21:03:46 <elliott> aX|brt
21:03:48 <elliott> After typing "X".
21:03:51 <elliott> This is *insanely* useful.
21:04:05 <Vorpal> elliott, inded
21:04:07 <Vorpal> indeed*
21:04:11 <elliott> Does kate do that?
21:04:18 <Vorpal> elliott, uh, let me try
21:05:09 <Vorpal> elliott, alas it does something else. Anyway it is the two-mode thingy
21:05:15 <elliott> Bah!
21:05:26 <Vorpal> elliott, still the features somewhat overlap, none has all the features of the other one
21:05:33 <Vorpal> elliott, I assume leaden will do this?
21:05:46 <elliott> Yes. Or if it doesn't, amend will :)
21:05:53 <Vorpal> elliott, amend?
21:06:04 <Vorpal> which one was that
21:06:08 <Vorpal> sounds familiar
21:06:13 <elliott> Leaden is what I call prereleases of amend because calling anything amend that does not live up to its name is sinful.
21:07:30 <elliott> So basically leaden is amend before it turns into a gigantic beast worthy of emacs complexity :)
21:08:24 <Vorpal> elliott, also I'm sorry to inform you that it is my duty to inform you that you have exceeded the names reserved / actually used limit. To prevent phase space depletion you are now forbidden from naming new things until you implemented at least 4 of the current reserved names.
21:08:46 <elliott> BAH
21:10:56 <Vorpal> elliott, you could also send in form 14c(32)b9 in three copies to request a release of some of your reserved names. That is three copies per name to release.
21:11:40 <Vorpal> then you would get a confirmation form 11t(53)h14 in return to sign and send back
21:20:26 <olsner> elliott: hmm, when you're testing and it doesn't work, do you compile with the code that sets the real sector to find the kernel image or do you compile with mov cl,3; mov ch,3; which is the wrong values?
21:20:48 <elliott> olsner: the values are wrong?
21:20:55 <elliott> I worked them out using cpressey's bootloader code.
21:21:12 <olsner> because if I replace that with mov cx,KERNEL_START, it boots and halts at 0x8001
21:21:17 <elliott> olsner: Feel free to fix the values :P Ignore KERNEL_SECTORS btw, it's way too big to work with the bios call, just pretend the kernel is 2 sectors or something.
21:21:25 <elliott> olsner: don't you mean mov cl?
21:21:52 <elliott> But, uh, wow, you're right.
21:21:57 <olsner> well, same thing, except it doesn't rely on ch already being 0 from before
21:22:17 <elliott> olsner: aren't all the registers defined to be zero on boot? apart from dl
21:22:43 <olsner> on boot, but I don't want to do dataflow analysis on your boot loader to find out if that's the value still lying around in ch when it gets there
21:22:56 <Vorpal> night →
21:23:10 <elliott> olsner: i'm planning to do the a20 line properly, so i'm space-optimising to make room for that :)
21:24:55 <olsner> you could skip it and do A20 in the second stage/the kernel :P
21:25:12 <cpressey> olsner: NO IPOSSIBLE
21:25:18 <cpressey> it must be done in the boot block!
21:25:31 <cpressey> i refuse to give reasons for this
21:25:37 <elliott> cpressey sure hates me
21:25:48 <elliott> olsner: but i want my kernel to be in a nice environment when i get to it!
21:25:51 <elliott> besides i have space :D
21:26:17 <elliott> olsner: What I *am* worried about is, if I want to modify the GDT and IDT later, I have to modify them where the bootsector is, right?
21:26:32 <elliott> olsner: So, basically, they can be about two, three hundred max, combined.
21:26:32 <cpressey> elliott: i feel half-responsible, since i had a similar idea (go into unreal mode in the bootblock)
21:26:44 <elliott> cpressey: that was zzo38's idea :)
21:27:02 <cpressey> elliott: he doesn't actually do it in the bootblock - that was my misrecollection
21:27:09 <elliott> ah
21:27:20 <olsner> hmm, I think you can change them later
21:27:25 <elliott> cpressey: well, unreal mode = protected mode + more code :)
21:27:31 <cpressey> prit' much yeah
21:27:47 <elliott> olsner: you can relocate them?
21:27:47 <elliott> hmm
21:27:50 <elliott> seems a bit pointless though
21:27:51 <elliott> ehh
21:27:51 <olsner> but in the GDT case, you really don't need more than one data and one code segment
21:28:04 <elliott> olsner: unless i start doing crazy shit :)
21:29:34 <elliott> olsner: now all I have to do is have a loop so i can load more than 8.5 kilobytes of kernel
21:30:22 <olsner> yeah, you should be checking al after int 13h, that contains the number of sectors read
21:31:04 <elliott> olsner: erm, the only reason it'd load less than what i tell it to is if something went wrong, surely
21:31:13 <elliott> and if something went wrong i'm not interested :)
21:31:40 <elliott> olsner: presumably carry is set if al < the input al?
21:31:45 <elliott> in which case, i retry anyway
21:31:48 <olsner> maybe :)
21:33:02 <elliott> olsner: but hey, 8.5k is good enough for now :)
21:33:05 <Gregor> Welp, there goes that afternoon.
21:33:13 <elliott> that's over 17 times this bootsector!
21:34:38 <elliott> olsner: remind me to get around to doing a higher-half kernel sometime :P
21:34:54 <elliott> say, I don't need CODE_SEGMENT and DATA_SEGMENT defined inside the kernel proper, do I?
21:34:58 <elliott> since they're cs and ds anyway
21:35:49 <olsner> nah, you only need those if you ever wanted to reset cs or ds... maybe that's relevant when you get to multitasking, but I haven't really gotten that far myself yet
21:36:00 <elliott> yeah
21:36:20 <olsner> in any case, you know them since you set up the gdt, those are just constants anyway
21:37:23 <elliott> hmm
21:37:30 <elliott> does blinking exist at the vga memory level?
21:37:31 <elliott> I guess not
21:37:49 <elliott> it's just that qemu displays my A20 error as solid black on solid white
21:38:09 <elliott> and bochs displays it as flickery (not blinking, really, just *flickery*) black that seems to be grey eveyr now and then on top of grey
21:38:17 <elliott> (grey being the default colour, the "greyish white")
21:38:26 <olsner> I think there's magic involved that determines whether it's a high-intensity or blinking bit, or something like that
21:38:27 <elliott> and, well, it's 0xF0 the attribute
21:38:32 <elliott> right
21:38:33 <elliott> oh well
21:38:33 <elliott> :)
21:38:47 <elliott> solution: don't have a computer that doesn't have the A20 bios routines
21:38:56 <elliott> or, just wait until I put actual A20 code in there
21:39:40 <elliott> Can someone explain why x86 is so damn register-starved?
21:40:19 -!- augur has quit (Remote host closed the connection).
21:50:02 <fizzie> One of the VGA registers controls whether the high bit of the background color does "high intensity" or "blink".
21:54:58 <elliott> fizzie: Does it have a defined default?
21:56:42 <elliott> "The "Unity" user interface that debuted in Ubuntu 10.10's Netbook Edition will be standard on the next version of the Ubuntu Desktop Edition, as well. Ubuntu Desktop 11.04 will replace the Linux distribution's default GNOME environment in favor of the multitouch-enabled Unity user interface, says Canonical."
21:57:10 <elliott> So much for GNOME Shell.
21:58:46 <olsner> ooh, http://wiki.osdev.org/Entering_Long_Mode_Directly
21:59:03 <elliott> olsner: yeah, it's
21:59:05 <elliott> olsner: unreliable.
21:59:35 <olsner> unreliable?
21:59:40 <elliott> olsner: It's not documented.
21:59:49 <elliott> The only documented way to enter long mode is via protected mode.
21:59:58 <elliott> I'd rather go through the hassle than risk things. :)
22:00:17 <fizzie> elliott: Don't know about defaults, but according to the Interrupt List you can do ax = 1003h, bx = 0000h/0001h, int 10h to disable/enable the blink bit.
22:00:30 -!- MigoMipo__ has joined.
22:01:03 <elliott> fizzie: Woo, that works. Thanks.
22:01:25 <olsner> elliott: hmm, ok... well, I already have the protected mode code, so I might as well do the long mode stuff directly afterwards rather than changing the code
22:01:33 <elliott> olsner: yaeh
22:01:35 <elliott> *yeah
22:01:45 <elliott> olsner: I'm not sure whether I want long mode or not :)
22:01:53 <elliott> olsner: although more registers would be very, very, very, very, very, very nice...
22:02:14 -!- MigoMipo__ has quit (Client Quit).
22:02:38 -!- MigoMipo has joined.
22:02:38 <olsner> you can use long mode as a simplified protected mode that accidentally also supports some 64-bit stuff
22:03:02 <elliott> olsner: how is it simplified?
22:03:33 <olsner> some things like segmentation disappeared in long mode (however much simpler that makes it)
22:03:59 -!- Phantom_Hoover has joined.
22:04:15 <olsner> but other than that, I guess not simpler at all just different
22:04:20 <elliott> olsner: You still have paging though.
22:04:36 <elliott> Or whatever.
22:05:00 -!- MigoMipo_ has quit (Ping timeout: 276 seconds).
22:05:55 <fizzie> If you want "documented", incidentally, the AMD doc 24593 (AMD64 Architecture Programmer's Manual, Volume 2: System Programming) has a "Long-Mode initialization example" assembly code snippet -- 4.5 pages, but well over half is comments -- that starts from real mode, goes to protected and from there to long. It's not the most elegant piece ever, and does things like CPUID checks for whether the long mode actually exists.
22:06:16 <elliott> My boot sector is now 214 bytes long.
22:06:28 <Gregor> elliott: TOO MUCH
22:06:34 <elliott> So I get to fill the remaining 296 bytes!
22:06:50 <elliott> olsner: hmm, doesn't the idt tend to get kinda big?
22:06:56 <elliott> Or am I misremembering?
22:08:17 <fizzie> You can run things in your boot sector with that empty IDT and interrupts disabled, and then in your kernel code relocate it somewhere where you have lots of space before enabling the interrupts.
22:09:33 <elliott> fizzie: I *could*, yes, but the idea is sort of to not have to relocate things, just being able to modify the existing gdt and idt. :)
22:09:42 <elliott> Hey... How do you get the location of the GDT and IDT?
22:09:47 <elliott> Do I have to store them somewhere?
22:10:05 <olsner> have you already forgot where you put them? :)
22:10:30 <elliott> olsner: No, it's just that my kernel is compiled separately, so it can't know where the GDT and IDT are unless it can get the location somehow :)
22:10:58 <olsner> well, you can make that detail part of your boot loader|kernel interface
22:11:13 <elliott> olsner: there is no such interface :)
22:12:03 <elliott> hmm
22:12:05 <elliott> idtr:dw 0
22:12:05 <elliott> dd 0
22:12:08 <elliott> is this "limit 0, offset 0"?
22:12:14 <elliott> great -- so i have no interrupt table at all :)
22:12:23 <olsner> yep, the limit is the first value (the 16-bit one)
22:12:34 <elliott> olsner: starting to think that maybe, just *maybe*, this won't fit inside the boot sector
22:12:38 <elliott> olsner: especially not if I do A20 the proper way
22:12:57 <Phantom_Hoover> elliott, new version of Golly out, FWIW.
22:13:05 <elliott> Phantom_Hoover: kay
22:15:04 <Phantom_Hoover> Proper support for different topologies seems to be the Big Thing in it
22:16:35 * Phantom_Hoover decides to check the long-term evolution of the TTT with it,
22:18:03 -!- p_q has quit (Ping timeout: 245 seconds).
22:19:20 <fizzie> elliott: SGDT and SIDT should help you.
22:19:34 <fizzie> They're the inverse operation of LGDT/LIDT.
22:19:39 <elliott> Phantom_Hoover: TTT?
22:19:41 <elliott> fizzie: Ah, thanks.
22:20:06 <Phantom_Hoover> elliott, a pattern on a tubular universe with unknown-ish long-term behaviour.
22:20:19 <elliott> Phantom_Hoover: Link?
22:20:23 <elliott> fizzie: Wait, I could always just point the GDT and the IDT somewhere else in memory, right?
22:20:33 <elliott> fizzie: And put stuff there in the bootloader, and then expand on it later inside my actual OS code?
22:20:59 <fizzie> I don't see why not, assuming they're low enough for the 16-bit mode code to write to.
22:21:34 -!- p_q has joined.
22:23:08 <elliott> fizzie: Well, OSes have to write to such a location anyway, so.
22:25:02 <Phantom_Hoover> elliott, look for "Titanic Toroidal Traveler" at http://www.argentum.freeserve.co.uk/lex_t.htm
22:25:40 <fizzie> A curious bit of trivia: an empty interrupt table like that is how Windows on a 286 used to switch from its protected mode back to real mode; the virtual 8086 stuff and the "proper" way to get from protected to real were only added in the 386.
22:26:08 <elliott> Phantom_Hoover: so just that, repeated forever horizontally?
22:26:18 <cpressey> you had me at "A20 is routed through the keyboard controller"
22:26:20 <Phantom_Hoover> elliott, yeah.
22:26:29 <elliott> cpressey: you didn't know that? :)
22:26:33 <elliott> Phantom_Hoover: heh
22:26:44 <cpressey> elliott: not until yesterday
22:26:47 <Phantom_Hoover> I don't think the long-term behaviour is nearly as enigmatic as they claim, FWIW.
22:27:02 <fizzie> In the 286, you needed a reset; and reseting the processor via the RESET pin (from the keyboard controller, again...) was slow. But if you put in an empty interrupt table, then segfault, double-fault (due to missing interrupt handler) and triple-fault (due another missing interrupt handler) the CPU will reset a lot faster.
22:27:12 <elliott> cpressey: there is a "fast a20" that skips talking to the keyboard controller, and bios stuff for it
22:27:24 <elliott> cpressey: but the proper way involves talking machine code to the keyboard port.
22:27:42 <elliott> cpressey: 8042 machine code, to be precise.
22:27:54 <fizzie> (Well, the first interrupt could be just "int 3" or anything, it doesn't need to be a fault.)
22:28:15 <elliott> fizzie: Wouldn't that... reboot the computer?
22:28:49 <fizzie> elliott: Not if you patch the place where the reset ends up in; that's in real memory.
22:29:19 <elliott> fizzie: lovely
22:30:02 <fizzie> Apparently also Windows on a 386 used an invalid instruction to do a "syscall" from v86 mode, since it was the fastest way.
22:33:11 <Phantom_Hoover> Hmm, Golly allows the projective plane as a topology.
22:33:11 <Phantom_Hoover> Yep, it breaks down.
22:33:42 <elliott> olsner: how goes your long mode hackery? :-)
22:33:52 <elliott> I think I will go into long mode, just for simplicity.
22:34:04 <elliott> 64-bit on a floppy
22:34:05 <elliott> lovely
22:34:27 <fizzie> elliott: But what about hardware task management! It's mostly gone in long mode.
22:34:35 <olsner> elliott: just leisurely reading the system programming manual
22:34:41 <pikhq> Well, that was fun. It seems that the color setting on my monitor was hella-weird.
22:34:46 <elliott> fizzie: Oh dear, I will shoot myself.
22:34:55 <elliott> olsner: "leisurely"
22:35:03 <fizzie> Task-State Segments and whatnot.
22:35:08 <olsner> elliott: spelling? :)
22:35:37 <fizzie> Oh, and more importantly, you can't go to virtual-8086 mode from long mode.
22:36:34 <olsner> always wondered about that - so you use virtualization to run real-mode code or something?
22:36:38 -!- augur has joined.
22:37:40 <cpressey> fizzie: "hardware task management"?
22:37:44 <fizzie> olsner: Maybe you just don't run it.
22:37:56 <fizzie> olsner: "64-bit Windows versions do not include NTVDM or Windows on Windows, so there is no native support for the execution of MS-DOS or 16-bit Windows applications." (Though that was for the 64-bit XP.)
22:38:38 <cpressey> You know, I don't think I want to know.
22:38:58 <olsner> I should check how virtualization works on amd64, iirc virtualization used to rely on VM86 to run all the boot loaders etc of the guest os:es
22:39:01 <fizzie> cpressey: There's a rather complicated hardware multitasking thing (based on the segment stuff; handles register saving and so on, and privileges) that's been mostly cut off in the long mode.
22:39:03 * cpressey hugs the 6502
22:40:04 <fizzie> As far as I know, not very many operating systems actually use it.
22:40:11 <olsner> which only works for sane boot loaders and not e.g. the OS/2 boot loader that went into unreal mode before starting the real boot loader
22:40:19 -!- poiuy_qwert has joined.
22:40:26 <Phantom_Hoover> http://i55.tinypic.com/261dnav.gif seems to be their current plan for implementing spherical topologies.
22:41:03 <Phantom_Hoover> That's so obviously not valid it's not even funny.
22:41:23 -!- p_q has quit (Ping timeout: 245 seconds).
22:43:09 <fizzie> olsner: Well, the amd-64 processors still do *have* the legacy mode with all the vm86 bits, you just can't invoke them normally from long mode. I guess the virtualization control block structures let the guest be in legacy mode.
22:43:41 <olsner> fizzie: that makes sense
22:43:45 <fizzie> olsner: "To facilitate virtualization of real mode, the VMRUN instruction may legally load a guest CR0 value with PE = 0 but PG = 1"; so you can have the guest in real mode but with paging enabled.
22:44:02 <cpressey> Phantom_Hoover: that's hilarious
22:44:17 <fizzie> "This processor mode behaves in every way like real mode, with the exception that paging is applied."
22:44:32 <Phantom_Hoover> cpressey, OK, it takes a certain type of mind to find that amusing.
22:44:37 <elliott> <olsner> elliott: spelling? :)
22:44:39 <elliott> no, just
22:44:45 <elliott> reading the x86 manual leisurely :D
22:44:57 <cpressey> olsner: so there IS a real boot loader out there that goes into unreal mode! cool.
22:45:03 <olsner> cpressey: yep!
22:45:29 <cpressey> Phantom_Hoover: I'm not listening to you because you are just a mirror image of the OTHER Phantom_Hoover.
22:45:42 <olsner> and OS/2 is one of the few operating systems that use more than two of x86's privilege levels ("rings")
22:46:08 <olsner> usually you have kernel mode and user mode, but OS/2 has two or three levels of kernel mode
22:46:17 <elliott> <olsner> which only works for sane boot loaders and not e.g. the OS/2 boot loader that went into unreal mode before starting the real boot loader
22:46:25 <elliott> Real that unreals to load the real.
22:47:35 <elliott> olsner: hmm, if i go into real mode, the gdt i already have will be the only one that works, right?
22:47:38 <elliott> so i only have to relocate the idt
22:48:26 <olsner> hmm? you're going into real mode now?
22:48:29 <elliott> *into long mode
22:48:34 <elliott> olsner: or, wait, i'd actually want two more entries, wouldn't i? for user mode
22:48:40 <olsner> you'll load a new long-mode gdt
22:48:58 <elliott> olsner: the mind boggles.
22:49:09 <elliott> olsner: you know what, i'll wait for you to write long mode stuff and then rip that off :)
22:49:14 <olsner> ooor, would you? I don't know if long mode even has a gdt, it doesn't have segmentation anyway
22:49:34 <elliott> olsner: it uses a flat gdt
22:49:35 <elliott> i think
22:49:39 <elliott> requires, even
22:49:40 <olsner> yes, long mode has a gdt and it has a different format
22:49:42 <fizzie> olsner: It does have a GDT, but the descriptors are different.
22:49:44 <fizzie> Right.
22:50:08 <elliott> oh joy :)
22:50:27 <cpressey> Phantom_Hoover: Seriously, wouldn't a geodesic dome-like-thing make more sense?
22:50:32 -!- poiuy_qwert has quit (Ping timeout: 245 seconds).
22:50:48 <elliott> <Phantom_Hoover> http://i55.tinypic.com/261dnav.gif seems to be their current plan for implementing spherical topologies.
22:50:49 <elliott> what
22:50:50 <Phantom_Hoover> cpressey, for the spherical topology thing?
22:51:19 <Phantom_Hoover> It's topology, so it makes no difference the precise shape.
22:51:34 <olsner> elliott: most of the example from osdev (the hack that skips protected mode) is also applicable for jumping from protected to long mode
22:51:44 <Phantom_Hoover> But it *is* impossible to fit any planar neighbourhood onto a sphere.
22:51:52 <elliott> olsner: copying you is so much easier though :)
22:52:03 <Phantom_Hoover> Or a projective plane, but that's stopped them even less.
22:52:13 <elliott> Phantom_Hoover: you can't cover a sphere with squares anyway, if that's what they're trying to do in theory
22:52:22 <Phantom_Hoover> elliott, I object.
22:52:34 <elliott> Phantom_Hoover: oerjan proved it once :)
22:52:56 <Phantom_Hoover> Cubes are, after all, a topologically spherical object covered with squares
22:53:04 <olsner> elliott: but then you won't *learn*!
22:53:05 <Phantom_Hoover> You can't have a Moore neighbourhood, though.
22:53:17 <elliott> olsner: i will, by copying your code carefully :)
22:53:24 <elliott> Phantom_Hoover: well, right
22:53:31 <elliott> Phantom_Hoover: can't be equally-sized squares though :)
22:53:45 <cpressey> Uhhh no it's not topology exactly.
22:53:53 <Phantom_Hoover> elliott, have you looked at a cube lately.
22:54:14 <Phantom_Hoover> cpressey, Euler characteristics, which are what oerjan's proof used, are a topological thing.
22:54:18 <fizzie> elliott: Re long-mode gdt: "This LGDT [for the 64-bit mode] is only needed if the long-mode GDT is to be located at a linear address above 4 Gbytes. If the long mode GDT is located at a 32-bit linear address, putting 64-bit descriptors in the GDT pointed by [pGDT32] -- the 32-bit GDT -- is just fine."
22:54:19 -!- poiuy_qwert has joined.
22:54:44 <fizzie> You do need a 64-bit IDT, because the descriptors are of completely different size and so on.
22:55:40 <olsner> fizzie: hmm, so you overwrite the gdt with completely different data, then do a new far jump to a 64-bit segment, and it works?
22:55:54 <elliott> fizzie: Can you go into long mode with interrupts disabled?
22:56:00 <cpressey> Phantom_Hoover: If this can be done with "just" topology then... I don't know why they are trying
22:56:18 <elliott> If so, plan: Use the code I have now. Make it jump into long mode and mangle the GDT properly. Let the OS handle setting up an IDT.
22:56:20 <olsner> doing this with interrupts enabled seems like a very dubious idea
22:56:25 <Phantom_Hoover> cpressey, because they don't know topology.
22:56:39 <elliott> Isn't there only one way you can have a GDT set up in long mode?
22:56:46 <Phantom_Hoover> I'm trying to tell them why it's impossible on the mailing list.
22:57:06 <cpressey> A geodesic dome construction might not be topologically kosher, or even geometrically kosher *really*, but it would... shoehorn what they're trying to do, onto a sphere, in a way that's "fair".
22:57:11 <elliott> link to their mailing list?
22:57:40 <fizzie> olsner: I don't know how it works: the example just says that the 32-bit GDT will need "at a minimum" "1) a CPL=0 16-bit code descriptor for this code segment", "2) a CPL=0 32/64-bit code descriptor for the 64-bit code." and "3) a CPL=0 read/write data segment, usable as a stack".
22:58:14 <cpressey> All I mean is: when we say "n neighbours" we kinda sorta really mean "n UNIQUE neighbours" and fudging that is silly. Fudge something else please.
22:58:15 <fizzie> This AMD64 example enables protected mode, but uses 16-bit protected mode code to go to long mode.
22:58:42 <olsner> right, so it just stays in the old code segment after setting protect enable?
22:58:48 <elliott> 16-bit protected mode?!
22:59:22 <fizzie> olsner: Well, sort-of. It does a far jump, but into the "same" 16-bit code segment.
22:59:43 <Phantom_Hoover> cpressey, well, a 1,1 torus is legitimate enough, for reasons I'm unsure of.
23:00:46 <Phantom_Hoover> I suppose there's also a tiling-based argument somewhere...
23:01:03 <olsner> fizzie: hmm, weird, what's the point of doing it like that?
23:01:23 -!- Quadrescence has quit (Ping timeout: 245 seconds).
23:01:41 <olsner> also, what's the difference between this new 16-bit code segment and the one inherited from real mode?
23:02:15 <fizzie> olsner: You need to do the far jump for the protected mode to actually get enabled; other than that, probably not much difference there.
23:03:08 <fizzie> olsner: Anyway, I guess it saves the need for a 32-bit code segment anywhere. It also doesn't bother with things like setting up ds/es/fs/gs in protected mode, since it jumps directly to long mode very soon after enabling protected mode.
23:04:24 <fizzie> olsner: Is your x86 manual set the AMD or Intel one? If the AMD one (Volume 2: System Programming), it's 14.8 "Long-Mode Initialization Example" I was pulling that stuff from.
23:05:18 <olsner> aha, I'm reading AMD's document 24593 now, so I could just read this at the source instead of asking you :)
23:05:47 <fizzie> (It's a bit messy, since it has a pGDT64 pseudo-descriptor in there, but the later comments say it's not exactly needed; and it doesn't show what actually is at gdt32_base.)
23:06:13 <olsner> fizzie explains it, I write the code, elliott uses it :D
23:06:34 <cpressey> and then in a week or so i'm going to try writing something that goes into protected mode and we'll all go through all this AGAIN
23:06:42 <elliott> olsner: I totally write code too! Except my bits are the ones that don't work until you figure out what's wrong with them.
23:06:47 <elliott> cpressey: NO DUDE LONG MODE
23:06:55 <cpressey> I"M NOT READY FOR THAT
23:06:55 <elliott> it's like protected mode but you have an aneurysm
23:07:03 <elliott> cpressey: LET ME SPELL IT OUT FOR YOU
23:07:06 <elliott> cpressey: EIGHT MORE FUCKING REGISTERS
23:07:14 <elliott> Eight more registers! EIGHT!
23:07:20 <olsner> AND TWICE THE BITS PER REGISTER!!!
23:07:26 <elliott> That's 15 general-purpose 64-bit registers!
23:07:31 <cpressey> AND ANOTHER STACK!!!!!
23:07:31 <elliott> Suddenly X86 ISN'T SO SHITTY ANYMORE
23:07:39 <elliott> AND MY AXE
23:07:56 <olsner> it's the glazing on the turd
23:08:18 <cpressey> I wonder how many systems there are that actually support long mode, but not "fast A20"
23:08:26 <cpressey> are manufacturers really so weird?
23:08:35 <elliott> cpressey: Just use the BIOS to do it :P
23:08:44 <elliott> cpressey: You can disable Fast A20 in the BIOS sometimes.
23:08:46 <elliott> Inexplicably.
23:08:49 <cpressey> i fully plan to, that's what the BIOS is *for*
23:08:52 <elliott> Sometimes it's disabled by default.
23:09:56 <fizzie> Anyway, when it comes to the 64-bit GDT: it needs to have a TSS descriptor (for the single 64-bit task there can be), as many code descriptors as you wish (they still exist, though mostly just to determine if code's running in 64-bit mode or the 32-bit compatibility-mode-in-long-mode), and any data-segment descriptors needed by 32-bit code. (In 64-bit code, ds/es/ss values are ignored; for fs/gs it's.. complicated.)
23:13:09 <olsner> and this TSS thing is what you use to leave kernel mode and run in user mode for a while?
23:13:23 <fizzie> In 64-bit mode, it seems that it ignores pretty much everything in the descriptors except a few flag bits; I guess that's what they mean with the comment in the example that you don't necessarily need to set up a different GDT, they're compatible enough.
23:15:40 <olsner> i.e. as long as you're not retarded and set non-0 offsets or non-4G limits you can use the exact same segment descriptors for both modes?
23:16:09 <fizzie> olsner: It doesn't even matter if you set non-0 offsets or fancy limits, they're ignored in 64-bit code.
23:16:53 <olsner> they should have a segment retardation fault or something for it instead :)
23:17:05 <elliott> So how does all this fit in with a higher half kernel?
23:17:07 <elliott> Just askin'
23:17:12 <elliott> :P
23:17:16 <fizzie> I really don't know about the TSS; "Although the hardware task-switching mechanism is not supported in long mode, a 64-bit task state segment (TSS) must still exist. System software must create at least one 64-bit TSS for use after activating long mode, and it must execute the LTR instruction, in 64-bit mode, to load the TR register with a pointer to the 64-bit TSS that serves both 64-bit-mode programs and compatibility-mode programs."
23:17:44 <olsner> elliott: what does "higher half" mean?
23:18:36 <Sasha> proximal end?
23:18:49 <fizzie> I think for that you just need to mostly set the paging tables properly. I profess to complete ignorance on the privilege level changes: it seems to be a whole other esoteric mess of call gates, interrupt gates and trap gates.
23:18:59 <elliott> olsner: http://wiki.osdev.org/Higher_Half_Kernel
23:19:01 <elliott> It is traditional and generally good to have your kernel mapped in every user process. Linux, for instance (and many other Unices) reside at the virtual addresses 0xC0000000 - 0xFFFFFFFF of every address space, leaving the range 0x00000000 - 0xBFFFFFFF for user code, data, stacks, libraries, etc. Kernels that have such design are said to be "in the higher half" by opposition to kernels that use lowest virtual addresses for themselves, and leave h
23:19:01 <elliott> igher addresses for the applications.
23:19:22 <elliott> http://wiki.osdev.org/Higher_Half_Kernel
23:19:27 <elliott> If you don't want to enable paging right from the start, it is still possible to have your kernel appearing in the higher half. Tim Robinson's GDT Trick works by using segmentation to select an appropriate base for the code and data segments. Say you've loaded your kernel at 0x10000 and we want it to appear at 0xC0000000, then all we need to do is find a base _X_, such as _X_ + 0xC0000000 = 0x10000. The bootloader will then initialize the GDT wit
23:19:27 <elliott> h cs.base = 0x40010000 = ds.base. This also means that special care must be taken for VRAM (video RAM) access, as 0xB8000 is now somewhere above 1GB. Either use a special 0-based additional data-segment or use
23:19:44 <elliott> olsner: I seem to recall reading something about entering long mode while using that insane GDT trick.
23:19:52 <elliott> http://wiki.osdev.org/Higher_Half_With_GDT
23:20:27 <fizzie> That doesn't sound like something that would work in long mode.
23:20:38 <fizzie> Given that GDT bases are ignored.
23:21:13 <elliott> fizzie: You do that and *then* do it properly with paging in long mode.
23:21:24 <elliott> Aw hell, I have no idea. I just parrot the wiki.
23:21:39 <cpressey> that page instantly makes me hate OS programming for some reason
23:21:42 <fizzie> Right, but it doesn't sound like it would help you anything assuming you want to get long mode done before jumping to the kernel.
23:22:03 <fizzie> I mean, as long as you don't actually jump into the kernel code, it doesn't really matter at what address it appears to be.
23:22:07 <elliott> fizzie: Right.
23:22:14 <elliott> fizzie: I realised that a second ago :)
23:22:31 <fizzie> Of course you might run out of bytes in your boot sector in setting up paging. :p
23:22:53 -!- Quadrescence has joined.
23:23:06 <olsner> obviously you'd generate the page tables for the regions you need access to during startup
23:23:34 <olsner> didn't look into the details, but the direct-to-long-mode page had something like that
23:24:14 <elliott> i understand, now, why people like unreal mode
23:24:21 <fizzie> Paging in long mode is so simple, too: http://zem.fi/~fis/paging.png
23:25:11 <fizzie> Page frames, page tables, page directory tables, page directory pointer tables and finally the "page map level 4 table" on top.
23:26:11 <fizzie> Maybe you should just opt for not using virtual memory or privilege levels; who needs that sort of stuff anyway?
23:26:46 -!- Mathnerd314 has joined.
23:26:54 <olsner> what, of course you must have proper kernel/user mode, memory protection and task switching
23:27:07 <elliott> olsner: WHY
23:27:21 <olsner> you just do!
23:27:23 <fizzie> To SAVE you from YOURSELF, of course.
23:27:30 <fizzie> Or BADLY BEHAVED CODE, anyway.
23:27:37 <elliott> Doesn't matter in a lisp OS at least :)
23:27:44 <elliott> In fact running everything in kernel mode is beneficial there.
23:28:14 <olsner> oh, you're building a lisp os? :)
23:28:22 <elliott> olsner: well -- maybe! :p
23:28:28 <elliott> I'd like to get the freaking boot sector written first.
23:29:18 <elliott> There's only ~1.59361 * 10^1228 boot sectors, anyway.
23:29:22 <elliott> I just have to pick one!
23:32:13 -!- Phantom_Hoover has quit (Ping timeout: 245 seconds).
23:37:08 <cpressey> I once designed a protected memory system for the Z80 (in hardware)
23:38:21 <cpressey> A clock would periodically reset the processor and switch the lower half of memory to a new bank
23:39:15 <cpressey> I forget exactly how, but the plan was to write a JMP to the address you were last executing, into the first few bytes of your task's bank, so you could continue executing
23:39:49 -!- MigoMipo has quit (Remote host closed the connection).
23:39:50 <cpressey> Maybe there was an interrupt issued just before the reset, then your code was supposed to do this then enable the reset
23:39:50 <elliott> cpressey: wow.
23:40:05 <elliott> cpressey: all that for protected memory :)
23:40:23 -!- MigoMipo has joined.
23:41:12 <cpressey> elliott: yes. also considering there is an "enhanced Z80" out there somewhere which basically does all this in a chip :)
23:41:57 <fizzie> The DS, which doesn't really do paging or have an MMU, still has a rudimentary "memory protection unit" thing that can define the access privileges (and caching behaviour) to was-it-8 mostly arbitrary ranges of physical addresses.
23:43:26 <olsner> wtf, my boot loader/os project has a CVS dir that points to a cvsroot with a windows path
23:43:58 <olsner> it is from 2002 though, I was younger then
23:44:47 <elliott> `addquote <olsner> it is from 2002 though, I was younger then
23:45:04 <elliott> olsner: wait i just adapted code developed on windows and cvs?
23:45:06 <elliott> i feel wrong
23:45:45 <olsner> no, it can never have been developed on windows, the build script is very much unix
23:45:47 <HackEgo> No output.
23:46:06 <olsner> but it was *stored* on windows at some point
23:53:35 * elliott tries to decipher why his vga display fun isn't working
23:55:28 <Gregor> Cat + melodica = insane cat
23:58:44 <elliott> Gregor: approve#
23:58:46 <elliott> s/#$//
←2010-10-31 2010-11-01 2010-11-02→ ↑2010 ↑all