00:00:09 * Sgeo digs up stuff from his past 00:00:10 http://i.imgur.com/S6pDQ.png 00:00:15 Apparently this is OfficeSuite 00:00:22 * Sgeo digs up stuff from his past 00:00:24 don't you do that all day? 00:00:41 You an probably use the first, third, fifth and so on megabytes, though. 00:00:47 s/an/can/ 00:01:19 At some point, I will feel nostalgic about #esoteric 00:01:22 Or maybe zeroth, second and fourth; depending on how you number those. 00:01:23 After #esoteric dies 00:01:55 Or IRC channels may be longer lived than other communities 00:01:59 That seems likely 00:02:03 But still 00:02:09 Will Freenode really be around forever? 00:02:33 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 olsner: Yes, well, the addresses, sure; but not the physical megabytes. 00:04:54 "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 THAT SOUNDS NICE NO I/O OK THX 00:05:06 "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 HAHAHAHAHAHAHAHAHAHA 00:05:13 "Another way is to use the BIOS." 00:05:15 yes that's better thank you 00:05:43 Please tell me that you're researching history 00:05:54 Actually, I have no idea what you're trying to do 00:06:17 writing a bootloader 00:06:45 writing a bootloader *is* researching history 00:07:20 it's actually something like an accelerated trip through all revisions of the x86 isa and bios api:s 00:08:22 That's only if you want to support more than just your own machine 00:08:39 I assume 00:09:38 most of the steps you need to do on any machine 00:10:22 cmp word [magic], word [MIRROR_MAGIC] 00:10:26 doesn't work, what a surprise! 00:10:43 So why "all revisions"? 00:11:04 Sgeo: because it starts off in 16-bit real mode 00:11:15 and you use the bios to get shit done 00:11:24 then you do the, cough, fun dance to get into protected mode 00:11:24 I never learned x86 stuff 00:11:27 then if you're on 64-bit 00:11:32 you do the fun dance to get into long mode from there 00:11:34 Or x64 stuff 00:11:38 *x86-64 00:11:50 Anything sinful about abbreviating it to x64? 00:11:53 yes 00:11:55 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 With your _? 00:12:22 yes 00:12:27 olsner: http://wiki.osdev.org/A20_Line#Testing_the_A20_line dear god this is long and ugly 00:12:29 i don't have that kind of space 00:12:32 gotta OPTIMISE 00:13:02 *OPTOMISE 00:13:30 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 You could do the A20 dance outside your bootloader. 00:14:10 fizzie: after I get into protected mode??? 00:14:18 Assuming reasonable-sized kernel, anyway. 00:14:18 that sounds... fun 00:14:43 also VICE does not build out of the box on NetBSD because of a *syntax error*. 00:14:51 Yes, I don't see why not; except that then you don't really have the BIOS helping you. 00:15:26 any of the A20 methods listed there (except for anything calling into bios) should work from protected mode afaict 00:16:37 for (d = hid_start_parse(report, 1 << hid_input, id) { 00:16:37 } 00:16:40 THIS IS NOT C, PEOPLE 00:16:50 catseye: i, uh, wow. 00:17:14 olsner: I'm enabling the A20 line with the BIOS. 00:17:17 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=10.1.1.35.45&rep=rep1&type=pdf 00:17:21 Because the alternative is talking to the keyboard and I have am oral objection to that. 00:17:28 *a moral 00:17:40 *An oral. 00:19:30 0x0F is "pure white on black", yeah? 00:19:35 in vgatextspeak 00:19:43 -!- Jack has joined. 00:19:43 that's how it appears here 00:19:53 I now have a snazzy error message: 00:19:58 hey 00:19:59 boot A20? 00:20:01 hello Jack 00:20:09 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 is it an autoreply? 00:20:52 no 00:20:57 oh :) 00:21:06 we get tons of people here thinking it's about that *other* type of esoterica. 00:21:11 :) 00:21:17 Ok, btw I know about that mate 00:21:31 actually I'm developing an esoteric language 00:21:33 http://i.imgur.com/WjGPH.png 00:21:38 Worst. UI. Ever 00:21:43 Jackoz: cool 00:21:45 that's why I joined this channel, shortly I'll need some feedback :D 00:21:56 Suppose I want to move stuf from 200N 200E to 323S 370E 00:22:02 prepare the "your language sucks" cannons, men! 00:22:10 I put the old location in "Rotate Old Prop Around" 00:22:19 I put the new location in "Offset Values" 00:22:21 :( 00:22:35 Except for Height offset, which is the difference in heights 00:22:38 I wish I was joking 00:22:58 actually the only real problem is that it is stack based, but I feel it is not enough 00:23:08 Jackoz: we're actually nice! on occasion. 00:23:09 fizzie: Int 15/AX=2402h - SYSTEM - later PS/2s - GET A20 GATE STATUS 00:23:14 fizzie: See, I can just use the BIOS for everything! 00:23:21 but having a normal "variable declaration" language seemed too overkill 00:23:28 Jackoz: stack is nice! 00:23:34 I have to find something in the middle, so maybe I can get some inspiration here 00:23:39 "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 imo 00:23:44 I'm having an affair with a stack based language 00:23:46 but i'm interested, so go on 00:23:54 Jackoz: Sgeo is our friendly channel bot 00:24:28 channel bot write in Factor for great justice 00:24:52 ^^too coherent for a fungot-like bot 00:25:06 Hey, fungot doesn't detect on fungot- 00:25:07 Sgeo: using the odd syntax for one 00:25:20 -fungot- 00:25:21 Sgeo: toi ei oo fnord ja kanava fnord? l) 00:25:29 Jackoz: a bot with a tendency to call the other bots. 00:25:32 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 elliott: "later PS/2s" -- surely you're not going to limit yourself on such! 00:25:44 stack manipulation is fun, but ok :) 00:25:47 fizzie: Oh yes I am. 00:25:51 Just to clarify, I'm not actually a bot 00:25:54 fizzie: *to such 00:26:00 Well, maybe a nostalgia-bot 00:26:04 Jackoz: he's also wired to say he's not a bot whenever his botness is mentioned :) 00:26:19 fizzie: They're technically "optional", but the amount that I care is zero. :P 00:26:26 Sgeo: do some goole searches for me! 00:26:30 *google 00:26:52 There's no way I'm actually failing a Turing-test, am I? 00:27:16 What we have learned here: Sgeo truly is indistinguishable from a simple computer program. 00:27:30 Or, y'know, [some less cynical conclusion about the way people react to other people when they have assumptions]. 00:27:42 Sgeo: The fungot-not-replying thing was probably that one occasional bug it has that I haven't managed to catch. 00:27:42 fizzie: i don't need that much range anyway. 00:27:45 elliott: just to give you an idea http://jacoposantoni.com/impossible/operators (but many operators aren't documented there yet) 00:27:57 testing. fungot-like. testing 00:27:57 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 (And apparently 'e doesn't think it's worth fixing anyway.) 00:28:22 cmp al, 1 00:28:22 je protect 00:28:22 gotta be a simpler way of writing that 00:28:23 oh well 00:28:39 comp.lang.??? 00:28:40 scheme? 00:28:43 smalltalk? 00:28:46 Scheme. 00:29:01 syntax-case is a tricky Sceme macro thing. 00:29:03 Jackoz: just so you know, trash is usually called "drop" 00:29:10 Jackoz: and dupe dup 00:29:24 Jackoz: this is a good language 00:29:34 elliott: thanks, I'll take it into account :) 00:29:41 elliott: that's why I joined here 00:29:44 Jackoz: you should see some of the first esolangs people come up with :) 00:29:50 they can be truly awful 00:30:38 elliott, it's impolite to make someone laugh at food-time 00:30:41 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 I could be dead thanks to you 00:31:01 Sgeo: surely you're a bot now 00:31:10 Sgeo !search pr0n 00:31:20 boot sector is 168 bytes, that's over a *fifth* of the maximum! 00:31:28 this damn bot, it needs some fixes 00:31:39 In fact, it's basically a third. 00:31:57 Who said I have to give the results back to you? *ponders* I don't think you want the results 00:32:20 00:32:41 fizzie: You! Tell me why my segments go all strange after going into protected mode. 00:33:48 it's building openssh 00:33:52 ... 00:33:54 that's why! 00:34:29 OH! 00:34:41 Because video memory is 0xB8000 on the other side of the divide, not 0xB800. 00:34:43 Duh. 00:35:16 Now it works in qemu but not bochs -- which is *never* a good sign. 00:37:15 ...how does that happen? 00:38:48 Because bochs is anal and slow and qemu is lax and fast. 00:39:25 00134663903e[CPU0 ] interrupt(): gate descriptor is not valid sys seg (vector=0x0d) 00:39:25 00134663903e[CPU0 ] interrupt(): gate descriptor is not valid sys seg (vector=0x08) 00:39:37 00134663903e[CPU0 ] interrupt(): gate descriptor is not valid sys seg (vector=0x08) 00:39:39 whoops 00:39:45 -!- FireFly has quit (Quit: swatted to death). 00:39:48 so lol something is up. 00:40:13 something's causing an interrupt, and you probably haven't set up an interrupt descriptor yet 00:40:29 olsner: ah. 00:40:32 bochs is a bitch, then 00:41:10 olsner: wrong! 00:41:13 olsner: well 00:41:19 I set up idtr using yours (dw 0 dd 0) 00:41:26 olsner: is it triggering despite that or something? 00:41:28 and i have to set up more? 00:41:30 if so WOOOOOO. 00:41:57 you don't have to set up more as long as you have interrupts disabled and don't do anything wrong :) 00:42:10 olsner: clearly I do, because it happens anyway :) 00:42:15 lidt [idtr] 00:42:20 align 4 00:42:21 idtr:dw 0 00:42:21 dd 0 00:42:28 It occurs to me that I have a record of my Opera usage 00:42:35 elliott: you just have to stop doing something wrong that causes the interrupts 00:42:42 So if I'm ever tempted to try Opera again, say in a few years... 00:43:03 elliott: did you disable interrupts? 00:43:17 olsner: probably not! 00:43:34 olsner: i should figure out how! 00:43:54 I shouuld learn how this stuff works 00:43:54 olsner: wait yes i did 00:43:56 CLI, isn't it? 00:43:59 cli 00:43:59 lidt [idtr] 00:44:00 That looks like a pretty small IDT. 00:44:02 lgdt [gdtr] 00:44:04 Especially if I want to build a computer at some point 00:44:05 fizzie: blame olsner 00:44:22 Sgeo: all of this is utterly irrelevant to the trivial "stick a few components together in a case". 00:44:32 the latter is like lego. 00:44:32 I meant in virtual worlds 00:44:46 I know how to stick components in the real world together 00:44:47 Sgeo: !google typical 00:45:02 The first few (19) entries of the idt can be invoked by processor-generated exceptions. 00:45:05 ..? 00:45:12 Oh 00:45:25 You're not giving me advice, you're saying that I'm being typical me 00:45:33 vector=0x0d there is a general protection fault. 00:45:35 You are typically typical you 00:45:37 So what? 00:45:43 fizzie: Well that's not good. 00:45:47 And vector=0x08 is a double fault. 00:45:51 other_side: 00:45:52 mov word [0xB8000+ebx+2], 0x0F21 00:45:52 x:hlt 00:45:52 jmp x 00:45:57 What's so protection-faulty about that? 00:47:17 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 ølsner 00:47:41 Oerrrrsleer. 00:47:45 But fizzie is right! 00:47:50 push DATA_SEGMENT pop ds works just fine. 00:48:46 Ommina sleep now, though; good luck with protecting your modes. 00:49:09 Hey, look! 00:49:14 fizzie: catseye: olsner: BOOTLOADER COMPLETE 00:49:15 (sort of) 00:49:19 And it's 200 bytes exactly. 00:49:19 elliott: sweet 00:49:32 That includes the "jmp KERNEL_SEGMENT:0" at the very end that I'm not sure will work entirely properly here. 00:49:41 olsner: I should probably reset all the registers like you do. 00:50:23 But still, 200 bytes to read the kernel from a floppy disk, giving diagnostics along the way, enable the A20 line (giving "boot? A20" if it doesn't work), jump into protected mode and jump to my kernel. 00:50:24 Not bad. 00:50:31 brb 00:50:32 elliott: yes, having all of them point to a proper 32-bit data segment is useful 00:53:17 that's frightening 00:58:29 -!- FireFly|n900 has joined. 00:58:35 Hi 00:59:18 Golf a BF infinite loop code fragment that can be inserted in any valid brainfuck program 00:59:33 Would +[]+[] be the shortest possible? 01:01:01 '[]+[]'? 01:01:25 Hm 01:01:36 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 FireFly|n900: Define the Brainfuck. 01:07:51 in any case you should be able to wrote a BF interpreted in any language in just a couple of minutes 01:08:08 *interpreter 01:08:17 Try writing one in Malbolge. 01:08:26 except Malbolge :) 01:08:31 (if you can, you win all the Internet points) 01:08:34 I was excluding esoteric languages actually 01:08:38 brb write one in MSL :D 01:08:46 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 Oh, and "non-programming" languages like HTML 01:09:20 SQL is indeed one. 01:09:21 it depends on which extensions of SQL are available 01:09:30 HTML is not a programming language 01:09:33 Sgeo: HTML is still a language, though. 01:09:34 it's a markup language 01:09:43 Yup, for Hyper Text. 01:10:06 English would count as TC, right? 01:10:16 why not? 01:10:26 Are there any non-TC natural languages/ 01:10:42 you can easily define a corrispondence between a turing complete language and the english language, providing the right semantics 01:11:15 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 Is Ancient Egyptian TC? 01:12:20 Sgeo: are you assuming the semantics as they intended it? 01:12:57 in any case Egyptians didn't have any 0 concept 01:13:04 Sgeo: I think we can safely say "yes" to that 01:13:29 so 01:13:41 I'm not sure that hieroglyps are a TC language 01:13:51 at least not using their original semantics 01:14:10 Jackoz: Hieroglyphs were an orthography for a language. 01:14:15 Jackoz: I would be *extremely* surprised if they did not have a concept for "nothing" 01:14:33 actually make that *****extremely***** 01:14:38 * Sgeo was thinking "off", but just realized how riduculous that was 01:14:38 pikhq: it's much more than that 01:14:50 riduuuuuuuculous 01:14:54 01:15:06 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 My English parser broke. 01:16:09 sorry, english is not my mother language and I'm watching a movie so my attention is partially here 01:16:12 My English lexer *also* broke. 01:16:31 And my Japanese lexer sees funny squiggles. 01:16:32 in any case you shouldn't have reached parsing phase, you should have stopped before. 01:16:57 Jackoz: English speakers have highly accepting lexers. 01:17:55 * Sgeo now ponders where the term "lexing" came from 01:17:55 catseye: they had the concept of zero intended as perfection or completion but it wasn't, strictly talking, a numeral concept 01:18:42 Jackoz: You don't need numerals to build a Turing Machine, though. 01:19:04 catseye: no, but I think you need the concept of zero intended as zero :) 01:19:23 Might the concept of words be sufficient? 01:19:37 this is something somewhat trivial for us, we should ask an ancient Egyptian 01:20:01 Jackoz: No, you don't even need that. 01:20:07 I'll just take Apophis and hand him over to the Tok'ra 01:20:14 Then we can ask his host! 01:20:15 I also wonder if "I have no money" in Ancient Egyptian was regarded as a state of perfection or completion :) 01:20:44 [spoiler] but whatever 01:20:46 Jackoz: One could just as well have a Turing machine with an alphabet consisting of 日 and 本 instead of 0 and 1. 01:20:58 Doesn't even matter what the symbols *mean*. 01:23:00 that's undoubtely true, but we are talking about using a language to see if it is TC 01:23:30 actually you can build a TC language with any chosen alphabet, from that point of view every language is TC 01:24:07 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 without choosing an arbitrary one, just to prove its Turing completeness 01:26:33 otherwise you are just proving that a language, which shares its alphabet with hieroglyps, is TC 01:26:43 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 *adjectives 01:28:04 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 should extend my code so it can go into long mode too 01:29:32 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 by the way this channel should be called #pedantic, you are really all ready to push newcomers in a corner .. 01:30:40 yay, done 01:30:55 $bf(++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.) -> HelloWorld! 01:30:56 :D 01:33:26 -!- iamcal has joined. 01:33:26 -!- cal153 has quit (Read error: Connection reset by peer). 01:34:15 back 01:34:23 that's frightening 01:34:26 why? the size of the bootloader? 01:34:40 There's non-esoteric sub-Turing languages. 01:34:41 e.g. C 01:34:44 at least without libc 01:34:57 by the way this channel should be called #pedantic, you are really all ready to push newcomers in a corner .. 01:35:13 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 just kidding pikhq let's be friends. 01:36:49 or something 01:37:00 woo one of the spontaneous channel lulls 01:37:10 Jackoz: I think it's meaningless to talk about natural languages being TC 01:37:15 they're description languages 01:37:33 "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 "Are S-Expressions TC?" is also meaningless, but Lisp is certainly Turing complete. 01:38:01 Similarly, you could define a language out of valid English sentences, and it could be Turing complete. 01:38:10 "Give me N gram(s) of sugar." could add N to the accumulator, etc. 01:38:31 elliott: re, that was my point. I think that TC has its coolness but it is somewhat not so much significative 01:38:48 it is just the best effort we've been able to do in the field of computational theory 01:39:26 just because you can't apply the concept of turing-completeness to some things doesn't mean it's meaningless :) 01:39:33 like saying colours aren't an ideal concept, because you can't ask what the colour of 3 is 01:40:17 I don't say it is meaningless, I say that every language used to compute something is 99.9% TC 01:40:21 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 catseye: well sure, but it's not English that's TC 01:40:43 just like the s-expression 01:40:46 (define (brainfuck x) ...) 01:40:48 doesn't prove S-expressions TC 01:40:52 it proves Scheme TC 01:40:56 English is more than S-expressions, though. 01:41:00 Sentences have meanings. 01:41:02 catseye: what that shows is that English Interpreter Deluxe is TC. 01:41:05 catseye: well, sure 01:41:08 but they're descriptive meanings 01:41:11 they describe objects 01:41:16 you could describe a turing machine 01:41:20 etc. 01:41:29 but you can't actually describe something that takes a Turing machine to compute 01:41:37 (although you can describe a Turing machine that computes a certain thing) 01:41:59 elliott: You are hopelessly confused on this point. 01:42:19 catseye: That's an... interesting way to say "we disagree". 01:42:30 just to avoid a fight, can I ask a side question? 01:42:51 catseye the one of Cat's Eye Technologies? 01:42:56 Yes. 01:43:09 cool, my maximum respect to you :) 01:43:21 since I remember your website from many years ago 01:43:28 Don't believe the hype! catseye is actually a slimy, slithery snake of EVIL and LIES. 01:43:42 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 *you 01:43:51 yeah, then he tried to push me in a corner together with the others :( 01:43:53 *your 01:44:12 catseye: And I believe that English is a language describing (and is thus executable) objects in a sub-TC way. 01:44:15 Well. 01:44:25 "The contents of the tape after executing the Brainfuck program '...'." 01:44:29 I wonder why elitistic nerds are also misanthropic 01:44:35 catseye: You may be right! 01:44:39 Jackoz: it's IRC, get over it :P 01:44:51 Jackoz: I saw no pushing into corners, just nitpicking and discussion 01:44:58 and when the conversation is this academic, nitpicking is important 01:45:10 My English parser broke. 01:45:21 yes, some years are passed from my last IRC visit :) 01:45:23 this is Sgeo's wonderfully polite way of saying "please restate what you last said, I couldn't understand it" 01:45:36 ironic, i'm usually the asshole here 01:45:52 it's hard to speak about academic topics when english is not your mother language 01:45:56 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 I'm really trying to do my best :) 01:46:02 Jackoz: i swear we're nice and cuddly 01:46:20 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 Jackoz: YEAH WELL I HATE YOU TOO 01:47:07 now back to my bootloader -- the only true friend i have 01:47:12 my main concern 01:47:13 is to find 01:47:14 a way 01:47:19 to talk over multiple lines? 01:47:21 congrats :) 01:47:30 to change my stack language in something different 01:47:38 "in something different"? 01:47:42 yeah, sorry, as I stated I'm not used anymore to IRC :) 01:47:44 * elliott legitimately doesn't understand 01:47:49 oh, i do it too 01:47:53 i'm just being silly 01:48:02 good heuristic: lines in #esoteric are not serious 99% of the time 01:48:23 I mean that just having a stack needs too many extra operations 01:48:51 so I thought that here some dark-uber-mega-nerd-misantrophic-guy 01:48:55 could give me a better idea 01:50:00 well it's a bit of a vague question :) 01:50:11 yes, I can get it 01:50:13 my actual idea 01:50:29 was to avoid variable declaration 01:50:51 Jackoz: functional? 01:50:55 but *guessing* having many stacks that are used by convention 01:50:55 if every function has a fixed number of arguments 01:50:58 yes, it is 01:51:02 then the program is just f g x y h x y z 01:51:07 if f has three arguments 01:51:12 and g and h have two 01:51:16 then that's f(g(x,y),h(x,y),z) 01:51:17 etc. 01:51:29 ok, now assume that many builtin instructions 01:51:37 can work on different parameters according to the stack 01:51:46 (either number of parameters, either types) 01:51:59 for example .> 01:52:09 computes the floor function if it finds a float onto the stack 01:52:18 while it works like OCaml iter (or each) 01:52:27 if it finds a collection and a lambda 01:52:27 oh god this language looks awesome 01:52:45 so that 01:52:54 2.2 .> will leave 2.0 onto the stack 01:52:55 while 01:53:05 {1,2,3,4}[^].> will print 1 2 3 4 01:53:28 Jackoz: right 01:53:35 Jackoz: so, function overloading except on a stack basically. 01:53:41 yes 01:53:49 and? :) 01:53:52 this can be good but a little bit weak in certain situations 01:53:54 just not sure what your question is 01:53:54 ok 01:54:07 my question was about not using a stack but something different :) 01:54:17 maybe multiple stacks that are filled accordingly to the types? 01:54:26 so each lambda goes on the lambda stack? 01:54:27 etc.? 01:54:28 I really don't know, I just thought that the stack was not enough 01:54:37 something like that 01:54:46 actually there is a lambda stack, but it is used to track execution 01:54:56 right, "return stack". 01:55:09 yes, the good old activation record 01:55:14 Jackoz: general advice - keep it simple. your language looks interesting as it is 01:55:16 of CPUs 01:55:24 ok, it's not *hugely* esoteric, but it's definitely more esoteric than most languages 01:55:45 so your personal advice is to keep it this way? 01:55:57 personally, yes; but if you hit on something interesting, don't let me stop you :) 01:55:59 Jackoz: maybe a queue! 01:56:01 that would be ... odd 01:56:06 rotfl 01:56:26 that would be crazy 01:56:42 I could implement a fuzzy rule 01:56:55 that tries to execute the right implementation of the operator 01:56:58 coppro: you want nothing more than to read my bootloader, right? 01:57:01 according to what it actually finds on the stack 01:57:12 Jackoz: well that's not fuzzy that's just function overloading isn't it? :) 01:57:19 not at all 01:57:47 then I was thinking about 01:57:54 elliott: ob 01:57:57 not having to pick values from the stack, or rotate them 01:58:19 no, this language must have only one stack 01:58:22 like something that is able to guess the correct operation not caring about order of parameters 01:58:24 coppro: http://sprunge.us/UfHO boot.s! 01:58:28 it should have an 'evaluation stack' 01:58:32 Jackoz: coppro is now in charge of your language :) 01:58:38 :D 01:58:46 err, sorry 01:58:47 two stacks 01:58:53 one for values/functions, one for evaluations 01:58:56 don't want to be invasive, just to get some ideas 01:58:56 coppro: it already does 01:59:02 Jackoz: invasive? howso? 01:59:14 just by submerging you with questions 01:59:28 if we get tired/annoyed we'll just not answer 01:59:33 nothing could ever match Sgeo's questioning power 01:59:38 that too 01:59:44 and we still answer him 01:59:47 mostly because he doesn't shut up if we don't 01:59:48 very little matches this channel's noise:signal ration 02:00:09 you just need a Sgeo-pass filter 02:02:11 Jackoz: I need to read logs and stop commenting things I don't understand in the slightest 02:02:30 coppro: don't worry, I like your good intents 02:02:46 which could be a good way to test the expressiveness of the language? 02:03:08 trying to implement things as project euler challenges? 02:03:20 Jackoz: it's esoteric, it's not meant to be expressive! well ok that's not true but still 02:03:24 Jackoz: implement a brainfuck interpreter 02:03:25 or Underload 02:03:36 I was already trying it 02:03:44 but the use of the stack was really tough :) 02:03:45 :) 02:03:52 that's why I came here 02:03:58 hmm 02:04:04 it would be easier to help with a specification 02:04:16 {:}#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 this is how much far I gone 02:04:25 but now I realize that what I was thinking is not what you are thinking 02:04:30 coppro: there's a function reference :P 02:04:40 that function reference is really old :( 02:04:43 but now I have an excellent idea for a language 02:05:17 coppro: don't steal my ideas! :) 02:05:53 based on your small code samples, it's RPN, right? 02:06:01 no shit :P 02:06:14 yes, it is 02:06:52 yeah; I want a bracketless functional PN language 02:07:00 coppro: I already mentioned that... 02:07:04 coppro: And REBOL already did that. 02:07:09 coppro: And Logo already did that. 02:07:14 elliott: I know you mentioned it 02:07:15 ok, this could give a better view: http://img823.imageshack.us/img823/9518/operators.png 02:07:29 but many of these instructions can work with different parameters too 02:07:40 and REBOL has brackets 02:07:47 Jackoz: Is that an excel spreadsheet? 02:07:51 coppro: yes, but it doesn't need them 02:07:57 coppro: pure functions can be just 02:08:01 f g x y z h a b c 02:08:03 unfortunately yes 02:08:10 coppro: and logo has no brackets... well, it has [], but that's just lambda 02:08:12 after trying to keep consistency directly in source code 02:08:12 so does logo 02:08:21 coppro: so? you could easily get rid of lambda 02:08:24 have it be 02:08:26 lambda (list) 02:08:26 I had to find a simpler way, since many things were subjected to change 02:08:31 *(list) (list) 02:08:31 then you'd do 02:08:38 elliott: list 02:08:40 lambda cons :a cons :b nil 02:08:45 for (lambda (a b) 02:08:46 then uh 02:08:51 that would require brackets for any sane implementation 02:09:00 lambda cons :a cons :b nil cons :display cons :a nil 02:09:01 would be 02:09:03 Aren't stack languages bracketless RPN? 02:09:08 (lambda (a b) (display a)) 02:09:12 coppro: i meant list as in a list object 02:09:13 not the list function 02:09:18 Sgeo: yes, which is considerably easier than bracketless PN 02:09:21 lambda add #1 #2 02:09:43 coppro: no it's not 02:09:44 Jackoz: what's the real issue? 02:09:51 RPN languages with lambda have [] too 02:09:53 exact same problem 02:09:55 "problem" 02:09:58 Oh 02:10:02 Durh 02:10:06 coppro: I tried to explain it in my words but with no success :/ 02:10:07 elliott: lies. I will show you the evility of my language 02:10:12 Jackoz: :/ 02:10:47 I was wondering if something what is not just a stack but that doesn't work by variable declarations too exists 02:10:53 what = that 02:11:12 Jackoz: here is what i think you want to say 02:11:20 "Are there languages which are neither concatenative or imperative?" 02:11:24 perhaps? 02:11:26 I mean that variable declaration is verbose 02:11:36 Jackoz: lambda calculus :) 02:11:57 while using just a stack is verbose too, since you then need to manipulate it very often inside the code 02:12:15 coppro: sally has no brackets. no proper lambdas, either, but it would be a straightforward addition 02:12:18 so I would like to have a computational model which works without having to do explicitly any of two 02:12:36 maybe it simply doesn't exist 02:14:12 Jackoz: of course it does 02:14:15 Jackoz: see the lambda calculus 02:15:02 the real problem about λ-calculus is that it needs a more complex VM underlying it 02:15:38 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 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 (by the way I'm just guessing, this is the real first approach to an esoteric languages) 02:16:51 I have found something too obscure for Fark1 02:16:52 http://www.fark.com/cgi/comments.pl?IDLink=5726773 02:16:56 my lexer broke too 02:17:17 the real problem about λ-calculus is that it needs a more complex VM underlying it 02:17:21 only on imperative hardware 02:17:29 lambda-calculus on the Reduceron would be a sinch 02:17:41 sinch 02:17:42 sin 02:17:54 * Sgeo channels elliott 02:18:03 I love the relativistic way you approach things 02:18:20 in any case I'm not writing this language in an imperative language 02:18:25 Jackoz: well if all we cared about was intel amd x86 windows linux... we'd be very boring. :) 02:18:29 Jackoz: ocaml is imperative 02:18:31 it's just functional, too 02:18:40 but ocaml functions can have any side effects they want 02:18:43 yes, it's not pure functional 02:18:50 but you can use it as a pure functional 02:18:55 if you want 02:18:56 "impure functional" is a rather worthless concept academically :) 02:19:02 perl counts as impure functional 02:19:04 it has lambdas 02:19:33 I actually skipped the course about functional languages years ago 02:19:44 just because I was too young to feel their coolness 02:20:23 so I admit my ignorance 02:20:35 but I assert that OCaml is purer than perl from that point of view :) 02:20:52 purER, sure, but just try and define the scale of purity mathematically >:) 02:21:18 (purer is not correct in english?) 02:21:24 Jackoz: it's correct 02:21:26 i was emphasising it 02:21:31 i.e. "pur*er*, but not pure" 02:21:41 "MORE pure" is equivalent emphasis 02:21:53 :) 02:21:55 catseye: aiee, you didn't tell me -- you can't read a whole floppy with one int 13h! 02:22:07 catseye: you'd have to go through the heads and cylinders and stuff 02:22:07 where are you from? (just to chitchat, but I have to ask it after some lines) 02:22:21 catseye: i can only read 31 kilobytes as-is! 02:22:26 Jackoz: england 02:22:27 elliott: that's because i didn't know that! 02:22:39 Which is purer, OCaml or Factor? 02:22:46 I guess it depends on what is meant by pure 02:22:49 catseye: http://www.ctyme.com/intr/rb-0607.htm 02:22:53 catseye: "CL = sector number 1-63 (bits 0-5)" 02:23:03 Purely concatenative, in which Factor is obviously closer, or purely functional 02:23:06 catseye: 63 * 512 bytes = 31.5 k 02:23:07 Which, um 02:23:09 *31.5k 02:23:17 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 elliott: so read a bunch of chunks in a loop 02:23:17 catseye: so yeah, urgh! 02:23:24 catseye: oh i will once the kernel is big enough :D 02:23:25 Jackoz: it was 02:23:38 you can assert it empirically 02:23:39 catseye: other things i'll do then: do the A20 line properly, rather than relying on the BIOS... 02:23:48 catseye: say, how hard is it to talk to the floppy without the bios, any ideas? 02:25:06 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 (this means compiled into native and strongly type inferred) 02:25:31 Jackoz: I, uh, Haskell! If you write your code in a way that GHC serendipitously happens to like... 02:25:31 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 catseye: mm. wait, surely befos reads from the floppy? 02:25:58 via ide or something i guess though 02:26:00 elliott: using bios, yes 02:26:06 catseye: oh, right, you never cli 02:27:19 elliott: I'm scared that the lack of imperative features can make simple things really complex sometimes 02:27:41 Jackoz: if you code inside the IO monad in haskell, then it's "just" like an imperative language 02:27:58 elliott: wait, this should make it impure too 02:28:06 Jackoz: nope 02:28:40 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 Jackoz: for any X you can find a tutorial explaining how monads are actually just like X :) 02:29:19 Even burritos (http://blog.plover.com/prog/burritos.html) 02:29:32 elliott: maybe I won't even understand you 02:29:54 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 Jackoz: the best policy for a beginning haskeller is just to trust that the IO monad works :) 02:30:37 elliott: faith is not something I'm used to rely upon :) 02:31:05 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 it *is* possible to fully understand monads before using them -- but impractical, and pointlessly difficult 02:31:30 elliott: I actually did, but I was unable to answer my self :( 02:31:49 elliott: this means that after OCaml I'll try Haskell, since functional programming really opened my mind 02:32:29 Jackoz: It is a good idea. 02:32:31 elliott: just a last question.. does Erlang worth trying? 02:32:59 Jackoz: opinions are divided :) 02:33:03 it has interesting things. 02:33:11 i don't want to be the one to make that decision for you :) 02:34:07 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 Jackoz: I can barely contain my excitement. 02:34:22 (sarcasm, but ok :P) 02:34:31 elliott: that is a good start 02:34:35 Jackoz: you know what's cool? my OS doesn't boot! 02:34:44 elliott: linux? 02:34:50 Jackoz: no, literally, MY os :) 02:35:07 because writing an os is the best thing anyone can ever do apart from .... 02:35:08 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 resurrecting the dinosaurs 02:35:20 elliott: writing a programming language is just second to that 02:35:21 But elliott will yell at me 02:35:25 Jackoz: please don't take up Sgeo on his offer; he is an excellent confuser :) 02:35:30 (from my point of view) 02:36:10 But it's so SIMPLE 02:36:14 Kind of 02:36:19 is it a bootloader problem or a OS problem? 02:36:25 * Sgeo feels like a burrito tutorial author 02:36:29 just because you were talking about bootloaders so far 02:37:40 Jackoz: bootloader, i think 02:37:50 either my floppy assembly script isn't working, or my bootloader isn't actually jumping to the kernel 02:38:01 ^@^@^@^@^@Uª^@^@^@^@^@^@^@^@ 02:38:04 suspicious lack of my kernel there 02:38:26 * Sgeo just wants to blurt out what's on his mind 02:38:37 Sgeo: /msg me with it 02:38:38 i'm eager to hear it 02:38:48 * elliott prepares himself 02:39:39 Just making sure I don't embarrass myself by using an example function that doesn't actually exist 02:39:50 just do it in /msg 02:40:02 dd: `kernel/kernel': cannot skip to specified offset 02:40:04 that would explain it! 02:40:31 oh, it needs to be seek= 02:40:32 that would explain it 02:40:34 skip= is for input 02:40:59 not that that works, either :D 02:41:17 @^@^@^@^@UªEVERYBODY PARTY!ôéêÿÿÿ^@^@^@ 02:41:20 ok it is copying ther 02:41:21 *there 02:44:28 My explanation appears to have the elliott seal of approval? 02:45:30 MAYBE 02:47:59 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 catseye: gah! my bootloader isn't loading correctly! 02:54:17 * Gregor clicks "Popular amongst people in their twenties" on AppBrain. 02:54:23 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 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 catseye: no it's clearly the bioses fault 02:56:27 evidence: fuck the bios 02:56:31 how can you disagree? 02:56:35 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 but I *set* GTK_CFLAGS, you stupid configure script! don't tell me it's not set! 03:00:54 Okay, the read is failing; even if the floppy is random, I just display zeroes. 03:03:24 Aren't you using a VM? 03:03:31 ...yes... 03:04:08 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 foremr 03:05:21 *former 03:05:52 * Sgeo ponders jEdit 03:07:12 ...okay, this is just inexplicable 03:07:18 I'm following the interrupt spec perfectly. 03:07:29 It's not erroring out. 03:08:35 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 oh! and netbsd world built. 03:09:49 catseye: including kernel? 03:11:00 yes, but i may have to build it again; i need t check somehtin 03:11:09 catseye: because if so DEBIAN YAY :p 03:11:37 no its good 03:11:52 catseye: DO YOU TOTALLY REMEMBER THE SSH COMMAND (nothing is more important) 03:13:08 it started with ssh 03:13:46 catseye: ssh -L R 9292:localhost:22 cpressey@91.104.241.33 03:13:47 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 i think that's it 03:13:53 no, it won't 03:13:55 catseye: it's in a _chroot_ 03:14:00 the chroot contains _all the linux libraries_ including glibc 03:14:08 when you chroot, it looks for /lib/libc or whatever, the /bin/sh 03:14:12 which is of course *inside the chroot* 03:14:17 ok 03:15:18 well, need to reboot to test new kernel 03:15:23 hahaha good luck 03:15:41 -!- catseye has quit (Quit: Lost terminal). 03:15:44 ...... 03:16:09 Sgeo: ...what? 03:16:54 -!- Sgeo|jEdit has joined. 03:16:58 ... 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 There we go 03:19:42 For what it's worth, I hate this client 03:20:13 (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 that was interesting 03:30:23 it claims to not have any file system modules compiled into the kernel 03:30:36 thus could could not mount the, uh, filesystem 03:31:08 also, the new kernel makes my speakers go "WEEP!" during boot now 03:31:33 custom kernel time! 03:32:20 -!- augur has joined. 03:32:41 -!- augur has quit (Remote host closed the connection). 03:33:28 oh the silly 03:33:40 all fs support is built as modules by default 03:33:42 ALL 03:34:03 -!- Quadlex has joined. 03:37:39 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 Sgeo: just freakin' use FUEL 03:39:21 not even jedit's author, uses it any more 03:39:25 and that's the same as factor's author! 03:39:34 he uses fuel like everyone else 03:40:01 How well does emacs really run on Windows/ 03:40:19 perfectly. 03:42:35 Does the editor.emacs thingy know where to look on Windows? 03:42:48 "PAL emulation" in VICE should be called "CRT emulation" -- as a North American I feel discriminated against by this 03:43:29 catseye: it, presumably, only emulates the characteristics of a PAL C64 on a PAL TV 03:43:37 Sgeo: you have to set it, just like on unix 03:43:40 it makes it look like a tv! 03:43:57 catseye: it's lovely :P 03:44:05 OK FUCK YOU BIOS 03:44:12 IM GONNA FUCK UP YOUR SHIT AND READ THE FUCKING KERNEL WHETHER YOU WANT ME TO OR NOT 03:45:42 even in ntsc mode! which they seem to have improved slightly in this version 03:46:01 catseye: why would you want to use ntsc mode 03:46:07 pal representin' 03:47:09 ...............................for nostalgia! 03:47:36 i tried Factor once and it defeated me 03:47:38 catseye: but it looks exactly the same, more or less :P 03:48:11 i tried Emacs like a dozen times an it always defeated me too 03:48:31 "dw 0xAA55 03:48:31 For some reason the signature has to be written this way round!" 03:48:36 what is it with morons writing tutorials? 03:48:53 catseye, hmm? 03:49:51 ok so i'm gonna check out this ophis thing 03:50:04 catseye: the manual is pretty good 03:50:15 catseye: http://hkn.eecs.berkeley.edu/~mcmartin/ophis/manual/book1.html 03:50:29 NUTS TO MANUALS 03:50:42 catseye: i don't mean read it :P 03:50:44 i just mean reference it 03:51:31 "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 there 03:53:30 disks of varying floppiness 03:54:02 ok so ophis can assemble my existing code RIGHT 03:55:13 elliott: Be nice? What's that? 03:55:23 well, at least one file! 03:55:23 lawl 03:55:58 it just doesn't work! aaargh 03:56:03 pikhq: WANNA DEBUG MY BOOTLOADER? 03:56:44 Maybe I should write a bootloader at some point 03:57:03 *everyone laughs at the thought of Sgeo doing something like that* 03:59:03 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 Sgeo: it's not difficult. really. 04:00:25 elliott certainly seems to be having trouble 04:00:42 elliott is trying to make elephants dance in his bootloader. 04:00:53 catseye: actually, my problem right now is loading sectors from the floppy 04:01:00 catseye: i can enable the a20 line, i can go into protected mode, everything 04:01:03 catseye: i just can't load the kernel 04:01:14 you load the kernel *before* the otehr stuff, right? 04:01:23 catseye: yes. well, i print "boo" first. 04:01:30 also: reset the disk. but you're meant to do that 04:01:45 and it was working before, from what i gather 04:01:57 seemingly. 04:03:06 "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 YOU'RE A FUCKING LIAR 04:03:19 I'M IN REAL MODE 04:03:21 ahem 04:04:19 A 04:04:20 HA!!! 04:04:33 wait what 04:05:25 hehehehehe "boob*o*o*" AHEM 04:05:34 maturity elliott this is serious 04:07:50 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 cannot exec /sbin/init: error 8 04:13:49 catseye: LAWL 04:14:25 translation: 04:14:32 You have no chance to survive make your time. 04:17:20 catseye: end of the netbsd era eh? 04:19:07 i apparently have to install more things somewhere else. 04:19:53 i need a kernel module for executing ELF files. 04:20:56 ok NOW i find http://www.netbsd.org/changes/changes-6.0.html 04:22:05 ok 04:22:40 ./build.sh modules 04:22:43 ok cool 04:23:57 Error 8 is ENOEXEC. 04:24:24 00056902415e[CPU0 ] fetch_raw_descriptor: GDT: index (807) 100 > limit (17) 04:24:25 Hmm. 04:24:29 Anyone know what that means? 04:25:29 You are trying to access GDT descriptor far above the limits. 04:26:09 Ilari: That's the thing, though; I'm really not. :) 04:26:14 Ilari: I think my kernel is still failing to load. *sigh* 04:26:28 WHAT DO YOU WANT, INFERNAL HARDWARE?! 04:27:09 Limit 17 would mean it only has 3 entries (null, code and data)... 04:27:15 Ilari: Indeed, it does. 04:27:29 Ilari: I think it's trying to run random memory since the kernel didn't load properly, or suchlike. 04:27:56 It seems like the descriptor its trying to access is 1024, 1025, 1026 or 1027... 04:28:12 Ah, no. 04:28:29 2048, 2049, 2050 or 2051. 04:29:07 Maybe you try to refer to 0x0008 (that would be code?) and get the bytes swapped for some reason? 04:29:15 Or offset by one. 04:29:43 Ilari: The code is loaded at 0x8000. 04:30:06 Ilari: The kernel, that is. 04:30:21 Ilari: Hmm... 04:30:26 jmp KERNEL_SEGMENT:0 04:30:32 I do this, but in protected mode. 04:30:41 Maybe I should do jmp KERNEL_SEGMENT * 16? 04:30:42 Because trying to refer to segment 0x0800 (instead of 0x0008) would trigger just that kind of error... 04:30:52 Ilari: Indeed, KERNEL_SEGMENT = 0x800. 04:32:15 If you are in pmode ring 0 with the likely GDT, the only valid segment to jump to is segment 8. 04:32:26 Ilari: Right. 04:32:37 Ilari: So what I need to do is... "jmp CODE_SEGMENT:0x8000", right? 04:32:50 I think so. 04:32:54 Ilari: Thanks; I'll try that. 04:33:29 You might need to initialize SS first so it validates after jump (0x0010?) 04:33:47 mov ax, DATA_SEGMENT 04:33:48 mov ds, ax 04:33:48 mov es, ax 04:33:48 mov fs, ax 04:33:48 mov gs, ax 04:33:48 mov ss, ax 04:33:52 Already done that. 04:34:03 Well, that should work. 04:34:24 qemu: fatal: Trying to execute code outside RAM or ROM at 0x000a0000 04:34:24 EAX=00000000 EBX=0000ff31 ECX=00000000 EDX=00000500 04:34:24 ESI=00000002 EDI=e900fed4 EBP=00000000 ESP=00006ef9 04:34:40 Bochs error is just... 04:34:42 Hah. You jumped into VGA memory. 04:34:45 00042725627e[CPU0 ] write_virtual_checks(): no write access to seg 04:34:46 00042725627e[CPU0 ] interrupt(): vector must be within IDT table limits, IDT.limit = 0x0 04:34:46 00042725627e[CPU0 ] interrupt(): vector must be within IDT table limits, IDT.limit = 0x0 04:34:46 00042725627i[CPU0 ] CPU is in protected mode (active) 04:34:49 Ilari: ha! 04:34:53 I wonder how I managed that. 04:34:59 I do set the segment register to vga memory in real mode. 04:35:05 DOSBox would lock up if you did that. 04:35:16 hmm 04:35:17 mov ax, DATA_SEGMENT 04:35:17 mov ds, ax 04:35:21 ds was where i had vga memory, so 04:35:26 mov word [0xB8000+ebx+2], 0x0F21 04:35:38 that's the last time i reference vga memory in my program and as you can see... 04:36:19 blub blub 04:36:21 -!- catseye has quit (Quit: Lost terminal). 04:36:23 What instruction actually triggers that execution attempt from VGA memory? 04:36:37 The 'jmp CODE_SEGMENT:0x8000'? 04:38:24 -!- Mathnerd314 has quit (Ping timeout: 240 seconds). 04:39:10 Ilari: I'm not sure how to get bochs to tell me that :) 04:39:48 Ilari: Hmm, I have replaced CODE_SEGMENT: with "push CODE_SEGMENT \ pop cs" earlier in the program. 04:39:52 Then just "jmp (KERNEL_SEGMENT*16)" later. 04:39:56 Same error, but that seems clear. 04:39:58 *cleaner. 04:40:01 POP CS doesn't exist. 04:40:16 Ilari: Are you sure? nasm assembles it happily. 04:40:43 At least on any x86 processor that supports protected mode. 04:40:53 Ilari: Oh, looks like it assembles it into a hopeless tangle of things... 04:41:03 mov ax, CODE_SEGMENT 04:41:03 mov cs, ax 04:41:06 That'll work, right? 04:41:17 I don't think you can do that either... 04:41:22 Ilari: Can you set CS at all? 04:42:03 -!- catseye has joined. 04:42:08 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 elliott: ^^ 04:42:21 now to install the userland! 04:42:22 I think only far jump, far call, far return, interrupt, syscall or sysreturn can change CS. 04:42:28 catseye: NO WAIT YOU SHOULD GIVE ME SSH FIRST >:) 04:42:30 :P 04:42:31 Or not. 04:42:43 Ilari: Oh. Then CS is already correct :) 04:42:45 jmp CODE_SEGMENT:dword other_side 04:43:31 Ilari: I'm actually at a complete loss why it jumps into VGA memory... 04:44:04 Ilari: KERNEL_SEGMENT is 0x800, so it's jumping to 0x8000. 04:44:11 And that's graphics VGA memory, not text VGA memory... 04:44:21 Ilari: I still think the floppy might not be reading correctly. 04:44:24 Wait, easy way to find out. 04:44:27 *** Failed target: mkvarsyesno 04:44:31 whuh-oh 04:44:42 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 Ilari: *Possibly* the kernel isn't even *there* and there's only zeroes. 04:45:14 Ilari: It does pause a bit before crashing. 04:45:32 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 00 00 is ADD [EAX], AL. With the segments the way they are, that works even with zero EAX... 04:46:31 Ilari: Indeed, I just added this:. 04:46:36 mov al, [KERNEL_SEGMENT*16] 04:46:36 mov byte [0xB8000+ebx+4], al 04:46:36 mov byte [0xB8000+ebx+5], 0x0F 04:46:36 mov al, [(KERNEL_SEGMENT*16)+1] 04:46:36 mov byte [0xB8000+ebx+6], al 04:46:36 mov byte [0xB8000+ebx+7], 0x0F 04:46:38 x:jmp x 04:46:40 Before the jump. 04:46:44 And it just says "boo" on my screen. 04:46:47 i.e. i'm putting zeroes there. 04:47:09 i.e. the kernel isn't getting loaded. 04:47:11 i.e. WTF? 04:49:08 elliott: did you post the code somewhere? 04:49:23 catseye: I TOTALLY CAN 04:49:36 catseye: Ilari: http://sprunge.us/MLOL 04:52:39 i like how sprunge has put "LOL" in that url 04:54:14 catseye: SO WUTZ MY BUG 04:54:15 LOL 04:55:39 It just says "boo"? 04:55:55 Appropriate for Oct 31 I suppose :) 04:56:16 catseye: i don't even know HOW 04:56:24 Today has been a good day. 04:56:25 catseye: if you look at my code, it all writes *after* the "boot!" 04:56:28 catseye: so wtf 04:57:29 Well, I just got back from trick-or-treating 04:57:36 free candy is best candy 04:57:46 "it all writes", you mean, the code after 'protect' does stuff? maybe "t!" is being erased 04:58:17 catseye: yeah but HOW 04:58:22 it makes the NONSENSE 04:58:23 Sasha: Yeah, I'm eating the leftovers ATM. 04:58:31 heh 04:58:40 (I did not buy the candy, for I live with my parents) 04:59:12 so do I 04:59:20 but I am 16 so I have an excuse 04:59:25 elliott: you pop bx 04:59:30 but your push bx is commented out 04:59:41 What's you excuse, pikhq? 04:59:45 catseye: uh right 04:59:53 catseye: push bx before "mov ah, 02h" 04:59:55 Sasha: 20 and go to school nearby. 05:00:00 eh 05:00:04 catseye: ok now it's just "boot!" 05:00:08 catseye: with what are presumably zero bytes after it 05:00:11 Sasha: So, similar position except it'd be *possible* for me to move out. 05:00:18 heh 05:00:20 Well, except that it's nearly impossible to find a job right now. 05:00:25 I want to move when I am of-age 05:00:27 i'm 8 years old and own a flute that gives me a bedroom 05:00:27 Fucking Bush. 05:00:36 *15, *don't own 05:00:36 even if I have to walk to Seattle 05:00:39 sadly, reality is never quite as perfect. 05:00:41 from Northern AZ 05:00:49 elliott's 15? 05:01:00 that explains the pompous douchebaggery 05:01:02 I actually did move out. And reality is a bitch and a half. 05:01:03 Sasha: 8 05:01:28 Sasha: The pompous douchebaggery is just from knowing far better than most people. 05:01:34 pikhq: oh shut up 05:01:37 you douchebag :) 05:01:40 thinking he knows far better 05:01:48 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 Sasha: But, see, he does. :) 05:02:01 which, of course, is just a rationalisation, but there you go... 05:02:04 See, I know more than elliott about lots of things. But, I'm not a douchebag. 05:02:14 elliott, I was a pompous douchebag at 15 too 05:02:18 Sasha: no, but you are, evidently, incapable of rational thought 05:02:20 elliott, I was a pompous douchebag at 15 too 05:02:25 Sasha: You're fucking 16. 05:02:27 and then serious depression kicked in 05:02:30 this in no way lends evidence to the proposition that my pompous douchebaggery is due to my age 05:02:33 Sasha: People don't change that damned much in a year. 05:02:38 so I am too depressed to be a douchebag 05:02:40 Everyone on the internet is depressed! Everyone on the internet has motherfuckin' autism! 05:02:50 Everyone on the internet is so much deeper than all these sheep! 05:02:53 elliott: And every other possible disorder. 05:02:54 I'm diagnosed with clinical depression 05:03:03 Everyone on the internet is fucking stupid and you too -- whoever is reading it, you too. 05:03:04 take pills and everything 05:03:52 catseye: i think i blame jews for my bootloader 05:03:57 it can't be that my code is wrong, absolutely not 05:04:18 elliott: Don't you have someone less offensive to blame? 05:04:34 pikhq: Oh, right, Muslims! 05:04:35 elliott: Like that witchdoctor over there? 05:04:41 * pikhq points at nearest black man 05:04:47 Actually I blame society. 05:04:51 I blame society for my murders. 05:05:36 hey, if there was no society, it wouldn't be murder, would it? let's move on. 05:05:48 elliott: so now that your stack is no longer stupid 05:05:57 catseye: still doesn't work at all 05:06:08 you *don't* see the other stuff being printed? 05:06:14 catseye: Nope; zeroes. 05:06:20 that you saw before. when the stack was stupid. 05:06:20 Well, spaces, but they're zeroes. 05:06:25 I saw nothing. 05:06:32 my mistake 05:06:33 I have never seen anything because *it isn't being loaded*. 05:06:44 Here's what's loaded right after the first sector, btw: 05:06:49 bits 32 05:06:50 org 0x8000 05:06:50 foo:hlt 05:06:50 jmp foo 05:07:36 -!- augur has quit (Remote host closed the connection). 05:07:37 write the code to display what's been loaded, before you got into protmode. 05:07:58 obv you have to write it in segmented form, so i didn't just say 'copy it to...' 05:08:15 "segmented form"="real mode" 05:08:58 catseye: i did 05:09:01 catseye: zeroes, the same 05:09:04 catseye: i did that like three times :) 05:10:20 elliott: i don't know if this is it but you don't set dl when you issue the reset interrupt 05:10:32 mine has: 05:10:33 movah, 00h; call code = reset 05:10:33 movdl, 00h; drive 05:10:34 int13h 05:10:44 yours skips the dl part 05:11:10 god forbid you are resetting some OTHER drive. 05:11:30 catseye: isn't dl initialised to current-drive??? 05:12:00 it may be, ok 05:12:11 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 catseye: same result 05:16:13 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 i have a netbsd 5.999999 world now so i have to reboot to completely break my machine, you see 05:16:56 brb (knock on wood) 05:16:58 -!- catseye has quit (Quit: leaving). 05:19:06 -!- catseye has joined. 05:19:19 NetBSD 5.99.39 inna house! 05:21:00 catseye: SSH! 05:23:03 otay 05:23:11 * catseye goes to log 05:25:11 Bad local forwarding specification 'R' 05:25:24 catseye: uh uh 05:25:26 catseye: what command did you run 05:25:43 ssh -L R 9292:localhost:22 cpressey@91.104.241.33 05:25:44 YOU SAID 05:26:09 catseye: *ssh -R 05:26:13 I must have made mistake lol 05:26:18 s/-L R/-R/ 05:26:38 ha 05:26:40 done 05:27:26 [1] Bad system call (core dumped) sudo chroot debian 05:27:26 catseye$ 05:27:33 wahoo 05:27:35 catseye: 2.6 SUPPORT WOO 05:28:03 hrm 05:31:14 xkcd is starting to bore me 05:31:32 Or at least, this one did 05:33:24 Sgeo: up until now *xkcd did not bore you*? 05:34:52 Night all 05:35:54 -!- Sgeo has quit (Read error: Connection reset by peer). 05:37:42 Europeans are ruining me. 05:38:05 Oh? 05:38:06 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 The other day I said "queue" instead of "line" 05:38:39 The queue thing might just be bits getting to you. 05:38:43 Gregor: ...what do americans normally count with? 05:38:46 Pinky first??? 05:38:56 elliott: Index-finger first, then to pinky, then thumb is #5 05:38:56 elliott: index finger down to pinky, thumb last 05:39:00 what 05:39:05 that is the most retarded thing i've ever heard 05:39:10 yes 05:39:11 elliott: Which is also how Brits count, by the way :P 05:39:15 no it isn't 05:39:17 well i don't dot hat 05:39:20 *do that 05:39:29 probably it never occurred to me to do something so blatantly illogical 05:40:13 Peple count on fingers? 05:40:18 Yes, peple do. 05:40:18 s/Peple/People/ 05:40:19 Ilari: and what is error 79? :) 05:40:19 Gregor: Just asked two friends, neither of them do that. 05:40:44 Gregor: I think my "Brits" you might mean "Brits in the 18th century". 05:40:45 I can't find a Wikipedia article on this. 05:40:46 *by 05:40:48 HOW IS THAT EVEN POSSIBLE. 05:40:49 elliott: Possibly. 05:40:58 elliott: Brits also use feet and miles btw. 05:41:04 Gregor: Yes. Yes we do. 05:41:11 Gregor: Usually for height and road distances only. 05:41:15 elliott: The units should DIE IN A FIRE. 05:41:15 Well, people under N. :) 05:41:27 elliott: Along with the stone. 05:41:29 pikhq: Y'know, they make perfect sense in base 12. 05:41:52 elliott: Tell that to the hand. 05:41:55 (unit) 05:42:11 Damn it, SOMEWHERE there must be an article about this on Wikipedia! 05:42:55 Gregor: Try "hands" 05:43:09 Gregor: http://en.wikipedia.org/wiki/Finger_counting 05:43:12 The human hand has five fingers [citation needed] 05:43:12 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 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 Finger counting is studied by ethnomathematics. 05:43:14 ETHNOMATHEMATICS 05:43:18 elliott: Not useful. 05:43:24 Gregor: Ethno. Mathematics. 05:43:30 I count differently 05:43:34 79 => ELIBACC 05:43:37 the art 05:43:41 thx Ilari 05:43:46 catseye: so have you figured it out yet :P 05:43:59 I use the fingercounting method used by American Sign Language 05:44:20 Sasha: That's even screwier than conventional American counting :P 05:44:29 Sasha: I find that very very weird for numbers larger than 10. 05:44:42 Or, I use Chisanbop 05:44:51 "Just to be different" 05:44:58 * pikhq has no valid excuse for not knowing ASL. 05:45:11 I use thumb-as-5 to count up to 10 on one hand (but not usually) 05:45:15 well ok 05:45:17 up to 9 05:45:18 i lied. 05:45:19 Gregor: oh my god, when i start with a fist and try and put my index finger up to count 05:45:22 Gregor: my thumb automatically pops out 05:45:23 not joking 05:45:31 it is SERIOUSLY hard to get the index finger out 05:45:32 takes dedication 05:45:37 elliott: Point instead of counting. 05:45:40 :P 05:45:46 Gregor: Is that what all Americans do :P 05:45:52 elliott: Do binary numerals instead. 05:46:00 Just training a poor Brit on being a good A'merkin! 05:46:02 pikhq: Tried that once; really uncomfortable, impossible to understand. 05:46:05 wait if you start with the humb, how do you do 4? i can't hold my pinky back like that! 05:46:08 I can count in binary on my fingers 05:46:09 *thumb 05:46:15 elliott: Really simple to do. 05:46:29 elliott: Except that you flip someone off at 100. 05:46:29 catseye: ... do you use your thumb to hold your pinky while counting three? 05:46:36 with thumb-last, you use the thumb to hold the pinky in, at 3! 05:46:37 Erm. 100_2. 05:46:39 Gregor: yes! 05:46:43 pikhq: Requires tons of finger movement though. 05:46:44 catseye: Pretty pathetic :P 05:46:50 elliott: Yeah, well. 05:46:57 We're all retarded 05:47:04 elliott: That's what 10000100 is for. 05:47:12 That's what humans are 05:47:15 retarded 05:47:19 pikhq: Try 0b1000 05:47:20 pikhq: IMPOSSIBLE 05:47:32 elliott: 0? EASY. 05:47:37 Gregor: I should show you my "4", it's very entertaining what with the half bent fingers and all. 05:47:51 *European "4" 05:47:55 pikhq: but it's physically impossible to lift up like that! 05:47:58 catseye: We just hold the thumb in. So much easier. 05:48:05 elliott: ... Zero. 05:48:09 pikhq: ??? 05:48:10 pikhq: 0b1000 05:48:14 1000 in binary 05:48:20 elliott: Oh. Misparsing. 05:48:21 with your fingers 05:48:27 is physically torturous 05:48:27 elliott: 0 base 1000 is how I parsed it. 05:48:31 xD 05:48:42 elliott: It's half-bent. Quite annoying. 05:49:03 If I am feeling like a twat, I convert all my answers to octal for my math class. 05:49:13 Sasha: And then you don't just *feel* like a twat! 05:49:21 EXACTLY 05:49:36 Instead of kicking puppies, I do that 05:49:43 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 pikhq: Quater-imaginary finger counting. 05:51:57 Now you're slowly dying on the outside! 05:51:58 You could do so much worse than octal. 05:52:01 elliott: o.O 05:52:05 Hmm, that would be difficult. 05:52:08 Is there a binary equivalent? 05:52:09 Base-11 would be pretty mean. 05:52:10 Gregor: Base pi? 05:52:20 Gregor: I like duodecimal 05:52:23 Base pi would be more difficult to do than it was worth :P 05:52:28 Gregor: Base 9 is the worst for talking in. 05:52:31 It's so close to making sense. 05:52:33 or ternary 05:53:02 ooh, or sometimes I will use unal 05:53:15 Naaah, imaginary base. 05:53:21 pikhq: Golden ratio finger counting. 05:53:29 base i 05:53:32 http://en.wikipedia.org/wiki/Golden_ratio_base 05:53:34 *ratio base 05:54:04 TIME FOR DUDLEY DO-RIGHT WOOH 05:54:21 catseye: You can disconnect from my box now :P 05:55:06 "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 pikhq: This. 05:55:29 pikhq: Sounds quite comfortable for hand-counting. 05:55:37 elliott: Gorgeous. 05:55:44 oh lordy 05:56:08 pikhq: I suggest it be done right to left. 05:56:23 elliott: otay 05:56:25 That is, 1101| on hands where | is right edge of hands = 1011_sqrt(2) 05:56:33 eh 05:56:49 I work binary on my fingers from right to left 05:57:01 the pinky on my right hand has a value of 1 05:57:17 and the pinky on my left, a value of 128 05:59:43 bases are for the weak! i use pure numbers 06:00:23 you know what else is for the weak? 06:00:30 CORPOREAL FORMS 06:00:58 catseye: SO DID YOU DEBUG MY CODE 06:01:47 i've got it all figured out, man 06:01:53 but i'm going to sleep 06:01:55 good night 06:01:55 catseye: DARN 06:01:59 catseye: HAVE A BAD NIGHT 06:02:05 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 "Did you just DETERMINE the capital of Spain?" --http://www.viruscomix.com/page490.html 06:44:15 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 inb4 negabinary 07:46:46 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 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 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 I resorted to editing the underlying .ini-style config file 15:19:19 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 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 oh btw, hi ais523 15:21:27 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 I'm not sure if there's some central place, though. 15:22:15 Vorpal: hi 15:22:16 fizzie, I'm pretty sure there is no central place. I found one for KDE though. 15:22:19 I'm in the middle of teaching my students atm 15:22:24 but one at a time, at 12-minute intervals 15:22:26 ais523, ah ok 15:22:31 ais523, java? 15:22:33 so presumably I'll do loads of talking up to but not including :24 15:22:35 yes, java 15:22:43 IRC's open for me to check up on in the gaps in between 15:22:51 okay 15:23:14 ais523, won't take your time with fea^W^W^Wstuff then! 15:23:30 ^W = delete last word 15:23:39 so that's "ais523, won't take your stuff then" 15:23:47 ais523, oh right, haven't slept for over 24h 15:23:50 which is presumably correct, if not what you meant to say 15:23:54 also, why avoid sleep for that long? 15:24:12 ais523, not intentional, trust me. I had an exam this morning so... 15:24:19 just couldn't sleep this night 15:24:25 so sleeping before it would have been a good idea? 15:24:39 ais523, yes, I tried but didn't work 15:24:45 it didn't* 15:33:49 -!- wareya has quit (Ping timeout: 240 seconds). 15:44:01 what was the exam about, anyway? 15:58:23 -!- Sgeo has joined. 15:59:07 *sigh* 15:59:24 If people weren't so afraid of following instructions, things would be much easier 15:59:27 Some printer wasn't working 15:59:47 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 Guests can only watch the chat 16:08:57 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 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 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 what was the exam about, anyway? <-- computer networks 17:05:37 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 Wasn't a dialog box, it was a message on the printer 17:06:14 But yeah 17:06:43 Wish people did 17:07:12 Sgeo, that is even less likely 17:07:34 Sgeo, what did you "fix"? 17:08:50 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 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 he's probably on vacation 18:19:01 or dead 18:19:15 Or in a well. 18:19:28 Or on vacation, dead in a well. 18:19:50 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 Why does my AC adapter smell like burning solder ... 18:52:13 Parfum du overload 18:58:52 -!- poiuy_qwert has joined. 19:13:50 -!- elliott has joined. 19:14:10 Not a good thing? 19:14:36 07:15:01 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 07:15:50 I resorted to editing the underlying .ini-style config file 19:14:36 07:19:19 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 07:20:15 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 Normal people don't configure their apps. 19:14:46 Normal people don't use Wine. 19:14:55 Wine doing that sucks, and Gnome's feature could be more obvious, 19:15:01 but that is not a problem for "normal people". 19:15:30 hi ais523 19:15:43 good to see you; haven't in a while 19:17:12 real users don't use linux either 19:17:17 they just go with plan9 19:17:26 Jackoz: i swear, i had my pitchfork out 19:17:31 then you totally redeemed yourself 19:17:33 Jackoz++ 19:17:54 or, if they are able to manage bootloader, I can allow them to use their own OSes 19:19:05 elliott: you were scared about what? microsoft windows? rofl 19:19:16 Jackoz: BSDs or, hell, OS X :) 19:20:39 should I give this book (http://www.amazon.com/Purely-Functional-Structures-Chris-Okasaki/dp/0521663504) a try? 19:20:50 Jackoz: i swear, i had my pitchfork out <-- BSD joke right? 19:20:57 Vorpal: no. 19:21:02 Jackoz: YES! 19:21:06 Jackoz: Chris Okasaki is wonderful 19:21:14 elliott, worked as one anyway 19:21:23 I was thinking about buying it, now you convinced me 19:21:42 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 (Laziness is done with a little ad hoc language extension, heh... He does give equivalents in Haskell though.) 19:22:11 elliott: another dialect? they should be all quite similar 19:22:19 Jackoz: Standard ML 19:22:25 the original that your poseur OCaml is derived from ;) 19:22:39 elliott: oh SML, btw laziness shouldn't be so hard to implement 19:22:58 Jackoz: yeah he just uses uh $x to denote lazy x i think 19:23:02 not sure he actually implemented it 19:23:02 -!- cheater99 has quit (Ping timeout: 245 seconds). 19:23:07 but why would you want to *run* code?!?!? 19:23:14 we're theoreticians! pfft! 19:23:24 elliott: what I was wondering is if he will talk about complex things, cause easy ones are already enough mastered 19:24:11 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 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 elliott: ok, you've been enough convincing again.. since this kind of books is usually not so much cheap :) 19:25:11 elliott: I just clicked the "look-rapidshare-inside" big red button 19:25:18 Yeah, CS books are... impressively expensive. 19:25:19 hehe 19:25:32 Jackoz: I couldn't read a whole book on a computer. 19:25:37 I'd have to at least print it out. 19:26:51 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 then I bought a pivot monitor just to have some comfort in reading books 19:32:19 I need an eBook reader that doesn't suck ass. 19:32:30 Maybe Gregor will convince me to get one of those iREXs. 19:32:38 *IREX. 19:32:59 "As publicly announced, IREX Technologies is no longer trading and this website has been permanently closed." 19:33:01 Gregor: Never mind! 19:33:29 They went bankrupt because of the FCC :P 19:35:10 09:33:39 Your printer-fixing prowess is unohyou'regone never mind. 19:35:13 whut 19:35:25 You switched back to Gregor and there's no record of anyone joining or /nicking in the interim in the logs 19:35:39 elliott: Yeah, don't get an IREX :P 19:35:51 Gregor: MORE IMPORTANT: EXPLAIN THIS MYSTERY 19:35:54 -!- zzo38 has joined. 19:35:56 08:09:08 --- nick: Gregor -> Guest395 19:35:56 08:09:38 --- nick: Guest55736 -> Gregor 19:36:08 [time passes, no log discontinuity, no nicks to Guest395, no joins of that nick either] 19:36:09 Then 19:36:12 09:33:39 Your printer-fixing prowess is unohyou'regone never mind. 19:36:14 WHAAAAAAT 19:36:24 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 Gregor: Oh, oh I see. 19:36:40 I thought it was 19:36:42 Gregor -> GuestX 19:36:45 GuestX -> Gregor 19:36:53 Gregor: You broke my brain with your numbers. 19:37:35 -!- cheater99 has joined. 19:44:25 elliott, I'm a bit confused about "unohyou'regone never mind" though 19:44:38 Try applying the splitting engine.; 19:44:41 s/;$// 19:44:58 hm 19:46:19 ah 19:47:04 -!- Quadrescence has joined. 19:47:33 elliott, doyouthinktextwrittenlikethisishardtoreadornot? 19:47:58 Vorpal: Not very. And besides, it was a non-word three words. 19:48:02 *non-word and three 19:48:11 elliott, yes 19:48:21 elliott: did you do anything more on the boot sector that went into protected mode? 19:48:30 elliott, I just generalised the issue 19:48:38 olsner: I am still working on it; currently, the issue is that it doesn't actually load the kernel. 19:48:46 olsner: This makes *no sense whatsoever*. 19:49:29 elliott, maybeyourenteredthenextsector,thatisrunoutofbytesintheMBR? 19:49:56 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 The code is only 208 bytes or so, anyway. 19:50:31 elliott, how easy was "maybeyourentered" to parse, did you need to backtrack from "you're" to "you en[tered]"? 19:50:55 This is beyond ridiculous. 19:51:00 elliott, true 19:52:01 elliott, I haven't slept for about 34 hours though 19:52:26 I just couldn't sleep this night. Sigh... some sort of temporary insomnia I guess. 19:52:34 Vorpal: wtf -- I couldn't either 19:52:50 Vorpal: Admittedly it was about 8am when I started sleepcrastinating and actually went to bed. 19:53:02 But then it was 12 am and nothing had happened. 19:53:11 This is why it is almost 7 pm now and I've just woken up. 19:53:16 elliott, am, that is [0,12) right? 19:53:23 or is it [12,24) ? 19:53:25 *12 pm 19:53:31 I can never keep them apart 19:53:33 From midnight onwards: 19:53:55 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 anyway, I couldn't sleep in the day, had an exam 19:54:06 during* 19:54:17 Holidays here. Although ending rapidly.. 19:54:44 holiday week here, but only for high school and lower 19:55:03 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 elliott, has the innovative name of höstlov (en:autumn holiday) 19:55:39 Vorpal: It's called "half term" here. 19:55:42 And yeah, high school and lower. 19:55:53 well, it is the current week iirc 19:56:04 zzo38: I think it means "I'm pretending there was a { here." 19:56:21 Vorpal: It was last week, but today is ~Teacher training day~ 19:56:25 elliott: Yes, that would be a better way of writing it, in my opinion. 19:56:30 elliott, for me it is called "exam week". Oh well, I have more days than usual free at least. 19:56:39 elliott, oh those 19:56:49 Pretty sure they just eat biscuits all day. 19:56:55 elliott: at the risk of being obvious, it sounds like the problem is that you're doing something wrong 19:57:01 elliott, you don't such during university you know 19:57:09 Vorpal: What, eat biscuits? 19:57:10 olsner: Yes, I considered that. 19:57:28 olsner: However I have directly ripped off cpressey's code again almost word for word and it *just doesn't work*. 19:57:33 elliott, no, skipped teaching due to teachers getting taught 19:57:43 Vorpal: Uh, yeah, I know that ... 19:57:49 I'm not a moron. 19:57:52 elliott, but biscuits, short supply too 19:58:08 olsner: http://sprunge.us/eKMD 19:58:24 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 Which are zeroes, as it stands. 19:58:34 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 elliott, and the black market biscuits are too expensive for most students. 19:58:46 Vorpal: Theft. 19:59:03 olsner: Well, the BIOS call can load N sectors with a parameter for reasonable N. 19:59:03 elliott, you mean like, raid the cafeterias? 19:59:12 Vorpal: Sure. Or whatever shops are nearby. 20:00:00 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 Vorpal: Psht! 20:00:48 hmm, what does dx=0 mean here? my code uses mov dx,0x0180 before all the disk calls 20:00:53 I gather that Oxford is like an unkillable patch of weeds. :) 20:01:00 elliott, should be fixable once the time travel lab gets some actual results 20:01:15 DH = head number 20:01:15 DL = drive number (bit 7 set for hard disk) 20:01:33 -!- p_q has joined. 20:01:43 So you read from the 0x80th head (??????????) of drive 1. 20:01:56 elliott, I can imagine (wrt Oxford) 20:02:00 no, head 1 of first hard drive 20:02:14 olsner: Oh, right. 20:02:18 olsner: Well, I'm on a floppy. 20:02:29 olsner: Also, *pretty* sure that DL gets initialised by the BIOS. 20:02:35 or 0th hard drive? or "the" boot drive? not sure which is which here 20:02:40 olsner: The worst thing is that *this* *worked*. 20:02:52 olsner: If I filled the floppy with /dev/urandom, it'd do crazy shit. 20:02:58 DL = drive number (bit 7 set for hard disk) <-- if not set, floppy? 20:02:58 olsner: If I filled it with /dev/zero, the same thing every time. 20:03:04 olsner: So *why* is it failing now??? 20:03:07 Vorpal: Dunno. Guess so. 20:03:11 elliott, what about cds then? they use something else? 20:03:17 CDs are weird. 20:03:25 oh right, now I remember 20:03:25 DL gets initialized by the BIOS (at least in Bochs, it does, anyways). 20:03:27 Don't think BIOSes can do them for you. 20:03:29 el torrito or something? 20:03:56 yes 20:03:58 El Torito 20:04:07 could it be that you're mistaking the address where the stuff is loaded? 20:04:15 elliott, why that strange name I wonders 20:04:17 wonder* 20:04:22 -!- poiuy_qwert has quit (Ping timeout: 252 seconds). 20:04:26 gah, don't change a /me to a /msg in the middle 20:05:03 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 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 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 heh 20:05:51 Fuck OFF Jimbo, I'm not giving you any money. 20:05:55 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 Vorpal: There's also: 20:06:14 zzo38, what? 20:06:15 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 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 zzo38: I don't know. 20:06:34 elliott, I know what rock ridge is, though I never thought about the reason for the name 20:07:11 elliott, I mean, Joilet. Is it named after Joilet, Arkansas or what? 20:07:13 ;P 20:07:27 -!- zzo38 has quit (Quit: I don't know). 20:07:36 huh 20:07:39 strange quit 20:07:47 who would remember the name of the fictional town in blazing saddles? 20:08:18 Vorpal: It's Microsoft; probably named after jolly toilets. 20:08:26 olsner, a creepily fanish fan! 20:08:36 olsner: Andrew Young 20:08:55 elliott, *shudder* that made me think of MS Bob 20:09:09 I hope the MS Bob recycle bin was a toilet. 20:09:13 "Flush" 20:09:16 elliott, google? 20:09:22 It won't be :P 20:09:41 "Microsoft originally owned the domain name bob.com, but traded it to Bob Kerstein for the windows2000.com domain name." 20:09:45 What a strategy. 20:09:49 Now if he had been called Dave... 20:10:06 Vorpal: "Bob's install images are used as "padding" on the original Windows XP install CDs as an anti-piracy measure." 20:11:09 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 (for the toilet in gnome I meant) 20:11:34 -!- myndzi\ has joined. 20:11:40 Vorpal: I don't use Gnome :P 20:11:53 elliott, well, which DE/WM do you currently use? 20:12:02 Xfce. Admittedly it uses the same icons. 20:12:11 But really, the only time I ever see the Wastebasket is in Thunar :P 20:12:35 elliott, the wastebasket? Oh you must mean the toilet. hah 20:12:50 mv old-data ~/.shitter 20:12:58 yes I know they can't draw a toilet 20:13:00 very strange 20:13:26 why do the artist always screw up toilet icons so they look more like paperbins 20:13:56 Vorpal: Linux users don't leave the room; they've never seen a toilet. 20:14:09 Although they'll need to change their XXXXXXXXL-size nappy soon. 20:14:26 Wow did not need that mental image. 20:14:38 olsner: SO HAVE YOU FIGURED IT OUT YET 20:15:01 -!- myndzi has quit (Ping timeout: 272 seconds). 20:15:49 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 the tie would be rather badly put on 20:16:54 Vorpal: and with really puffed up cheeks, red in the face with flame 20:16:59 perhaps holding a flamethrower 20:17:03 elliott, oh definitely 20:17:33 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 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 elliott, indeed. but I didn't like to draw such a mental NSFW picture (considering where those holes are...) 20:18:24 No. 20:19:06 NSFVI 20:19:07 @^@^@^@^@^@Uªôéúÿÿÿ^@^@^@^@^@^@^@^@^@^@^@^@^@^@ 20:19:09 THIS IS INEXPLICABLE 20:19:26 cpressey, Not Safe For Vertical Integration? 20:19:35 elliott, ah there is a clear pattern to that! 20:19:42 Not Safe for Vorpal's Imagination 20:19:52 cpressey, oh, touche indeed 20:20:01 +-----------------------------------------------------------+ 20:20:01 | IMPORTANT: PLEASE DON'T MAKE ANY CHANGES TO THIS PROJECT! | 20:20:01 +-----------------------------------------------------------+ 20:20:11 ("The system saves every version of every project, so nothing is ever lost." Aww.) 20:20:21 elliott, where is that from? 20:20:33 OMeta/JS 20:20:59 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 Presumably, they mean "projection". 20:21:20 Or something. 20:21:29 so as read in is one project, then value analysis creates a new project 20:21:42 elliott, yes probably but the result is rather weird :P 20:22:14 elliott, the english is quite good elsewhere in general. Just a few small things that stands out as odd, like this 20:23:31 elliott, can't find any desc on ometa/js when googling, just interactive "try it out online" kind of things 20:23:44 so, what is it 20:23:44 Vorpal: that is what ometa/js is 20:23:47 js = javascript 20:23:52 elliott, and ometa? 20:23:56 http://www.tinlizzie.org/ometa/ 20:24:15 a meta-meta-parser-framework-meta object framework parser meta meta. 20:24:23 elliott, hm, any good? Or just yet another one? 20:24:36 Vorpal: Mu. 20:24:46 Vorpal: It's a Viewpoints Research Institute project. 20:24:47 elliott, well it said programming language on the page 20:24:50 which is what I meant 20:24:55 It did not. 20:25:02 "yet another programming language, or one that stands out?" 20:25:11 oh wait indeed it didn't 20:25:14 "OMeta is a new object-oriented language for pattern matching" 20:25:25 well, object oriented language fooled me 20:25:45 It's half-research, half lovely VPRI madness. 20:26:13 elliott, what else have they done? Trying to remember what they are famous for 20:26:40 Vorpal: Alan Kay works there, and you may have heard of COLA/idris/pepsi/... 20:26:50 *idst 20:26:57 pepsi certainly but not in this context I think 20:27:17 http://piumarta.com/software/cola/ has some information. 20:27:25 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 very... meta? 20:28:42 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 You know how in the IP (at least v4) RFC, it has a diagram of a packet? 20:29:02 They defined their packet structure by: 20:29:08 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 - Writing a parser for the ASCII diagrams 20:29:13 - Pasting the diagram in from the RFC 20:29:14 I mean, it parses fine 20:29:21 but uh 20:29:40 elliott, right, I heard about that 20:29:56 elliott, wasn't there some language with a name starting with E that supported that? 20:30:01 Vorpal: tl;dr user-as-programming, meta, etc. 20:30:06 E? Uhh... 20:30:10 Not E itself? 20:30:15 Vorpal: Epigram? 20:30:20 I don't think Epigram does that 20:30:20 elliott, ah yes! 20:30:21 *that. 20:30:23 hm 20:30:24 I may be wrong. 20:30:28 Trying to rack my brains... 20:30:28 might have confused it 20:30:31 elliott, might have *dreamt it* 20:30:32 It sort of rings a bell for that but... 20:30:47 I read something about visual structs and then about epigram quite recently 20:30:55 Vorpal: Whatever, anyway, tl;dr: VPRI is Alan Kay's organisation dedicated to being entirely too awesome on a regular basis. 20:31:31 elliott, http://en.wikipedia.org/wiki/Epigram_%28programming_language%29 seems to have quite fancy decls anyway 20:31:37 it might be that I confused it with 20:31:47 Vorpal: Yes, Epigram 1 is... queer. 20:31:58 (Epigram *2* we're not entirely sure is a language. Or has syntax.) 20:32:03 (Or can be executed.) 20:32:10 elliott, awesome! 20:32:10 (Or is even thinkable of.) 20:32:20 And we've been trying to figure it out since, what, 2005? 20:32:22 elliott, huh 20:32:29 that means it must intersect with feather 20:32:38 Vorpal: No, it's just extreme vapourware. 20:32:42 Stuff happens, but at an amazingly glacial rate. 20:32:43 question is now, if it is a subset, superset, or just boring intersection 20:32:52 elliott, you mean like feather? 20:32:56 And Connor keeps deciding to chuck things out and rewrite whole swathes of the language. 20:33:04 Especially when it turns out that whoops, that won't work. 20:33:16 elliott, second system syndrome? 20:34:10 Vorpal: It's academia. The whole thing is practically an exercise in third system syndrome. 20:34:40 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 Don't worry, it doesn't make any sense when you're awake either. 20:35:01 elliott, as long as you can produce papers on it at a steady rate 20:35:19 elliott, I'm not sure if that is good, bad or lacks emotional value 20:35:28 It's meta. 20:35:44 elliott, wow, I would never have guessed! ;P 20:35:54 Vorpal: Anyway, VPRI don't need to write papers, they have FUNDING! 20:36:05 http://www.viewpointsresearch.org/html/sponsors.htm 20:36:06 elliott, I meant for epigram mostly 20:36:13 SNF, Intel, Motorola, HP, Nokia. 20:36:21 And in the past: ARPA, Xerox PARC, Atari, Apple, Disney. 20:36:27 *NFS 20:36:28 *NSF 20:37:00 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 Vorpal: VPRI get... few "results" as such. 20:37:31 elliott, hm, then why do intel still fund them 20:37:37 Vorpal: They did Squeak Etoys and Croquet. 20:37:46 And they *do* write papers and stuff. 20:37:51 But, uh, :) 20:37:57 elliott, Croquet... what was that now again 20:38:16 familiar, bell is definitely ringing, but there is all echo around here 20:38:19 Vorpal: A not-very-good 3D Smalltalk environment thing and oh god Sgeo is going to pipe up. 20:38:21 so no clue from where 20:38:30 Vorpal: It's an open project; VPRI aren't responsible for most of the badness. :) 20:38:32 elliott, he is not in the channel atm :P 20:38:55 elliott, and what did etoys do... 20:39:24 Vorpal: http://www.linux.com/var/uploads/Image/articles/130014-1.png 20:39:39 Vorpal: VPRI's official goal is "lol, computers + learning". 20:39:43 But really, an awful lot of it is just awesome shit. 20:40:02 elliott, hah. That explains so much about the awful colour theme of squeak 20:40:18 Etoys is an addon. :p 20:40:28 elliott, well, even without that it is quite... colourful 20:40:29 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 olsner: Well *that* it does not do, considering I put an infinite loop in there. 20:41:13 olsner: How about I give you a .tgz? 20:41:14 Something is up. 20:41:19 after removing the infinite loop obviously :P 20:41:21 Vorpal: Well, Disney. 20:41:37 elliott, they are behind sqeuak?! 20:41:41 squeak* 20:41:51 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 The colour scheme is just because fuck you. :) 20:42:06 heh 20:42:29 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 It is pretty bad. 20:42:44 olsner: http://filebin.ca/eaxjwt/tempo.tar 20:42:55 elliott, what, we agree on a UI being bad? 20:43:01 Vorpal: Smalltalk-80 was much classier: http://tedkaehler.weather-dimensions.com/us/ted/resume/st80release-lic2.jpg 20:43:38 elliott, possibly only due to 1 bit per pixel from the look of that image... 20:43:56 Vorpal: You could easily add a few highlights and it'd still be nice. 20:43:59 Of colour, that is. 20:44:06 elliott, yes, it would even be nicer 20:44:15 http://www.abclinuxu.cz/images/clanky/krivanek/smalltalk-80-2.png 20:44:16 More. 20:44:18 elliott, like, make non-active window borders dark grey or something 20:44:26 http://www.abclinuxu.cz/images/clanky/krivanek/smalltalk-80-6.png 20:44:36 elliott, no colours? 20:44:42 Vorpal: It's the early 80s. 20:45:00 elliott, not common even with greyscale then 20:45:09 Vorpal: ? 20:45:26 Vorpal: http://www.cosc.canterbury.ac.nz/wolfgang.kreutzer/cosc205/images/stShot1.gif Early Squeak, basically Smalltalk 80 + colours. 20:45:26 elliott, that is b&w, not even 4 bit greyscale or such 20:45:31 Admittedly not very nice colours. 20:45:44 Vorpal: The Macintosh was 1-bit in 84. 20:45:55 elliott, that actually looks better than modern squeak... 20:45:55 http://www.cosc.canterbury.ac.nz/wolfgang.kreutzer/cosc205/images/stShot12.gif FUCKING OW MY EYES 20:46:16 olsner: So have you fixed it yet?!?!?!?/1 20:46:21 elliott, I hope this can be blamed on gamma or something 20:46:31 Vorpal: IT CAN'T AIEEEEEE 20:46:35 elliott, ouch 20:46:38 elliott: nope, but I seem to have discovered how to connect gdb to bochs 20:46:51 olsner, sounds like quite a feat 20:46:59 Vorpal: bochs is designed to do that :P 20:47:12 elliott: doesn't make it less of a feat :P 20:47:15 elliott, I thought it had a built in debugger? 20:47:17 and well 20:47:22 everything with bochs is a feat 20:47:26 Well, yeah. 20:47:42 Every time I think "Oh, I should use bochs" I start crying. 20:48:05 " 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 *"It 20:48:12 I can't imagine any game wanting to run on a computer THAT slow! 20:48:13 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 elliott, for recording perfect frame timing? 20:49:41 elliott, because you no longer need a software that allows you to go back to previous frame if you screwed up! 20:50:14 Ooh, you could use bochs for tool-assisted speedruns. 20:50:21 You get a whole hour to decide what input to give each frame. 20:50:23 elliott, yes what I said basically 20:50:34 Right. 20:50:37 elliott, well, lets be fair. 45 minutes max on a modern computer 20:51:15 probably could be as little as 40 minutes, but I doubt less than that 20:54:43 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 many ways to graphically illustrate http://en.wikipedia.org/wiki/Affirming_a_disjunct (first result on clicking random article) 20:54:46 elliott, ^ 20:55:08 and? 20:55:15 VPRI are focused primarily on children learning 20:55:29 elliott, well, wikipedia isn't just that though, so bad example maybe 20:55:54 Sigh: 20:55:55 "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 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 Comment on the Loper OS blog. 20:56:04 Because as we all know 20:56:10 (1) GNOME is incredibly lightweight and speedy, and 20:56:15 (2) Smalltalk was impossibly slow. 20:56:22 XD 20:56:27 elliott, what idiot wrote that? 20:56:43 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 though, gnome is not slow enough to cause any annoyance at least. 20:56:53 GNOME has got better :) 20:57:01 But it's certainly not super-C-speedy, that's for sure. 20:57:02 elliott, well, I used KDE back when GNOME sucked 20:57:13 elliott, of course, but as long as it is fast enough, who cares 20:57:25 Well, see http://www.loper-os.org/?p=300, the post on which it is a comment :) 20:57:49 GNOME is not quite fast enough for me to like it. It is okay though. 20:57:51 KDE 4 is slower. 20:58:08 elliott, metacity or compiz? 20:58:17 elliott, I found metacity far more responsive 20:58:31 I have used both. 20:58:36 hm 20:58:49 Anyway, existing DEs have far greater problems than speed. 20:59:01 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 "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 If you position yourself at the beginning of the line and hit the left arrow, you will not budge. 20:59:29 If you position yourself at the end of the line and hit the right arrow, you will keep moving right 20:59:29 This is how IntelliJ IDEA works by default." 20:59:36 * elliott puts IntelliJ IDEA on his list of "weird things". 20:59:46 oh no 20:59:53 cpressey: ? 20:59:59 i've heard of that thing 21:00:09 elliott, actually that sounds almost like kate in block mode 21:00:16 elliott, apart from the arrow at start of line 21:00:51 elliott, it is useful to move and copy rectangular blocks rather than every letter between two points 21:00:56 and such things 21:01:11 elliott, I use it every now and then, try it out if you never used it 21:01:34 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 With TextMate it's just alt+drag. 21:01:59 elliott, it's a mode because it interacts with copy and paste too 21:02:03 even from other apps 21:02:04 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 elliott, in that, what pasting a multi-line thing does changes with this mode 21:02:33 cpressey: Also, x.sort. 21:02:33 back to your regularly scheduled IntelliJ IDEA wtf'ing 21:02:38 elliott: yes totally 21:02:38 print x.sort 21:02:39 print x 21:02:41 Yay! 21:02:43 It's so convenient! 21:02:52 cpressey, __upper__! 21:02:56 (no reason) 21:02:59 Vorpal: Oh, and the nicest thing about it in TextMate: 21:03:00 (just more... python) 21:03:10 Vorpal: If you alt-drag vertically across a certain bit and type, it *adds to all those lines*. 21:03:17 how about every method you could define has a __methodname__ counterpart 21:03:35 Vorpal: 21:03:40 b|lah 21:03:40 q|uux 21:03:40 a|sdf 21:03:40 a|brt 21:03:40 -------------- 21:03:41 bX|lah 21:03:42 qX|uux 21:03:44 aX|sdf 21:03:46 aX|brt 21:03:48 After typing "X". 21:03:51 This is *insanely* useful. 21:04:05 elliott, inded 21:04:07 indeed* 21:04:11 Does kate do that? 21:04:18 elliott, uh, let me try 21:05:09 elliott, alas it does something else. Anyway it is the two-mode thingy 21:05:15 Bah! 21:05:26 elliott, still the features somewhat overlap, none has all the features of the other one 21:05:33 elliott, I assume leaden will do this? 21:05:46 Yes. Or if it doesn't, amend will :) 21:05:53 elliott, amend? 21:06:04 which one was that 21:06:08 sounds familiar 21:06:13 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 So basically leaden is amend before it turns into a gigantic beast worthy of emacs complexity :) 21:08:24 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 BAH 21:10:56 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 then you would get a confirmation form 11t(53)h14 in return to sign and send back 21:20:26 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 olsner: the values are wrong? 21:20:55 I worked them out using cpressey's bootloader code. 21:21:12 because if I replace that with mov cx,KERNEL_START, it boots and halts at 0x8001 21:21:17 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 olsner: don't you mean mov cl? 21:21:52 But, uh, wow, you're right. 21:21:57 well, same thing, except it doesn't rely on ch already being 0 from before 21:22:17 olsner: aren't all the registers defined to be zero on boot? apart from dl 21:22:43 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 night → 21:23:10 olsner: i'm planning to do the a20 line properly, so i'm space-optimising to make room for that :) 21:24:55 you could skip it and do A20 in the second stage/the kernel :P 21:25:12 olsner: NO IPOSSIBLE 21:25:18 it must be done in the boot block! 21:25:31 i refuse to give reasons for this 21:25:37 cpressey sure hates me 21:25:48 olsner: but i want my kernel to be in a nice environment when i get to it! 21:25:51 besides i have space :D 21:26:17 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 olsner: So, basically, they can be about two, three hundred max, combined. 21:26:32 elliott: i feel half-responsible, since i had a similar idea (go into unreal mode in the bootblock) 21:26:44 cpressey: that was zzo38's idea :) 21:27:02 elliott: he doesn't actually do it in the bootblock - that was my misrecollection 21:27:09 ah 21:27:20 hmm, I think you can change them later 21:27:25 cpressey: well, unreal mode = protected mode + more code :) 21:27:31 prit' much yeah 21:27:47 olsner: you can relocate them? 21:27:47 hmm 21:27:50 seems a bit pointless though 21:27:51 ehh 21:27:51 but in the GDT case, you really don't need more than one data and one code segment 21:28:04 olsner: unless i start doing crazy shit :) 21:29:34 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 yeah, you should be checking al after int 13h, that contains the number of sectors read 21:31:04 olsner: erm, the only reason it'd load less than what i tell it to is if something went wrong, surely 21:31:13 and if something went wrong i'm not interested :) 21:31:40 olsner: presumably carry is set if al < the input al? 21:31:45 in which case, i retry anyway 21:31:48 maybe :) 21:33:02 olsner: but hey, 8.5k is good enough for now :) 21:33:05 Welp, there goes that afternoon. 21:33:13 that's over 17 times this bootsector! 21:34:38 olsner: remind me to get around to doing a higher-half kernel sometime :P 21:34:54 say, I don't need CODE_SEGMENT and DATA_SEGMENT defined inside the kernel proper, do I? 21:34:58 since they're cs and ds anyway 21:35:49 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 yeah 21:36:20 in any case, you know them since you set up the gdt, those are just constants anyway 21:37:23 hmm 21:37:30 does blinking exist at the vga memory level? 21:37:31 I guess not 21:37:49 it's just that qemu displays my A20 error as solid black on solid white 21:38:09 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 (grey being the default colour, the "greyish white") 21:38:26 I think there's magic involved that determines whether it's a high-intensity or blinking bit, or something like that 21:38:27 and, well, it's 0xF0 the attribute 21:38:32 right 21:38:33 oh well 21:38:33 :) 21:38:47 solution: don't have a computer that doesn't have the A20 bios routines 21:38:56 or, just wait until I put actual A20 code in there 21:39:40 Can someone explain why x86 is so damn register-starved? 21:40:19 -!- augur has quit (Remote host closed the connection). 21:50:02 One of the VGA registers controls whether the high bit of the background color does "high intensity" or "blink". 21:54:58 fizzie: Does it have a defined default? 21:56:42 "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 So much for GNOME Shell. 21:58:46 ooh, http://wiki.osdev.org/Entering_Long_Mode_Directly 21:59:03 olsner: yeah, it's 21:59:05 olsner: unreliable. 21:59:35 unreliable? 21:59:40 olsner: It's not documented. 21:59:49 The only documented way to enter long mode is via protected mode. 21:59:58 I'd rather go through the hassle than risk things. :) 22:00:17 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 fizzie: Woo, that works. Thanks. 22:01:25 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 olsner: yaeh 22:01:35 *yeah 22:01:45 olsner: I'm not sure whether I want long mode or not :) 22:01:53 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 you can use long mode as a simplified protected mode that accidentally also supports some 64-bit stuff 22:03:02 olsner: how is it simplified? 22:03:33 some things like segmentation disappeared in long mode (however much simpler that makes it) 22:03:59 -!- Phantom_Hoover has joined. 22:04:15 but other than that, I guess not simpler at all just different 22:04:20 olsner: You still have paging though. 22:04:36 Or whatever. 22:05:00 -!- MigoMipo_ has quit (Ping timeout: 276 seconds). 22:05:55 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 My boot sector is now 214 bytes long. 22:06:28 elliott: TOO MUCH 22:06:34 So I get to fill the remaining 296 bytes! 22:06:50 olsner: hmm, doesn't the idt tend to get kinda big? 22:06:56 Or am I misremembering? 22:08:17 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 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 Hey... How do you get the location of the GDT and IDT? 22:09:47 Do I have to store them somewhere? 22:10:05 have you already forgot where you put them? :) 22:10:30 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 well, you can make that detail part of your boot loader|kernel interface 22:11:13 olsner: there is no such interface :) 22:12:03 hmm 22:12:05 idtr:dw 0 22:12:05 dd 0 22:12:08 is this "limit 0, offset 0"? 22:12:14 great -- so i have no interrupt table at all :) 22:12:23 yep, the limit is the first value (the 16-bit one) 22:12:34 olsner: starting to think that maybe, just *maybe*, this won't fit inside the boot sector 22:12:38 olsner: especially not if I do A20 the proper way 22:12:57 elliott, new version of Golly out, FWIW. 22:13:05 Phantom_Hoover: kay 22:15:04 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 elliott: SGDT and SIDT should help you. 22:19:34 They're the inverse operation of LGDT/LIDT. 22:19:39 Phantom_Hoover: TTT? 22:19:41 fizzie: Ah, thanks. 22:20:06 elliott, a pattern on a tubular universe with unknown-ish long-term behaviour. 22:20:19 Phantom_Hoover: Link? 22:20:23 fizzie: Wait, I could always just point the GDT and the IDT somewhere else in memory, right? 22:20:33 fizzie: And put stuff there in the bootloader, and then expand on it later inside my actual OS code? 22:20:59 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 fizzie: Well, OSes have to write to such a location anyway, so. 22:25:02 elliott, look for "Titanic Toroidal Traveler" at http://www.argentum.freeserve.co.uk/lex_t.htm 22:25:40 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 Phantom_Hoover: so just that, repeated forever horizontally? 22:26:18 you had me at "A20 is routed through the keyboard controller" 22:26:20 elliott, yeah. 22:26:29 cpressey: you didn't know that? :) 22:26:33 Phantom_Hoover: heh 22:26:44 elliott: not until yesterday 22:26:47 I don't think the long-term behaviour is nearly as enigmatic as they claim, FWIW. 22:27:02 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 cpressey: there is a "fast a20" that skips talking to the keyboard controller, and bios stuff for it 22:27:24 cpressey: but the proper way involves talking machine code to the keyboard port. 22:27:42 cpressey: 8042 machine code, to be precise. 22:27:54 (Well, the first interrupt could be just "int 3" or anything, it doesn't need to be a fault.) 22:28:15 fizzie: Wouldn't that... reboot the computer? 22:28:49 elliott: Not if you patch the place where the reset ends up in; that's in real memory. 22:29:19 fizzie: lovely 22:30:02 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 Hmm, Golly allows the projective plane as a topology. 22:33:11 Yep, it breaks down. 22:33:42 olsner: how goes your long mode hackery? :-) 22:33:52 I think I will go into long mode, just for simplicity. 22:34:04 64-bit on a floppy 22:34:05 lovely 22:34:27 elliott: But what about hardware task management! It's mostly gone in long mode. 22:34:35 elliott: just leisurely reading the system programming manual 22:34:41 Well, that was fun. It seems that the color setting on my monitor was hella-weird. 22:34:46 fizzie: Oh dear, I will shoot myself. 22:34:55 olsner: "leisurely" 22:35:03 Task-State Segments and whatnot. 22:35:08 elliott: spelling? :) 22:35:37 Oh, and more importantly, you can't go to virtual-8086 mode from long mode. 22:36:34 always wondered about that - so you use virtualization to run real-mode code or something? 22:36:38 -!- augur has joined. 22:37:40 fizzie: "hardware task management"? 22:37:44 olsner: Maybe you just don't run it. 22:37:56 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 You know, I don't think I want to know. 22:38:58 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 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 As far as I know, not very many operating systems actually use it. 22:40:11 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 http://i55.tinypic.com/261dnav.gif seems to be their current plan for implementing spherical topologies. 22:41:03 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 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 fizzie: that makes sense 22:43:45 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 Phantom_Hoover: that's hilarious 22:44:17 "This processor mode behaves in every way like real mode, with the exception that paging is applied." 22:44:32 cpressey, OK, it takes a certain type of mind to find that amusing. 22:44:37 elliott: spelling? :) 22:44:39 no, just 22:44:45 reading the x86 manual leisurely :D 22:44:57 olsner: so there IS a real boot loader out there that goes into unreal mode! cool. 22:45:03 cpressey: yep! 22:45:29 Phantom_Hoover: I'm not listening to you because you are just a mirror image of the OTHER Phantom_Hoover. 22:45:42 and OS/2 is one of the few operating systems that use more than two of x86's privilege levels ("rings") 22:46:08 usually you have kernel mode and user mode, but OS/2 has two or three levels of kernel mode 22:46:17 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 Real that unreals to load the real. 22:47:35 olsner: hmm, if i go into real mode, the gdt i already have will be the only one that works, right? 22:47:38 so i only have to relocate the idt 22:48:26 hmm? you're going into real mode now? 22:48:29 *into long mode 22:48:34 olsner: or, wait, i'd actually want two more entries, wouldn't i? for user mode 22:48:40 you'll load a new long-mode gdt 22:48:58 olsner: the mind boggles. 22:49:09 olsner: you know what, i'll wait for you to write long mode stuff and then rip that off :) 22:49:14 ooor, would you? I don't know if long mode even has a gdt, it doesn't have segmentation anyway 22:49:34 olsner: it uses a flat gdt 22:49:35 i think 22:49:39 requires, even 22:49:40 yes, long mode has a gdt and it has a different format 22:49:42 olsner: It does have a GDT, but the descriptors are different. 22:49:44 Right. 22:50:08 oh joy :) 22:50:27 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 http://i55.tinypic.com/261dnav.gif seems to be their current plan for implementing spherical topologies. 22:50:49 what 22:50:50 cpressey, for the spherical topology thing? 22:51:19 It's topology, so it makes no difference the precise shape. 22:51:34 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 But it *is* impossible to fit any planar neighbourhood onto a sphere. 22:51:52 olsner: copying you is so much easier though :) 22:52:03 Or a projective plane, but that's stopped them even less. 22:52:13 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 elliott, I object. 22:52:34 Phantom_Hoover: oerjan proved it once :) 22:52:56 Cubes are, after all, a topologically spherical object covered with squares 22:53:04 elliott: but then you won't *learn*! 22:53:05 You can't have a Moore neighbourhood, though. 22:53:17 olsner: i will, by copying your code carefully :) 22:53:24 Phantom_Hoover: well, right 22:53:31 Phantom_Hoover: can't be equally-sized squares though :) 22:53:45 Uhhh no it's not topology exactly. 22:53:53 elliott, have you looked at a cube lately. 22:54:14 cpressey, Euler characteristics, which are what oerjan's proof used, are a topological thing. 22:54:18 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 You do need a 64-bit IDT, because the descriptors are of completely different size and so on. 22:55:40 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 fizzie: Can you go into long mode with interrupts disabled? 22:56:00 Phantom_Hoover: If this can be done with "just" topology then... I don't know why they are trying 22:56:18 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 doing this with interrupts enabled seems like a very dubious idea 22:56:25 cpressey, because they don't know topology. 22:56:39 Isn't there only one way you can have a GDT set up in long mode? 22:56:46 I'm trying to tell them why it's impossible on the mailing list. 22:57:06 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 link to their mailing list? 22:57:40 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 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 This AMD64 example enables protected mode, but uses 16-bit protected mode code to go to long mode. 22:58:42 right, so it just stays in the old code segment after setting protect enable? 22:58:48 16-bit protected mode?! 22:59:22 olsner: Well, sort-of. It does a far jump, but into the "same" 16-bit code segment. 22:59:43 cpressey, well, a 1,1 torus is legitimate enough, for reasons I'm unsure of. 23:00:46 I suppose there's also a tiling-based argument somewhere... 23:01:03 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 also, what's the difference between this new 16-bit code segment and the one inherited from real mode? 23:02:15 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 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:18 I LIKE HOW OLSNER IS GOING TO DO THIS ALL FOR ME 23:04:24 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 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 (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 fizzie explains it, I write the code, elliott uses it :D 23:06:34 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 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 cpressey: NO DUDE LONG MODE 23:06:55 I"M NOT READY FOR THAT 23:06:55 it's like protected mode but you have an aneurysm 23:07:03 cpressey: LET ME SPELL IT OUT FOR YOU 23:07:06 cpressey: EIGHT MORE FUCKING REGISTERS 23:07:10 NO STUPID SEGMENTATION BULLSHIT 23:07:14 Eight more registers! EIGHT! 23:07:20 AND TWICE THE BITS PER REGISTER!!! 23:07:26 That's 15 general-purpose 64-bit registers! 23:07:31 AND ANOTHER STACK!!!!! 23:07:31 Suddenly X86 ISN'T SO SHITTY ANYMORE 23:07:39 AND MY AXE 23:07:56 it's the glazing on the turd 23:08:18 I wonder how many systems there are that actually support long mode, but not "fast A20" 23:08:26 are manufacturers really so weird? 23:08:35 cpressey: Just use the BIOS to do it :P 23:08:44 cpressey: You can disable Fast A20 in the BIOS sometimes. 23:08:46 Inexplicably. 23:08:49 i fully plan to, that's what the BIOS is *for* 23:08:52 Sometimes it's disabled by default. 23:09:56 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 and this TSS thing is what you use to leave kernel mode and run in user mode for a while? 23:13:23 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 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 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 they should have a segment retardation fault or something for it instead :) 23:17:05 So how does all this fit in with a higher half kernel? 23:17:07 Just askin' 23:17:12 :P 23:17:16 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 elliott: what does "higher half" mean? 23:18:36 proximal end? 23:18:49 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 olsner: http://wiki.osdev.org/Higher_Half_Kernel 23:19:01 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 igher addresses for the applications. 23:19:22 http://wiki.osdev.org/Higher_Half_Kernel 23:19:27 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 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 olsner: I seem to recall reading something about entering long mode while using that insane GDT trick. 23:19:52 http://wiki.osdev.org/Higher_Half_With_GDT 23:20:27 That doesn't sound like something that would work in long mode. 23:20:38 Given that GDT bases are ignored. 23:21:13 fizzie: You do that and *then* do it properly with paging in long mode. 23:21:24 Aw hell, I have no idea. I just parrot the wiki. 23:21:39 that page instantly makes me hate OS programming for some reason 23:21:42 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 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 fizzie: Right. 23:22:14 fizzie: I realised that a second ago :) 23:22:31 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 obviously you'd generate the page tables for the regions you need access to during startup 23:23:34 didn't look into the details, but the direct-to-long-mode page had something like that 23:24:14 i understand, now, why people like unreal mode 23:24:21 Paging in long mode is so simple, too: http://zem.fi/~fis/paging.png 23:25:11 Page frames, page tables, page directory tables, page directory pointer tables and finally the "page map level 4 table" on top. 23:26:11 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 what, of course you must have proper kernel/user mode, memory protection and task switching 23:27:07 olsner: WHY 23:27:21 you just do! 23:27:23 To SAVE you from YOURSELF, of course. 23:27:30 Or BADLY BEHAVED CODE, anyway. 23:27:37 Doesn't matter in a lisp OS at least :) 23:27:44 In fact running everything in kernel mode is beneficial there. 23:28:14 oh, you're building a lisp os? :) 23:28:22 olsner: well -- maybe! :p 23:28:28 I'd like to get the freaking boot sector written first. 23:29:18 There's only ~1.59361 * 10^1228 boot sectors, anyway. 23:29:22 I just have to pick one! 23:32:13 -!- Phantom_Hoover has quit (Ping timeout: 245 seconds). 23:37:08 I once designed a protected memory system for the Z80 (in hardware) 23:38:21 A clock would periodically reset the processor and switch the lower half of memory to a new bank 23:39:15 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 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 cpressey: wow. 23:40:05 cpressey: all that for protected memory :) 23:40:23 -!- MigoMipo has joined. 23:41:12 elliott: yes. also considering there is an "enhanced Z80" out there somewhere which basically does all this in a chip :) 23:41:57 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 wtf, my boot loader/os project has a CVS dir that points to a cvsroot with a windows path 23:43:58 it is from 2002 though, I was younger then 23:44:47 `addquote it is from 2002 though, I was younger then 23:45:04 olsner: wait i just adapted code developed on windows and cvs? 23:45:06 i feel wrong 23:45:45 no, it can never have been developed on windows, the build script is very much unix 23:45:47 No output. 23:46:06 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 Cat + melodica = insane cat 23:58:44 Gregor: approve# 23:58:46 s/#$//