←2009-03-12 2009-03-13 2009-03-14→ ↑2009 ↑all
00:01:00 <Deewiant> Colemak is supposedly more optimal
00:01:32 <oerjan> don't be polemic, just use colemak
00:02:10 <AnMaster> is there a colemak for Swedish?
00:02:20 <AnMaster> I type a lot in Swedish so I need åäö
00:02:21 <Deewiant> There is just one colemak
00:02:23 <Deewiant> äåö
00:02:27 <AnMaster> Deewiant, there is svorak
00:02:33 <Deewiant> äåãøúüöáñéíóæœ
00:02:44 <AnMaster> Deewiant, altgr isn't valid :P
00:02:45 <Deewiant> AnMaster: Yes, I know.
00:02:58 <ehird> i use qwerty
00:03:01 <ehird> *crickets chirp*
00:03:02 <Deewiant> I'm fine with altgr; you can always configure it yourself if you want
00:04:32 <AnMaster> http://colemak.com/FAQ#What.27s_wrong_with_the_Dvorak_layout.3F "# Even though the design principles are sound, the implementation isn't optimal because it was designed without the aid of computers. " <-- uh what?
00:04:42 <oerjan> qwerty, the favorite layout of crickets
00:04:52 <Deewiant> "Because" doesn't make much sense there :-P
00:04:55 <ehird> I basically have a muscle memory of qwerty :(
00:05:02 <AnMaster> ehird, same here
00:05:16 <ehird> Unlearning and learning something else would take up to a year, probably
00:05:18 <Deewiant> I can switch to qwerty within minutes
00:05:18 <AnMaster> I grew up with qwerty after all. Hard to unlearn it now
00:05:23 <AnMaster> ehird, probably
00:05:24 <ehird> and I give up after a day or two because I type so much
00:05:27 <lament> AnMaster: that makes sense
00:05:30 <Deewiant> Or rather, within seconds, but I'm back in comfort within minutes
00:05:31 <AnMaster> oh yes I type lots too
00:05:36 <AnMaster> lament, which line?
00:05:44 <Deewiant> Took me about a month or two to get fully comfortable with colemak
00:05:49 <lament> AnMaster: if you want to design an optimal layout, you would need statistical analysis of the text you type
00:06:00 <lament> hard to do that without a computer
00:06:02 <AnMaster> lament, ok, they could have said that.
00:06:05 <lament> (and without knowing what kind of text you type)
00:06:08 <Deewiant> lament: Hard but that doesn't imply that it's suboptimal
00:06:32 <Deewiant> I maintain that "suboptimal because no computers were used" doesn't hold
00:06:44 <AnMaster> lament, because any random designer could do a nifty layout in photoshop, using a computer(!), and it probably wouldn't be any good
00:07:13 <lament> i didn't write that FAQ, don't complain to me
00:07:21 <AnMaster> so saying something about computer aided statistical analysis would have been better
00:07:23 <lament> dvorak is good enough for me but it's clearly not optimal
00:07:58 <lament> eg "ls" is clearly bad, "i" and "u" should probably be switched...
00:08:14 <AnMaster> mhm
00:08:33 <ehird> qwerty is great because it's _always_ suboptimal
00:08:36 <AnMaster> lament, you could do that in some file in /usr/share/keymaps/ iirc
00:08:42 <Deewiant> What's amusing is that http://en.wikipedia.org/wiki/Blickensderfer_typewriter had the same letters as Colemak on the home row, back in 1893
00:08:45 <AnMaster> maybe somewhere else for X
00:08:47 <AnMaster> not sure
00:08:52 <Deewiant> Different order though
00:08:54 <lament> I'm fine with Dvorak.
00:09:14 <Deewiant> But I think that also goes a bit against Colemak's point about computer-aided statistical analysis
00:09:37 <lament> Deewiant: huh?
00:09:37 <Deewiant> I mean, English has been the same for a long time, you don't need a computer to tell you that 'e' is the most common vowel and so on
00:09:43 <AnMaster> Deewiant, how emacs compatible is colmak?
00:09:50 <Deewiant> AnMaster: Don't know, don't care.
00:09:54 <AnMaster> you use vi?
00:09:57 <lament> Deewiant: the relative frequency of letters is known.
00:10:03 <AnMaster> then how vi(m) compatible is it?
00:10:04 <Deewiant> lament: Yep.
00:10:11 <lament> Deewiant: that's not enough to design an optimal layout.
00:10:14 <AnMaster> hjkl are moved for example
00:10:22 <Deewiant> AnMaster: Not very, I remap the basic movement keys
00:10:34 <AnMaster> Deewiant, mhm
00:10:35 <ehird> I wish there was something like vi that unsucked
00:10:47 <AnMaster> ehird, it's called µeamcs
00:10:50 <Deewiant> lament: True, but I just think they're stating it a bit too strongly
00:10:52 <AnMaster> µemacs*
00:10:54 <ehird> that is not like vi AnMaster
00:11:02 <AnMaster> ehird, well depends on what you define "like" as
00:11:05 <AnMaster> it is an editor
00:11:06 <Deewiant> AnMaster: I don't remap much though, I like the mnemonics
00:11:11 <AnMaster> and not a potato
00:11:18 <Deewiant> There's a "colemak.vim" which changes a crapload of stuff
00:11:23 <AnMaster> I argue vim is more like emacs than vim is like a potato~
00:11:31 <Deewiant> But it's more a customization of the whole of vim than just a remapping of the keys
00:11:34 <Deewiant> So I don't use ti
00:11:35 <Deewiant> s/ti/it/
00:11:36 <lament> Deewiant: please complain to them, not to me.
00:11:52 <Deewiant> lament: I wasn't complaining to you or to anybody, I just made a statement
00:12:28 <oerjan> what the heck _is_ this ~ thing
00:12:40 <Deewiant> I can't remember whose idea it was
00:12:51 <Deewiant> A sarcasm indicator, basically
00:13:02 <ehird> hmm, is there a standard threading api lower level than pthreads?
00:13:06 <oerjan> what a wonderful idea~
00:13:43 <AnMaster> oerjan, it was ehird's idea
00:13:44 <AnMaster> iirc
00:13:55 <oerjan> ehird: you're so smart~
00:13:56 <ehird> was t?
00:13:57 <ehird> *it
00:14:13 <AnMaster> ehird, either that or you read it somewhere and mentioned it in this channel
00:14:16 <AnMaster> not sure
00:14:29 <AnMaster> I could be wrong, it was some time ago after all
00:14:41 <oerjan> AnMaster: you wrong? never~
00:14:52 <AnMaster> oerjan, memory isn't as good as when you were young
00:14:57 <AnMaster> you should know how it is ;P
00:15:19 <oerjan> sorry, i don't remember how good my memory was when i was young~
00:15:30 <AnMaster> hah~~
00:16:35 <Deewiant> ehird: clone(2)
00:16:45 <ehird> no manual entry for clone
00:16:45 <ehird> :P
00:17:02 <Deewiant> Well yeah, if you want to be portable, no :-P
00:17:07 <Deewiant> Beats me about OSX
00:17:26 <Deewiant> I just looked at the source of glibc and that's what it uses
00:17:44 <ehird> OS X would be whatever BSD uses
00:17:45 <oerjan> ehird: well you could just copy some other manpage to it
00:17:51 <ehird> groan
00:18:14 <AnMaster> oerjan, :D
00:18:31 <oerjan> and here i thought that one was too subtle...
00:18:36 <AnMaster> ehird, anyway no standard one lower than pthreads no
00:18:45 <AnMaster> it is "implementation defined"
00:18:47 <Deewiant> ehird: __clone?
00:18:55 <ehird> pthreads is awful though
00:18:58 <AnMaster> Deewiant, iirc clone() is linux specific
00:19:04 <AnMaster> it is a linux system call...
00:19:22 <AnMaster> ehird, fork() shm_*
00:19:33 <ehird> fork isn't threas
00:19:33 <ehird> ds
00:19:50 <AnMaster> ehird, well depends. On linux fork() is clone() and phtreads is clone()
00:19:54 <AnMaster> just different parameters
00:20:21 <ehird> It specifically needs to be a thread because i'm doing it for a gc
00:20:28 <ehird> so the gc has to fuck with the heap
00:20:31 <AnMaster> well linux also has a system call fork(), for compatibility with older code
00:20:39 <AnMaster> but nowdays clone() is used
00:20:48 <AnMaster> and the syscall fork() maps to the same code
00:21:41 <ehird> GregorR: egobfc2m doesn't work on non-linux :<
00:22:23 <Deewiant> ehird: Just look at your sys/syscall.h and see what's there :-P
00:22:33 <ehird> Deewiant: I need portable :P
00:22:43 <Deewiant> ehird: Then why ask for lowest level? :-P
00:22:49 <ehird> I didn't say lowest
00:22:51 <ehird> I said lower than pthreads
00:23:03 <Deewiant> Why go lower instead of higher, in general
00:23:08 <Deewiant> If you're aiming for portability
00:23:08 <ehird> pthreads sucks :D
00:23:11 <Deewiant> >_<
00:23:12 <AnMaster> ehird, pthreads is the lowest portable
00:23:13 <fizzie> pthreads is about as low as you portably get, is my guess.
00:23:16 <ehird> darn
00:23:18 <Deewiant> ehird: Then use a higher level library?
00:23:21 <Deewiant> Which doesn't suck
00:23:24 <ehird> Bah.
00:23:30 <AnMaster> wait
00:23:52 <AnMaster> ehird, nick confusion? You going low level and me and others suggesting higher level?
00:23:54 <AnMaster> HUH!
00:24:11 <AnMaster> something isn't right here
00:24:28 <ehird> Greenity.
00:24:41 <oerjan> purplity
00:24:44 <fizzie> Have to admit I've rarely seen people complain pthreads isn't low-level enough.
00:25:18 <AnMaster> fizzie, indeed. I have seen people saying it is too low level though
00:25:22 <AnMaster> and I agree
00:25:25 <AnMaster> I prefer higher level
00:27:00 <fizzie> Nighty-night, anyway.
00:29:03 <ehird> SCHRODINGER'S SCHRODINGER
00:31:19 <oerjan> what?
00:31:32 <oerjan> yo schrodinger?
00:32:39 <ehird> yep
00:32:46 <ehird> I herd u liek quantum physicists
00:33:28 <ehird> Say how do you tell vim not to give you the splash on startup
00:33:28 <Slereah> If you do, I am single
00:33:49 <ehird> because you know what
00:33:51 <ehird> FUCK UGANDA
00:33:54 <Deewiant> Hmm, can write(2) to stdout/stderr be buffered, so that you need to fsync it?
00:34:03 <ehird> Deewiant: for >file, maybe?
00:34:08 <oerjan> i think you need a secret code that you only get if you actually donate~
00:34:28 <Deewiant> ehird: What about console?
00:34:35 <ehird> Deewiant: dunno
00:34:41 <orelo> Yo dog, I heard you like Schrodinger's boxes, so I may have put a Schrodinger's box inside a Schrodinger's box so you can be uncertain of whether you're uncertain or not.
00:34:45 <Deewiant> I guess it could be, in theory
00:34:51 <orelo> I'm not the kind of guy who says "dawg", you see.
00:35:19 <Deewiant> I also see that you don't say "Schrödinger"
00:35:31 <Deewiant> What did umlauts ever do to you?
00:35:52 <oerjan> an umlaut killed my granduncle!
00:36:00 <Deewiant> Oh, dear!
00:37:10 <oerjan> orelo: orely?
00:37:37 <ehird> ö®ëll¥¿
00:38:03 <orelo> Schrödinger.
00:39:54 * orelo watches irssi's status line scroll up into backscroll.
00:41:37 <oerjan> that sounds borken
00:42:00 <orelo> It is relatively borken, yes.
00:42:57 <orelo> I'll take a screenshot in a while.
00:47:27 <orelo> http://i39.tinypic.com/20r2ob8.png
00:48:13 <ehird> Hmm.
00:48:24 <ehird> Vim cannot address the space one after a lines last character (before the newline).
00:48:27 <ehird> Why is this? Deewiant?
00:49:10 <orelo> Because you're not in insert mode?
00:49:45 <ehird> Correct.
00:49:46 <ehird> And?
00:49:51 <ehird> Why can I not address that position?
00:50:09 <orelo> Because you don't want to.
00:50:44 <ehird> Having my thin-line-style cursor end at the seemingly-arbitrary second-last character is jarring.
00:51:15 <oerjan> orelo: what happens if you press ^L ?
00:51:32 <oerjan> hm i guess it's a bit late now
00:53:45 <oerjan> ehird: hm i have a thick cursor when not in insert mode, i suppose that fits vim better
00:53:59 <ehird> hmm, can you do a multiline string in a vimrc?
00:55:07 * orelo tries
00:55:40 <orelo> Hey, it fixes it.
00:56:10 <oerjan> so just a display bug
00:56:18 <ehird> :\
00:56:38 <orelo> It's kind of a Unicode bug.
00:56:54 <orelo> I think my terminal settings are lying when they say UTF-8.
00:57:19 <orelo> Ä
00:58:02 <orelo> That character is supposed to be a capital A with an umlaut or diaeresis; instead, when I type it, it appears to produce a line break and move right.
00:58:08 <oerjan> i note there were _two_ unicode lines before that bug in the screenshot
00:58:20 <orelo> In the chat window, it displays as inverse D.
00:58:25 <oerjan> yeah it's an A with umlaut here
00:59:17 <oerjan> oh only one of the lines were yours
00:59:29 <oerjan> so it's when you are typing
01:00:36 <comex> ehird: how do you get a thin-line cursor in vim?
01:00:43 <comex> more importantly, why would you want one
01:01:00 <orelo> I conclude that irssi is not sending UTF-8 to my terminal.
01:01:04 <ehird> set guicursor=n-v-c:block-Cursor/lCursor,ve:ver1-Cursor,o:hor25-Cursor,i-ci:ver1-Cursor/lCursor,r-cr:hor1-Cursor/lCursor,sm:ver1-Cursor
01:01:16 <ehird> that will give you block cursor on normal mode, thin cursor on everything else but r and c
01:01:31 <ehird> I'd like to make the cursor gray
01:01:33 <ehird> so it stands out less
01:01:47 <comex> lol, gui
01:02:20 <ehird> you use gvim last I checked
01:02:34 <comex> no, I don't
01:02:43 <ehird> You certainly tried it.
01:03:00 <comex> that's correct, I opened gvim once to try it. :D
01:03:10 <comex> and I just opened it again to see what you're talking about.
01:03:43 <comex> you have a line ending with a space?
01:03:46 <comex> and you can't address it?
01:04:02 <orelo> To be precise, irssi is not sending UTF-8 to screen or screen is not sending UTF-8 to sshd or sshd is not sending UTF-8 to ssh or ssh is not sending UTF-8 to my terminal.
01:04:42 <comex> oh, you just want to put the block after the last character
01:04:51 <comex> why
01:05:50 <ehird> because it was a vertical line
01:05:55 <ehird> so it looked stupid otherwise
01:05:58 <ehird> but notw it's not
01:06:07 <comex> mm
01:06:32 <comex> I'm still deciding whether or not I like vim putting you at a character instead of between characters
01:06:59 <comex> for ^ and $, it's just a waste of time to remember whether to use i or a
01:07:05 <comex> but for searches, it makes sense...
01:07:38 <oerjan> ^i = I, $a = A
01:07:50 <ehird> btw, the ironman colour scheme is nice
01:08:29 <comex> oerjan: nice, I'll remember that
01:08:30 * ehird maps Ctrl-A to <ESC>I and Ctrl-E to <ESC>A
01:08:34 <ehird> emacs addiction.
01:08:48 <comex> ctrl-a > ^
01:08:50 <comex> that requires a big reach
01:08:55 <ehird> not for me
01:08:57 <ehird> oh
01:08:57 <ehird> right
01:08:59 <ehird> yeah
01:09:05 <ehird> this one works in insert mode though too
01:09:06 <ehird> :P
01:09:34 <comex> also, what
01:09:55 * orelo concludes that irssi is sending UTF-8 to screen
01:10:00 <comex> naah, because in normal mode you get a beep
01:10:20 <comex> solution: nnoremap
01:10:22 <ehird> comex:
01:10:23 <ehird> nmap <C-A> ^
01:10:24 <ehird> imap <C-A> <ESC>I
01:10:26 <ehird> nmap <C-E> $
01:10:27 <comex> or that
01:10:28 <ehird> imap <C-E> <ESC>A
01:10:38 <ehird> works exactly how you expect in both modes
01:10:47 <ehird> not in visual mode, though
01:10:51 <ehird> who gives a shit about visual mode
01:11:06 * comex vmap
01:11:22 <AnMaster> night
01:11:26 * oerjan likes visual mode
01:11:28 <ehird> except
01:11:29 <ehird> you can't do
01:11:34 <ehird> <ESC>foo<Ctrl-V>
01:11:37 <ehird> because that trashes your selection
01:11:42 <comex> ehird: vmap <C-A> ^
01:11:46 <ehird> ah
01:13:33 * comex wonders how to remember 'vaB'
01:13:41 <ehird> hmmmmmm
01:13:46 <ehird> my hi Cursor things are being ignored :(
01:14:33 <ehird> aha
01:15:21 <ehird> colorscheme ironman
01:15:21 <ehird> hi Cursor guifg=#000000 guibg=#CCCCCC
01:15:23 <ehird> hi lCursor guifg=#000000 guibg=#CCCCCC
01:15:25 <ehird> hi CursorIM guifg=#000000 guibg=#CCCCCC
01:15:27 <ehird> lovely
01:16:14 <ehird> wtf
01:16:18 <ehird> I restart, and it forgets
01:16:55 <comex> too bad there isn't a way to select the {}-delimited block _and whatever comes before it_
01:17:04 <comex> ehird: shit gets reset when you do shit
01:17:06 <comex> :p
01:17:11 <comex> though it would require knowledge of C
01:17:11 <ehird> yes but
01:17:13 <comex> ais523: can emacs do that?
01:17:15 <ehird> :soucre ~/.vimrc
01:17:16 <comex> ohwaityouaren'there
01:17:17 <ehird> FIXES IT
01:17:18 <ehird> *source
01:17:24 <ehird> comex: umm, no, it wouldn't require that
01:17:26 <ehird> create a function
01:17:29 <ehird> then map a key to call it
01:17:30 <ehird> voila
01:17:38 <ehird> full vimscript at your fingertips (NOTE: vimscript is shit)
01:17:52 <comex> I meant it would require knowing that the file is C
01:18:02 <comex> which, according to ais523, is bad
01:18:09 <comex> /emacsy
01:18:11 <comex> I don't see why
01:18:14 <comex> :u
01:18:15 <ehird> oh
01:18:22 <comex> I'm gonig to have to learn vim scripting though
01:18:25 <ehird> now comex
01:18:30 <ehird> how come source .vimrc fixes this
01:18:31 <ehird> :|
01:18:32 <comex> so far I've just been copying from the tips wiki
01:18:40 <orelo> echo -e \\0347\\0214\\0253 does precisely what it ought to.
01:18:48 <comex> ehird: do it after syntax on
01:18:51 <comex> if you're not already
01:18:56 <comex> wait,
01:18:58 -!- kerlo has joined.
01:18:59 <comex> cursor isn't syntax
01:19:01 * comex shuts up
01:19:04 <ehird> that is default, for one :p
01:19:13 <comex> ehird:
01:19:16 <comex> move it to the end of vimrc
01:19:22 <ehird> wtf
01:19:26 <ehird> it works after syntax on
01:19:27 <ehird> figure, go
01:20:55 -!- kerlo has quit (Client Quit).
01:22:00 -!- orelo has changed nick to kerlo.
01:22:26 <kerlo> I've deduced, I suppose, that screen is messing everything up.
01:24:07 <ehird> hey comex, whats the thing for :e-but-in-a-new-tab
01:30:19 <oerjan> ehird: :split
01:32:46 -!- olsner has quit ("Leaving").
01:36:06 -!- Robdgreat has quit (Read error: 60 (Operation timed out)).
01:36:10 -!- Robdgreat has joined.
01:37:25 -!- Sgeo has joined.
01:37:46 -!- Corun has quit ("Leaving").
01:54:33 -!- Sgeo has changed nick to Sgeo[Worms].
02:03:06 -!- Slereah_ has joined.
02:19:21 -!- Slereah has quit (Read error: 110 (Connection timed out)).
02:49:43 <bsmntbombdood> trees of bloom filters!
02:50:40 <oerjan> forests in bloom!
02:52:39 <bsmntbombdood> what's the most efficient way of representing 3 bit strings, A, (A|B), and B?
02:53:41 <bsmntbombdood> surely you can do better than 3n
02:55:48 <oerjan> um one is the or of the others?
02:56:04 <oerjan> oh wait
02:56:16 <oerjan> erm what is (A|B)
02:56:40 <oerjan> bsmntbombdood: ^
02:56:49 <bsmntbombdood> bitwise or
02:56:54 <oerjan> oh
02:57:06 <oerjan> well just leave it out, duh
02:57:08 <oerjan> 2n
02:57:23 -!- kwertii has joined.
02:57:48 <bsmntbombdood> ...except you're not allowed to do that
02:58:08 <oerjan> well then it's a question of what you mean by "representation"
02:58:27 <oerjan> since that is the precise shortest way, i think
02:59:55 <oerjan> what about sending A,B, and one of the flag pairs 10, 11 or 01?
03:00:31 <oerjan> 2n+2, and each of them can be sent "separately"
03:00:52 <oerjan> of course that is long for everything _other_ than (A|B)
03:00:55 <bsmntbombdood> let's say this: you need to be able to compute A|B by looking at no more than n bits
03:01:04 -!- Corun has joined.
03:01:06 <oerjan> oh
03:02:21 <oerjan> well then, if the same is true for A and B, and those are independent, then you must have n bits that represent A and n disjoint bits that represent B
03:03:16 <oerjan> obviously you need to add _something_ to be able to compute (A|B) from n bits
03:03:34 <bsmntbombdood> right
03:04:22 <oerjan> although theoretically the representations of A and B could be recodings, no need to store the actual same bits
03:04:45 <bsmntbombdood> A and B are independent
03:05:25 <bsmntbombdood> it just seems like it should be possible to do better than 3n because A|B is biased towards 1
03:07:56 <oerjan> hm no idea
03:10:12 -!- kwertii has quit ("bye").
03:10:25 -!- kwertii has joined.
03:45:37 <bsmntbombdood> what's a good rolling checksum/?
03:47:23 <GregorR> 0
03:47:26 <GregorR> It's round and smooth.
03:47:31 <GregorR> Should roll quite nicely.
03:47:51 <GregorR> It's also the 1-bit checksum (i.e. parity) for anything that has an even number of 1s.
03:48:30 <bsmntbombdood> ah, that's helpful
03:48:48 <GregorR> Damn, then I've failed.
03:50:40 -!- Sgeo[Worms] has changed nick to Sgeo.
03:52:04 <bsmntbombdood> i would use adler32, but that's no good for short strings
03:55:36 -!- Corun has quit ("This computer has gone to sleep").
03:57:48 -!- neldoreth has quit (Read error: 113 (No route to host)).
04:16:44 -!- kwertii has quit ("bye").
04:36:41 -!- GreaseMonkey has joined.
05:40:47 -!- oerjan has quit ("Good night").
05:42:18 <psygnisfive> ALL TAUTOLOGIES ARE TAUTOLOGIES
05:42:26 <psygnisfive> i just felt i should let you guys know this.
05:42:48 <Sgeo> x!=x is true for some x
06:00:00 <MizardX> nan != nan
06:22:22 <psygnisfive> which is weird.
06:49:04 -!- oklofok has joined.
07:07:38 -!- oklopol has quit (Read error: 110 (Connection timed out)).
07:10:29 -!- Sgeo has quit ("Leaving").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:50:57 -!- neldoreth has joined.
08:59:21 -!- jix has joined.
09:31:54 -!- GreaseMonkey has quit ("Client Excited").
10:03:52 <Deewiant> ehird: re. vim addressing the nonexistent last char on a line, look at :help 'virtualedit
10:38:01 <fizzie> This was a rather vague statement: "For students – written confirmation of student status signed by scientific advisor is needed." We just faxed a free-form statement printed on some TKK logo-paper, since I don't think any of the more or less official "student status" proofs have any "scientific advisors" on them.
11:06:12 -!- tombom has joined.
11:06:28 <fizzie> Gahh that IE-only Travel system is horrible.
11:17:21 -!- mvmn has joined.
11:18:51 <mvmn> Hails
11:19:30 <mvmn> I've implemented Thue interpreter in Java. You may get it freey from here - http://mvmn.wordpress.com/2009/03/12/thue-in-java/
11:20:34 <mvmn> I don't know what I did it for (it's esoteric, hehe), so decided to spread it to the world - maybe someone will find a good use for it (-:
11:26:49 -!- Corun has joined.
11:41:06 -!- mvmn has left (?).
11:43:19 -!- Oklopol has joined.
11:43:34 <Oklopol> my computer is borken `___´
11:43:39 <Slereah_> BORK
11:43:43 <Slereah_> BORK BORK BORK BORK
11:43:59 -!- Oklopol has changed nick to oklopoll.
11:44:00 -!- oklopoll has changed nick to oklopol.
11:59:47 -!- oklofok has quit (Read error: 110 (Connection timed out)).
13:20:26 -!- Hiato has joined.
13:34:29 -!- Corun has quit ("This computer has gone to sleep").
14:43:08 -!- Judofyr has quit (Remote closed the connection).
14:49:11 -!- Judofyr has joined.
15:01:10 -!- oklopol has quit (Read error: 110 (Connection timed out)).
15:19:55 -!- Judofyr has quit (Remote closed the connection).
15:49:54 -!- Corun has joined.
16:02:53 -!- Corun has quit ("This computer has gone to sleep").
16:08:28 -!- neldoret1 has joined.
16:17:41 <ehird> oerjan is wrong
16:17:46 <ehird> :split is for framey-things
16:17:46 <ehird> but tabs
16:17:48 <ehird> not
16:18:23 <Deewiant> :tabe %
16:18:31 <ehird> ah
16:18:33 <ehird> tabe
16:18:47 <ehird> http://img24.imageshack.us/img24/1448/picture5okr.png <- those buttons, looks like snow leopard
16:21:01 -!- neldoreth has quit (Read error: 113 (No route to host)).
16:23:58 -!- FireyFly has joined.
16:30:16 <ehird> hmm
16:30:21 <ehird> now to figure out how to "tabe filename at point"
16:37:04 -!- BeholdMyGlory has joined.
16:52:27 -!- Corun has joined.
16:55:14 -!- Sgeo has joined.
16:55:31 -!- Corun has quit (Client Quit).
16:56:27 <ehird> We thought if we were to find the smallest universal machine then we could learn a great deal about computability -- of course that wouldn't be so!
16:56:30 <ehird> — John McCarthy
16:56:35 <ehird> The reader is welcome to enter the competition [to design the smallest universal Turing machine ...] although the reader should understand clearly that the question is an intensely tricky puzzle and has essentially no serious mathematical interest.
16:56:37 <ehird> — Marvin Minsky
16:56:42 <ehird> NOW WE UNDERSTAND COMPUTATION!
16:56:45 <ehird> — Stephen Wolfram
16:58:29 <Slereah_> Wolfram solved the halting problem
16:58:43 <ehird> yes he asked wolfram|alpha
16:58:47 <ehird> "how to solve halting problem"
16:58:49 <Slereah_> :D
16:59:01 <ehird> and it gave him that stackoverflow article we linked earlier
16:59:04 <ehird> (about the BF halting checker)
16:59:09 <ehird> and then he enlighteninged
17:00:47 <Sgeo> BF halting checker?
17:01:11 <Slereah_> That shouldn't be too hard, considering that most BF is 30k cells or so
17:01:13 -!- MigoMipo has joined.
17:02:10 <ehird> 10AB -> B
17:02:10 <ehird> 11ABC -> 11AC1BC
17:02:19 <ehird> ^ simpler than Binary Combinatory Logic?
17:02:22 <ehird> hmm wait
17:02:26 <ehird> that has 11 wrong
17:02:27 <ehird> damn
17:02:28 <ehird> nm
17:05:51 <AnMaster> hi
17:05:56 <ehird> hi
17:15:39 -!- bsmntbombdood has quit (Read error: 113 (No route to host)).
17:16:21 -!- bsmntbombdood has joined.
17:17:04 <ehird> http://nitens.org/taraborelli/latex ← Typography porn.
17:19:51 <Sgeo> ligatures are hot
17:20:38 <ehird> I wonder if there's someone who's actually sexually attracted to good typography.
17:23:29 <ehird> http://www.josbuivenga.demon.nl/tallys.html <- awesome font
17:23:48 <ehird> Er, typeface.
17:23:51 <ehird> Please forgive me.
17:24:41 <Slereah_> ehird : We have someone on a conlanging forum
17:24:46 <Slereah_> She has this expression
17:24:49 <Slereah_> SCRIPTGASM
17:24:52 <ehird> A person? On a forum? That's amazing.
17:24:58 <Slereah_> Because she enjoys "pretty scripties"
17:25:10 <ehird> Well, sure, but is she actually physically aroused by them?
17:25:17 <ehird> You'll have to do some tests.
17:25:53 <Slereah_> Well, she's a minor, so it would probably be illegal
17:26:06 -!- oklofok has joined.
17:28:47 <ehird> Wow, why have I never used Hoefler Text before?
17:28:49 <ehird> That's one awesome typeface.
17:35:17 <ehird> kay, if I ever publish a book it'll be in hoefler tex
17:35:18 <ehird> t
17:51:13 <AnMaster> Deewiant, fizzie: There?
17:51:40 <AnMaster> What exactly is the correct way to interpret a form feed in the program file when in befunge 98 mode?
17:51:54 <Deewiant> byte #12
17:52:04 <AnMaster> Deewiant, so it should just be loaded as it is?
17:52:12 <Deewiant> Yes
17:52:49 <AnMaster> Subsequent lines in Unefunge are simply appended to the first, and the end of the source file indicates the end of the (single) line. End-of-line markers are never copied into Funge-Space.
17:52:54 <AnMaster> Deewiant, that is for unefunge
17:53:06 <Deewiant> Ah, crap
17:53:07 <Deewiant> Then do that
17:53:14 <AnMaster> so loading form feed raw into funge space would be inconsistent
17:53:15 <Deewiant> I.e. ignore it
17:53:24 <AnMaster> Deewiant, what about when you load with i?
17:53:34 <ehird> "source file"
17:53:38 <ehird> so
17:53:44 <ehird> if it's a source file
17:53:48 <ehird> then newlines are ignored
17:53:50 <ehird> otherwise, it's not
17:53:52 <ehird> i includes a file, right?
17:53:53 <ehird> or sth
17:53:56 <ehird> i'd class that as a source file
17:53:56 <Deewiant> loading with i is equivalent to loading the source
17:54:02 <AnMaster> ehird, you can load a source file with i, or a data file
17:54:19 <ehird> AnMaster: I'd say any file-based representation of fungespace where one char = one place is a source file
17:54:22 <ehird> you know wha I mean
17:54:23 <ehird> anyway
17:54:31 <AnMaster> Deewiant, i has two loading modes.
17:54:32 <AnMaster> Also, if the least significant bit of the flags cell is high, i treats the file as a binary file; that is, EOL and FF sequences are stored in Funge-space instead of causing the dimension counters to be reset and incremented.
17:54:40 <Deewiant> AnMaster: Yes, and they are both very well specced.
17:54:46 <ehird> AnMaster: i can has two loading modes?
17:54:54 <AnMaster> ehird, XD
17:54:57 <Deewiant> I mean, that answers your question directly... I don't get why you're asking me
17:56:17 <ehird> okay I am way too obsessed with fonts atm; halp
17:56:33 <Deewiant> ehird: Use Comic Sans and forget the rest
17:56:37 <ehird> http://bohemiancoding.com/?Fontcase <-- think I will download this to feed my crack^Wfont habit
17:56:40 <AnMaster> Deewiant, So to get it straight: 1) Initial load: ignore FF in befunge. 2) i binary: put everything in 3) i non-binary: EOL as usual (y++) FF ignored?
17:56:44 <ehird> Deewiant: I should make Comic Helvetica
17:56:51 <Deewiant> AnMaster: 1) and 3) are equivalent
17:56:55 <ehird> and cause the apocalypse
17:57:00 <Deewiant> AnMaster: 1) just hardcodes the position as (0,0)
17:57:06 <Deewiant> (,0,0,0...)
17:57:21 <AnMaster> Deewiant, yes indeed. I just wanted to be sure I got it right
17:57:27 <Deewiant> ehird: If you want to be useful add glyphs to DejaVu Sans Mono
17:57:37 <ehird> I don't like dejavu sans mono :-(
17:57:48 <ehird> It looks ugly.
17:57:56 <Deewiant> Start with GLAGOLITIC CAPITAL LETTER SPIDERY HA
17:58:03 <ehird> ... On the other hand!
17:58:07 <AnMaster> Deewiant, currently I'm doing coverage analysis of cfunge and writing test cases for things missing mycology.
17:58:20 <ehird> New project: Add the GLAGOLITIC CAPITAL LETTER SPIDERY HA to every font in the universe.
17:58:37 <AnMaster> ehird, sounds cool. How do you make/edit a font btw?
17:58:43 <ehird> AnMaster: using expensive software
17:58:47 <Deewiant> U+2C22 if you want to look at a reference pic
17:58:56 <AnMaster> ehird, I'm sure there is some free software *searches*
17:59:07 <ehird> AnMaster: yes, but ... not very good.
17:59:12 <AnMaster> media-gfx/fontforge http://fontforge.sourceforge.net/ ?
17:59:16 <AnMaster> never tried it
17:59:26 <ehird> typefaces are ... ever so slightly complex.
17:59:33 <ehird> also very niche
17:59:38 <ehird> Which would explain the lack of good free tools
17:59:42 <ehird> unfortunately
17:59:43 <AnMaster> well truetype is certainly complex
17:59:51 <ehird> Fontographer seems popular
17:59:52 <AnMaster> I remember reading about the file format some time ago.
17:59:54 -!- kar8nga has joined.
18:00:10 <Deewiant> http://dejavu-fonts.org/wiki/index.php?title=Developer%27s_Corner suggests fontforge
18:00:15 <ehird> AnMaster: truetype is out of date, actually
18:00:20 <ehird> well, sorta
18:00:26 <ehird> opentype is more widely used in new stuff IME
18:00:32 <AnMaster> mhm
18:00:36 <ehird> Deewiant: yes, but they're a free project; they wouldn't recommend a commercial tool
18:00:41 <AnMaster> I never seen opentype on anything but apple
18:00:51 <ehird> AnMaster: opentype is a microsoft format
18:00:56 <AnMaster> oh hm
18:00:57 <Deewiant> ehird: Yes, of course, I was only considering free ones anyway
18:01:05 <ehird> Deewiant: Well, there's only fontforge.
18:01:14 <AnMaster> ehird, I'm pretty sure I have seen opentype on OS X though... I may be wrong
18:01:17 <ehird> yes
18:01:21 <ehird> all default fonts on OS X are opentype
18:01:23 <AnMaster> ah
18:01:37 <ehird> holy crap I love fontcase
18:01:40 <AnMaster> ehird, is opentype free and patent-unencumbered?
18:01:46 <ehird> um
18:01:52 <ehird> iii don't know
18:02:00 <ehird> http://partners.adobe.com/public/developer/opentype/index_spec.html
18:02:01 <AnMaster> I mean, just because it says "open" doesn't mean it actually is
18:02:08 <ehird> there's the spec
18:02:19 <AnMaster> mhm
18:02:19 -!- ais523 has joined.
18:02:22 <ehird> hi ais523
18:02:23 <AnMaster> hi ais523
18:02:37 <AnMaster> ehird, argh! you were a second faster
18:02:46 <AnMaster> so I ended up second
18:02:50 <ehird> Ooh, Charcoal CY is a pretty typeface
18:03:01 -!- Judofyr has joined.
18:06:07 <AnMaster> Deewiant, I think your = has a bug
18:06:26 <ais523> hi ehird, AnMaster
18:06:30 <AnMaster> Deewiant, "After execution, a failure value is pushed onto the stack. If this value is zero, everything went as expected. If the value is non-zero, it may be the return-code of the program that was executed; at any rate it means that the attempt to execute the program, or the program itself, did not succeed."
18:06:41 <AnMaster> Deewiant, try = on empty stack, it pushes 0
18:06:52 <AnMaster> it might be UNDEF
18:06:56 -!- Mony has joined.
18:07:16 <AnMaster> but to me it sounds like everything didn't go as planned
18:07:19 <Deewiant> I'd say everything went as expected
18:07:27 <Deewiant> You asked me to execute nothing and I did, successfully
18:07:32 <AnMaster> Deewiant, so what is the meaning of empty string = ?
18:07:38 <ais523> what does = do?
18:07:43 <Deewiant> AnMaster: Like /bin/true
18:07:49 <Deewiant> ais523: system()
18:07:59 <ais523> hmm... empty string = is impl-defined, I'm almost certain
18:08:04 <AnMaster> ais523, execute a string in an implementation defined way. This means system() usually
18:08:06 <ehird> i just want to buy every typeface in the world.
18:08:10 <ehird> and use them all.
18:08:20 <Mony> plop
18:08:33 <AnMaster> cfunge pushes -2 on empty string to =
18:08:34 <ais523> hi Mony
18:08:46 <ehird> what does system("") do?
18:08:48 <Deewiant> AnMaster: FBBI would also push 0
18:08:48 <ehird> that should be what = does.
18:08:57 <AnMaster> ehird, implementation defined I *think*
18:09:01 <ehird> AnMaster: try it on your system.
18:09:03 <AnMaster> that is C implementation
18:09:04 <Deewiant> If the value of command is NULL, system() returns non-zero if the shell
18:09:04 <Deewiant> is available, and zero if not.
18:09:04 <ehird> if it does something sane, copy that
18:09:09 <ais523> system(NULL) is defined by the C standard, it tells you whether system() can do anything or not
18:09:11 <ehird> Deewiant: do that, then
18:09:13 <ais523> system("") is different, and isn't defined
18:09:17 <ehird> oh
18:09:17 <ehird> right
18:09:26 <ehird> well, what does system("") do on linux/bsd?
18:09:29 <ehird> just do that.
18:10:04 <Deewiant> ehird: You do realize that my code is just push(system(popstring)) or something equally simple
18:10:11 <ehird> Deewiant: Then your code is right./
18:10:16 <ehird> Hmm.
18:10:23 <ehird> I'm going to make my own Befunge interp. Again
18:10:31 <ais523> how's your INTERCAL impl doing?
18:10:32 <AnMaster> ehird, it returns 0
18:10:38 <ehird> AnMaster: Do that.
18:10:47 -!- jix_ has joined.
18:10:48 <ehird> ais523: When I said April, I meant next April
18:11:14 <ais523> C-INTERCAL 0.01 was famously written in a weekend
18:11:18 <ais523> admittedly, it didn't actually work
18:11:18 <ehird> But anyway; only three compliant implementations? This will not do.
18:11:24 <Deewiant> Four, no?
18:11:30 <ehird> Umm..
18:11:32 <ehird> Oh, stinkhorn?
18:11:35 <ehird> Isn't that really incomplete?
18:11:40 <AnMaster> on *POSIX* system() is defined like:
18:11:40 <Deewiant> That makes five if it does
18:11:41 <AnMaster> The environment of the executed command shall be as if a child process were created using fork(), and the child process invoked the sh utility using
18:11:42 <AnMaster> execl() as follows:
18:11:42 <AnMaster> execl(<shell path>, "sh", "-c", command, (char *)0);
18:11:45 <ais523> what is stinkhorn?
18:11:45 <ehird> Deewiant: list them?
18:11:48 <ehird> ais523: Asztal's
18:11:52 <ehird> CCBI, cfunge, RC/funge98
18:11:54 <AnMaster> where <shell path> is an unspecified pathname for the sh utility.
18:11:55 <Deewiant> ehird: CCBI, cfunge, RC/Funge-98, Language::Befunge were the ones I was thinking of
18:11:57 <ehird> What else is compliant?
18:11:58 <ehird> oh
18:12:02 <ehird> Language::Befunge is compliant?
18:12:04 <ehird> And complete?
18:12:12 <Deewiant> Last I checked, IIRC, yes
18:12:20 <ehird> Well, very slow, I presume :P
18:12:33 <Deewiant> He's working on speeding it up, haven't tried it in a while
18:12:45 <AnMaster> Deewiant, and yes your code is very similiar to push(system(popstring)). I looked a few minutes ago. Think there was a cast too
18:13:00 <AnMaster> void execute() {
18:13:00 <AnMaster> ip.stack.push(cast(cell)system(popStringz()));
18:13:00 <AnMaster> }
18:13:03 <AnMaster> that is Deewiant's code
18:13:24 <ehird> also, my interpreter's goal:
18:13:40 <ehird> Be completely complian. Support as many fingerprints as possible. As a very distant last goal, be fast enough.
18:13:41 <Deewiant> Make a DS9K
18:13:44 <ehird> *compliant
18:13:58 <ehird> Deewiant: I will be sure to have a flyDemonsOutOfUsersNose function.
18:14:00 <Deewiant> Sounds like CCBI to me, 'fast' just a bit more distant then usual
18:14:02 <AnMaster> Deewiant, hm = may *ONLY* reflect if = is unimplemented right?
18:14:03 <Deewiant> Argh
18:14:04 <Deewiant> s/then/than/
18:14:08 <ais523> is efunge complaint yet
18:14:14 <Deewiant> AnMaster: I think so, yep
18:14:22 <AnMaster> indeed
18:14:24 <Deewiant> I doubt it's a complaint
18:14:37 <ehird> Deewiant: CCBI is 1) not written by me 2) doesn't support all of MKRY's shitprints 3) is not written in Haskell
18:14:53 <AnMaster> ais523, well 99.99%. I just found a bug if a file uses CR line endings. Haven't had time to investigate yet.
18:15:01 <ehird> also, MKRY is MikeRiley's new name; spread the word.
18:15:13 <AnMaster> ais523, I found it doing coverage analysis, and I plan to complete that first, collecting a todo list.
18:15:21 <AnMaster> brb phone
18:15:21 <ais523> actually, I'd love to make a befunge-98 DS9K
18:15:34 <ais523> a befunge-93 DS9K would unfortunately probably not function on any programs at all
18:15:43 <Slereah_> Deep Space 9000?
18:15:52 <ehird> ais523: make a (feral) DS9K fingerprint
18:15:55 <Deewiant> ehird: Right, some of 2) is actually by choice and not just due to that DMD bug
18:15:56 <ehird> that has no instructions
18:15:59 <ehird> but when you load it
18:16:05 <ehird> it puts the interpreter into DeathStation 9000 mode
18:16:08 <Deewiant> ehird: For 3) we have hsfunge (or we don't, but funktio does)
18:16:12 <ehird> for hardcore programmers
18:16:16 <ais523> ehird: so it complies with the standard, but nothing else?
18:16:24 <ehird> ais523: right! Not even the laws of physics.
18:16:26 <ais523> unfortunately, it has at least one fingerprint loaded, and thus can legally do anything
18:16:26 <Deewiant> That'd be a bit crap actually
18:16:46 <Deewiant> Because the spec is so messed up that it probably wouldn't run many programs that well
18:16:52 <ehird> Deewiant: 2) See? Inferior. 3) It is incomplete, and doesn't reach the other goals, and funktio is dead
18:17:01 <ehird> also, that would be the point
18:17:13 <Deewiant> funktio isn't dead, he said something on #haskell a few days ago
18:17:29 <Deewiant> And for 2), well, we have RC/Funge-98 for that
18:17:31 <ehird> his site is down, he hasn't been in here for ages, and I don't even know how I could get hsfunge
18:17:33 <ehird> he's pretty dead
18:17:39 <ehird> and 2) RC/Funge doesn't meet the other goals :P
18:17:44 <Deewiant> His site is dead
18:19:08 <Deewiant> ehird: And given your original goals, I think it does meet
18:19:24 <ehird> Deewiant: It fails 1) and 3) of my new goals
18:19:25 <ehird> 17:14 ehird: Deewiant: CCBI is 1) not written by me 2) doesn't support all of MKRY's shitprints 3) is not written in Haskell
18:20:23 <ais523> Slereah_: DS9K = DeathStation 9000
18:20:47 <ais523> which is basically something that complies to the letter of a standard, but not its spirit
18:21:03 <ais523> like Windows for POSIX, for instance, they got everything that legally could return ENOTIMPLEMENTED IIRC
18:21:06 <Deewiant> ehird: You didn't explicitly specify those as goals
18:21:14 <ehird> Deewiant: oh stfu :P
18:22:38 <ehird> anyway the most important thing in a funge interp is a name; all else follows
18:22:51 <ehird> maybe i should call it FG98 :-D
18:22:58 -!- jix has quit (Connection timed out).
18:23:10 <ehird> http://www.haskell.org/pipermail/haskell-cafe/2009-March/057590.html <-- <3
18:23:14 <ais523> ehird: what will its handprint be?
18:23:26 <ehird> ais523: FG98
18:23:26 <ehird> :P
18:23:29 <ais523> makes sense
18:23:36 <ais523> what will the handprint for the next version be?
18:23:43 <ehird> next version?
18:24:00 <ais523> AnMaster/Deewiant: do you have to change the handprint if you upgrade a Funge interp to a new version?
18:24:11 <Deewiant> No
18:24:36 <ais523> oh, it's variants that have to have different handprints
18:24:54 <ais523> such as CFUN for cfunge, but CFFI for cfunge + IFFI + C-INTERCAL
18:26:17 -!- kar8nga has quit (Remote closed the connection).
18:26:39 <ehird> I NEED A BASIC REPL
18:27:10 <ais523> ehird: BASIC isn't really suited to REPLs
18:27:16 <ehird> Sure it is
18:27:19 <ehird> Whyever not?
18:27:24 <ehird> As long as it automatically numbers lines
18:27:30 <ais523> because nearly all nontrivial BASIC programs span multiple lines
18:27:34 <ehird> yes, and?
18:27:40 <oklofok> you mean liek c64
18:28:44 <ehird> hee I wrote a BASIC program oh that was fun
18:28:47 <ehird> what is so fun about BASIC?
18:28:49 <ehird> it's so shitty/
18:28:58 <Sgeo> REPLs?
18:29:08 <ais523> BASIC was one of the first languages to really catch on amongst the general computer-using public
18:29:09 <ehird> Sgeo: o_o
18:29:11 <ehird> !SYNTAX ERROR IN LINE 40, COLUMN 29
18:29:11 <ehird> UNEXPECTED 1
18:29:13 <ehird> EXPECTING : OR END OF LINE
18:29:14 <oklofok> it means "replica"
18:29:19 <ehird> it just puts the parsec error in uppercase
18:29:19 <ehird> xD
18:29:20 <ais523> Sgeo: Read, Evaluate, Print, Loop
18:29:34 <oklofok> Sgeo: either me or ais523 is lying, i think
18:29:39 <ais523> it's a small program that prints the results of expressions in a given language
18:29:49 <ais523> such as ghci for Haskell, or intercalc for CLC-INTERCAL
18:30:04 <ehird> Sgeo: it's like
18:30:07 <ehird> $ python
18:30:08 <ehird> for python.
18:30:13 * Sgeo wikis
18:30:14 <ehird> (There, in words you understand. :P)
18:30:14 <Sgeo> ty
18:30:18 <Sgeo> lol
18:30:20 <ehird> the interactive prompt
18:30:51 <ais523> interestingly, with Perl you need to use perl -de 0 to get a repl
18:30:53 <ais523> not just perl
18:30:59 <ehird> hmm
18:31:00 <ehird> question
18:31:04 <ehird> in BASIC how come
18:31:06 <ehird> IF X THEN NUMBER
18:31:10 <ehird> gotos NUMBER
18:31:12 <ehird> but, e.g.
18:31:15 <ehird> PRINT "FOO":10
18:31:16 <ehird> doesn't work
18:31:17 <ehird> you need
18:31:20 <ehird> PRINT "FOO":GOTO 10
18:31:28 <ais523> IF X THEN 10 is an abbreviation
18:31:31 <ais523> syntax antisugar, if you like
18:31:41 <ehird> no that's definitely syntactic sugar
18:31:44 <ais523> it was actually the only form of IF that used to be accepted
18:32:00 <ais523> it used to be that IF only ever did a goto, you couldn't get it to do anything else
18:32:07 <ehird> "For example, FORK=1TON appears to set the value of a variable FORK to a weight of 1 ton. In reality it begins a FOR loop with control variable K, ranging in value from 1 to N."
18:32:35 <ais523> oh, that was important on early computers, removing all the whitespace from a program helped it to fit in memory
18:33:20 <ehird> 10 PRINT "LOOK AROUND YOU";
18:33:21 <ehird> 20 GOTO 10
18:33:28 <lament> LOOK AROUND YOU
18:33:30 <lament> LOOK AROUND YOU
18:33:33 <lament> LOOK AROUND YOU
18:33:33 <ehird> NO
18:33:34 <ehird> it has ;
18:33:35 <lament> LOOK AROUND YOU
18:33:36 <ehird> it all goes on one line
18:33:38 <lament> LOOK AROUND YOU
18:33:39 <ehird> LOOK AROUND YOULOOK AROUND YOULOOK AROUND YOULOOK AROUND YOULOOK AROUND YOULOOK AROUND YOULOOK AROUND YOULOOK AROUND YOULOOK AROUND YOULOOK AROUND YOULOOK AROUND YOULOOK AROUND YOULOOK AROUND YOULOOK AROUND YOULOOK AROUND YOULOOK AROUND YOULOOK AROUND YOULOOK AROUND YOULOOK AROUND YOULOOK AROUND YOU
18:33:44 <ais523> ; is an anti-newline in BASIC print statements
18:33:52 <lament> OHHHHHHHHHHHHHHHHHHHHH
18:33:56 <ais523> even better,
18:34:01 <Sgeo> <3 Look Around You
18:34:04 <ais523> PRINT "LOOK AROUND YOU"'
18:34:05 <ehird> although; in the original one, it had no ;
18:34:09 <ais523> prints LOOK AROUND YOU and then two newlines
18:34:11 <ehird> different implementations
18:34:22 <lament> my implementation is non-standard!
18:34:29 <ehird> Look, around you. Look around, you. Just, look around you.
18:34:30 <lament> LOOK AROUND YOU
18:34:33 <lament> INFINITE LOOP DETECTED
18:34:40 <ais523> single-quote, in many BASIC impls, prints a newline, and otherwise acts like a comma except it doesn't need anything before or after it
18:34:46 <ehird> LOOK AROUND YOU SORRY IT IS LOOP
18:35:01 <ehird> oh wait
18:35:04 <ehird> http://www.youtube.com/watch?v=mdI_MmN-Lp4
18:35:06 <ehird> it has a space and a ;
18:35:10 <ehird> 10 PRINT "LOOK AROUND YOU ";
18:35:10 <ehird> 20 GOTO 10
18:35:12 <AnMaster> back
18:35:12 <ehird> amended code
18:35:38 <AnMaster> <ais523> AnMaster/Deewiant: do you have to change the handprint if you upgrade a Funge interp to a new version? <-- no, you change version
18:36:05 <ehird> GregorR:
18:36:06 <ehird> http://www.youtube.com/watch?v=mdI_MmN-Lp4
18:36:09 <ehird> Cheskers in Look Around You
18:37:09 <AnMaster> ais523, what would be the easiest way to insert a literal form feed in emacs?
18:37:17 <ehird> Ctrl-V Ctrl-M
18:37:18 <ehird> No?
18:37:21 <ais523> AnMaster: ^Q^L
18:37:26 <ehird> Oh, ^L
18:37:27 <AnMaster> ehird, maybe. I forgot the key combo
18:37:27 <ais523> well, C-q C-l as this is emacs
18:37:30 <AnMaster> thanks
18:37:40 <ais523> ehird: C-v is "scroll down" in emacs
18:37:45 <ehird> yeah fuck emacs
18:37:45 <ehird> :P
18:37:51 <ais523> C-q is "insert next character literally unless it's a digit"
18:38:00 <AnMaster> ais523, so which key is form feed then
18:38:04 <ais523> AnMaster: C-l
18:38:12 <ehird> You know the problem with VINTAGE BASIC?
18:38:15 <ehird> No "DRAW" instruction.
18:38:17 <AnMaster> ah right
18:38:21 <ehird> I fucking need DRAW. BASIC is useless without it.
18:38:34 <GregorR> ehird: That's where I got the idea :P
18:38:39 <ehird> GregorR: Hahaha
18:40:47 <ehird> "The behavior is different depending on the value passed. If the value is positive, the result will be a new random value between 0 and 1 (including 0 but not 1). If the value is zero, the result will be a repeat of the last random number generated."
18:40:55 <ehird> Wow, is that to avoid an extra variable?
18:41:11 <ais523> I'm pretty sure that after a while, they generalised it to add negative arguments
18:41:16 <ais523> but I forget what they do
18:41:27 <ais523> and yes, variables used to be in short supply
18:41:37 <ais523> but not just that, to avoid having to write out the code to save the random number in a variable
18:41:53 <ais523> original BASIC was highly golfed, by necessity, the programs wouldn't fit in memory otherwise
18:44:43 <ehird> Yay, i wrote a guessing game. That was so pointless, but I enjoyed it anyway.
18:44:46 <ehird> 10 A=INT(RND(1)*100)
18:44:46 <ehird> 20 INPUT"GUESS THE NUMBER";B
18:44:47 <ehird> 30 IF B=A THEN 60
18:44:49 <ehird> 40 IF B<A THEN 70
18:44:51 <ehird> 50 IF B>A THEN 80
18:44:52 <ehird> 60 PRINT"YOU WIN!":END
18:44:55 <ehird> 70 PRINT"TOO SMALL":GOTO 20
18:44:56 <ehird> 80 PRINT"TOO BIG":GOTO 20
18:45:16 <ais523> ehird: line 30 is redundant
18:45:21 <ehird> Aha, so it is.
18:45:22 <ais523> you could delete it and the program would still work
18:45:48 <ehird> How did kids guess the target line number before they wrote it...?
18:45:59 <ais523> you can write the lines in any order
18:46:02 <ais523> and revise them
18:46:07 <ais523> so you just write GOTO 0 the first time round
18:46:12 <ais523> and then edit the line later to fix the number
18:46:14 <ehird> Oh, how boring.
18:46:18 * ais523 used to have a BBC BASIC computer
18:46:47 <ehird> hmm, I'm sure it can be less than 7 lines
18:46:53 <ehird> although...nah
18:46:59 <ehird> well
18:47:14 <ais523> 30 C=1+SGN(A-B)
18:47:19 <ehird> 10 INPUT"GUESS THE NUMBER";B
18:47:19 <ehird> 20 IF B<INT(RND(1)*100) THEN 50
18:47:21 <ehird> 30 IF B>INT(RND(1)*100) THEN 60
18:47:23 <ehird> 40 PRINT"YOU WIN!":END
18:47:25 <ehird> 50 PRINT"TOO SMALL":GOTO 20
18:47:25 <ais523> 40 CASECON70,60,80
18:47:27 <ehird> 60 PRINT"TOO BIG":GOTO 20
18:47:29 <ehird> that works, but it pointless
18:47:31 <ehird> ais523: whaddafu
18:47:37 <ais523> ehird: same length, unfortunately
18:47:41 -!- Corun has joined.
18:47:44 <ais523> also, you need RND(0) not RND(1)
18:47:47 <ehird> oh, right
18:48:06 * ehird rewrites program in haskell to see how far programming has advanced
18:48:11 <ais523> also remember you're allowed lowercase in string literals
18:48:14 <ais523> that'll make the output look nicer
18:48:21 <ehird> SSH
18:48:22 <ehird> this is the 70s
18:48:27 <ehird> there is no such thing as lowercase
18:48:40 <ehird> lowercase hasn't been INVENTED yet
18:48:52 <ais523> the appendix to the ALGOL-68 standard stated an optional program file format for computers that allowed lowercas
18:48:53 <ais523> *lowercase
18:48:57 <ais523> so yes, it had been
18:49:10 <ais523> although apparently it wasn't in common enough use to assume all computers had it
18:50:05 <MizardX> And then came unicode.
18:50:11 <ehird> and RUINED EVERYTHING.
18:50:18 <ehird> anyway, I want my DRAW.
18:50:26 <ehird> I am ITCHY without DRAW.
18:50:59 <ehird> READ var1, var2, ...
18:50:59 <ehird> Reads data from DATA statements into variables. A pointer is maintained into the DATA values, which could be anywhere within the program. Values are read in order into the variables, and the pointer is advanced. A runtime error occurs if there are not enough DATA values to fill the variables. The DATA pointer can be reset using a RESTORE statement. Example: READ A$, B.
18:51:04 <ehird> wat
18:51:15 <ais523> ehird: you don't know of READ?
18:51:25 <ehird> I don't know what the heck it is on about
18:51:35 <ais523> here's an example
18:51:36 <ehird> DATA literal1, literal2, ...
18:51:36 <ehird> Has no effect when executed, but supplies data for the READ statement. Each value can be a string or floating-point literal (not an expression). Whitespace is ignored around values. Double quotes can be placed around a string to escape whitespace and commas between the quotes. DATA statements can occur on the same line as other statements, but, due to its special parsing rules, it must be the last statement on the line. The line on which the DATA stateme
18:51:39 <ais523> 10 READ A
18:51:40 <ehird> nt occurs can be used as the target of a RESTORE statement. Example: DATA January, 31, "Martian History Month".
18:51:43 <ehird> whyyyy
18:51:45 <ais523> 20 PRINT A
18:51:47 <ais523> 30 GOTO 10
18:51:53 <ais523> 40 DATA 1,2,3,4,5,6,7,8,9
18:51:54 <lament> martian history month!!!
18:52:00 <ehird> ais523: good lord, why?
18:52:00 <ais523> that prints all the numbers from 1 to 9, then errors
18:52:11 <ehird> beautiful... but... WHY
18:52:21 <ais523> ehird: well, you're hardly going to waste your precious 52 variables by using them to store data, are you?
18:52:29 <ehird> <33
18:52:42 <ais523> DATA effectively creates ROM
18:52:47 <ais523> that you can access via READ and RESTORE
18:52:58 -!- Corun has quit ("This computer has gone to sleep").
18:53:30 <MizardX> 10 RESTORE -10: READ A: PRINT A: GOTO 10
18:53:42 <ehird> http://drivey.com/DONKEYQB.BAS.html
18:53:48 <ehird> DONKEY.BAS is the prettiest program ever written.
18:53:53 <ais523> MizardX: RESTORE takes arguments? Wow, I never knew that
18:54:01 <ehird> Good luck writing DONKEY.BAS that concisely in modern languages
18:54:11 <ais523> that QB implies QBasic
18:54:12 <ais523> is it?
18:54:15 <ehird> Yes, it's a port
18:54:21 <ehird> but that presumably doesn't change all that much
18:54:47 -!- Corun has joined.
18:55:07 <ais523> ehird: that first line, translated to C, would be *(char*)106 = 0
18:55:15 <ais523> I hate to think what that was designed to do...
18:55:26 <ehird> eh, you know POKEs
18:55:31 <ehird> ais523: it'd be putting it into graphical mode
18:55:32 <ehird> probably
18:55:35 <ais523> ah, yes
18:55:43 <ais523> the only thing I ever used POKEs from was to turn caps lock on and off
18:55:55 <ais523> after a while I wised up and converted the input to uppercase/lowercase in my program instead
18:56:01 <ehird> with POKE, your days of 52 variables are long gone!
18:56:07 <ehird> er, and PEEK :P
18:56:12 * lament POKES ehird
18:56:28 <ehird> :o
18:56:33 <ehird> "Donkey .NET is a three-dimensional driving simulator game that demonstrates the new features available to Microsoft® Visual Basic® developers."
18:56:35 <ehird> http://www.microsoft.com/downloads/details.aspx?FamilyID=990d0ec1-23ea-4408-898d-1fd5727a8890&displaylang=en
18:56:41 <ehird> Donkey .NET is a three-dimensional driving simulator game that demonstrates the new features available to Microsoft® Visual Basic® developers. Written in Visual Basic .NET RTM, this sample uses XML Web services, multithreading, structured exception handling, shaped Windows Forms, and custom-drawn controls. The sample includes the setups for both the game application and an optional XML Web service used with the game. The setups will also install the so
18:56:44 <ehird> urce code.
18:56:46 <ais523> NO! Not Visual BASIC!
18:56:59 <ais523> also, .NET?
18:57:01 <ehird> Yes.
18:57:05 <ehird> Blasphemy of the highest degree.
18:57:07 <ais523> Visual BASIC was invented ages before .NET was
18:57:16 <ehird> visual basic is now VB.NET
18:57:29 <ais523> well, yes, the non-.NET versions aren't maintained
18:57:53 * ais523 thinks it's interesting that .NET is the bytecode format with the most widely-used languages targeting it
18:58:04 <ais523> most byte-compiled langs have their own bytecode
18:58:10 <ais523> but all the microsoft ones compile to .NET
18:58:32 <ehird> the microsoft folks endorse Mono semi-officially
18:58:33 <ehird> which is nice
18:58:40 <ehird> e.g. silverlight download page on linux, directs you to mono's Moonlight pag
18:58:41 <ehird> e
18:59:03 <ais523> Microsoft are currently at the stage of trying to get Silverlight generally accepted
18:59:12 <ehird> % vintbas /dev/stdin
18:59:12 <ehird> POKE 0,0
18:59:14 <ehird> !LINE NUMBERING ERROR IN RAW LINE 1, COLUMN 1
18:59:16 <ehird> UNEXPECTED "P"
18:59:18 <ehird> EXPECTING LINE NUMBER OR END OF FILE
18:59:18 <ais523> making people think it has good Linux support is one way to do that
18:59:20 <ehird> Useless.
18:59:28 <ais523> although interestingly, there doesn't seem to be a Mac version, or wasn't last I looked
18:59:39 <ehird> mono runs on os x
18:59:45 <ehird> dunno about plugins tho
18:59:45 <ais523> ah, I didn't know that
19:00:05 <ehird> hmm
19:00:05 <ais523> anyway, there are quite a few people who suspect that Mono has Microsoft patents in, and so to legally use it you have to download it from Novell
19:00:16 <ehird> I wonder if there's a portable QBasic interpreter
19:00:17 <ais523> no idea whether that one's true or not
19:00:28 <ais523> ehird: QBasic runs under DOSbox, I suspect
19:00:28 <ehird> (using a virtual heap, OFC, with traps on things like that 103)
19:00:37 <ehird> ais523: meh, I guess so
19:00:39 <ehird> it'd be nicer to have it to hand
19:01:04 <ais523> and there are so many peeks/pokes to literal addresses in typical programs you'd want a full DOS emulator
19:01:10 <ehird> Tru
19:01:10 <ehird> e
19:02:40 <ehird> http://boxerapp.com/ <-- Wow, someone made DOSBox all mac-like.
19:02:51 <ehird> Isn't that a bit pointless when the actual DOS inside will be very very DOS? :P
19:03:17 <Robdgreat> people are allowed to delude themselves
19:03:48 <Robdgreat> form over function, ALWAYS
19:04:20 <ais523> the DOS inside DOSBox isn't all that DOS-like, I find
19:04:24 <ais523> which is strange
19:04:26 <ehird> Robdgreat: Y'know, it's possible to have both.
19:04:33 <ais523> some of my old DOS programs don't run in it
19:04:49 <lament> it's for games, not for your old dos programs
19:04:54 <lament> it's for dune and xcom
19:04:55 <ehird> lament: Yeah, true.
19:05:08 <ais523> lament: but my programs were games
19:05:13 <ais523> admittedly, I wrote them
19:05:18 <ais523> but it doesn't prevent them being games
19:05:45 <Robdgreat> ehird: true, but I won't throw a hammer out just because it's not pretty enough
19:05:48 <lament> i'm guessing that dosbox is a fairly imperfect emulation
19:05:53 <ehird> Robdgreat: indeed
19:06:04 <lament> and when they want to improve it, they take some popular game they know doesn't run properly, and fix dosbox until the game runs
19:06:14 <ais523> what about running FreeDOS in a VM?
19:06:21 <ais523> that ought to work if the VM works properly
19:06:27 <lament> and their list of popular games might not actually include any games by ais523
19:06:45 <ehird> Aww, Boxer comes with ton sof DOS tols but not qbasic.
19:06:47 <ais523> never mind, I ported that game to Windows ages ago and it runs in WINE
19:07:03 <ais523> I'll probably port it to Allegro or SDL sometime
19:07:14 <ais523> then it'll run in Linux too, and probably on a Mac
19:07:21 <ehird> Huh, it comes with a bunch of games. Aren't they copyrighted...?
19:07:32 <ais523> not all DOS games are copyright
19:07:40 <ehird> one of them is Commander Keen 4
19:07:41 <ais523> and nearly all are abandonware, technically that's illegal but nobody but me seems to care
19:07:53 <lament> it's good you care
19:07:54 <ehird> also, abandonware is legal, it's just that most things aren't abandonware
19:08:16 <ais523> no, I thought the definition of abandonware was copyrighted stuff which was so old and worthless nobody could be bothered to enforce the copyright
19:09:02 <fizzie> Maybe it's the shareware version of Keen 4?
19:09:32 <ehird> it looks full
19:09:32 -!- Corun has quit ("Leaving").
19:09:41 <ehird> ais523: The sites claim it's games with expired copyright
19:09:49 <ehird> of which there are none in the US, as far as I know
19:09:56 <ehird> or, probably, the UK
19:10:14 <ehird> copyright is stupid anyway, it should expire way earlier
19:10:29 <ehird> none of this 2 to the power of the age of the author at death + 7 million years
19:10:34 <ais523> it is possible, I think, for there to be DOS games nowadays where the author died over 25 years ago
19:10:41 <ehird> hmm, true
19:10:43 <ehird> how many, though?
19:10:51 <ais523> not a lot, I suspect, most programmers are quite young
19:10:58 <ais523> but I suppose they might have died in an accident or something
19:11:14 <ehird> I suppose
19:11:19 <ehird> http://en.wikipedia.org/wiki/QBasic#Simple_game
19:11:19 <ehird> wow
19:11:21 <ehird> that sucks
19:11:26 <ehird> that's waaay longer than my version
19:11:36 <ehird> all theirs does is decease the range and put a cap on the guesses
19:11:37 <ehird> :P
19:11:42 <fizzie> I think it was rather complete; you just got episodes 5 and 6 when you boughteded it. Although I might remember wrongly.
19:11:52 <ehird> boughteded
19:12:15 <ehird> Okay, who has QBASIC.EXE?
19:12:45 <ais523> I used to have it, but I think it's bit-rotted to death by now
19:12:50 <fizzie> Google has it.
19:13:08 <ehird> Yes, well, I'm trying to google it, fizzie
19:13:12 <fizzie> I have dos 6.22 installation floppy images I dd'd once, I assume it would be there too.
19:13:18 <fizzie> http://www.winsite.com/bin/Info?4385 has a download link.
19:13:19 <ehird> http://www.velocityreviews.com/forums/t43803-does-xp-have-coding.html DOES XP HAVE CODING
19:13:29 <Robdgreat> I have it somewhere
19:13:31 * Robdgreat digs
19:13:38 <ais523> I believe at least one program has been written on Windows XP
19:13:53 <lament> i was enlightened when i managed to understand that the quick basic game with gorillas throwing bananas did not have bits of code for drawing a banada for every single position on the screen
19:13:55 <ais523> I certainly ported programs from Windows 95 to Windows XP
19:13:55 <ehird> wut, why does "copy con con" say con not found
19:13:59 <lament> *banana
19:14:01 <fizzie> it's con:
19:14:03 <ehird> lament: haha
19:14:03 <ais523> which is pretty worrying
19:14:04 <ehird> fizzie: o
19:14:10 <ais523> fizzie: that doesn't work either on DOSbox, IIRC
19:14:16 <ehird> fizzie: no u lie
19:14:18 <ais523> DOSbox is not a very good implementation of DOS
19:14:18 <ehird> ILLEGAL PATH
19:14:29 <fizzie> Hey.
19:14:31 <ehird> it doesn't even say illegal command or file name or murder
19:14:32 <ais523> ehird: it was originally CON: on the precursor to DOS
19:14:36 <ehird> it says Illegal command: blah.
19:14:41 <fizzie> zem.fi/~fis/qbasic.exe
19:14:42 <ais523> DOS changed it to CON.*
19:14:44 <ais523> including with no extension
19:14:52 <ais523> because back then, most programs had implied extensions
19:14:57 <fizzie> For some strange reason, qbasic.exe was uncompressed on the first install floppy of dos 6.21.
19:15:12 <ehird> http://www.winsite.com/bin/Info?4385 <-- this lacks .hlp
19:15:16 <ais523> I didn't even realise you could get dos 6 except bundled with Windows
19:15:33 <fizzie> Just about all other files are compressed with that funky scheme which makes .foo files into .fo_ files. Only attrib.exe, debug.exe, expand.exe and qbasic.exe are uncompressed.
19:15:36 <AnMaster> Deewiant: concerning raw FF, would "ignore it" mean "don't write anything, but go to next cell" or "don't even increment x"
19:16:16 <ehird> I wonder if you can buy QBASIC from microsofft
19:16:24 <ais523> or download it for free?
19:16:26 <fizzie> ehird: http://zem.fi/~fis/qbasic.hl_ has the hlp file, but you need expand.exe to uncompress it. :p
19:16:27 <ehird> *microsoft
19:16:34 <ehird> ais523: I doubt they would give anything away for free
19:16:48 <ais523> they gave away limited versions of VC++ for free
19:16:52 <ehird> well, yesy es
19:16:55 <ais523> and that's a lot more advanced than QBaisc
19:16:57 <ais523> *QBasic
19:16:58 <fizzie> Although you can download expand.exe too from http://zem.fi/~fis/expand.exe
19:17:07 <fizzie> There, that should be all to get qbasic.exe and qbasic.hlp out.
19:17:11 * ais523 ends up on microsoft.com far too often
19:17:12 <ehird> yay
19:17:24 * ehird attempts to configure Boxer to stretch the display WITHOUT antialiasing it badly
19:17:52 <ais523> "If you need to run QBasic in Windows 2000, you can copy it from a Microsoft Windows NT 4.0-based computer, or you can expand the files from a Windows NT 4.0 CD-ROM."
19:18:00 <ais523> wow, are microsoft advising people to violate their own licence?
19:18:16 <ehird> ha
19:19:39 <ais523> ehird: try http://download.microsoft.com/download/win95upg/tool_s/1.0/w95/en-us/olddos.exe
19:19:56 <ais523> I haven't looked myself, but allegedly qbasic is in there
19:20:16 <ehird> # "opengl" will use bilinear filtering when scaling (smoother but
19:20:18 <ehird> # fuzzier), while "openglnb" will preserve the original appearance
19:20:20 <ehird> # (which may result in odd stretching at certain resolutions.)
19:20:22 <ehird> aha
19:20:35 <ehird> Din't work :(
19:20:59 <Deewiant> AnMaster: I'd say don't even increment, since that's how Unefunge works
19:21:44 <AnMaster> Deewiant, right
19:22:11 <AnMaster> Deewiant, CCBI fails to handle it correctly
19:22:22 <Deewiant> Yep, probably
19:25:02 <ehird> hmm, boxer is actually quite nice
19:26:39 -!- ais523_sandbox has joined.
19:26:45 <ehird> Hmm.
19:26:51 <ais523_sandbox> sorry about that
19:26:52 <ehird> Where do executables go in DOS, generally?
19:26:54 <ehird> C:\, right?
19:27:02 <ais523_sandbox> ehird: a directory inside c:|
19:27:04 <ais523_sandbox> *c:\
19:27:07 <Deewiant> Wherever you want
19:27:08 <ais523_sandbox> named after the executable
19:27:13 <AnMaster> Deewiant, btw, CCBI never writes at a higher x coordinate than the edge of the initial loaded program
19:27:14 <ehird> ah
19:27:24 <AnMaster> Deewiant, while it does write at a higher y coordinate
19:27:29 <Deewiant> AnMaster: write?
19:27:38 <AnMaster> Deewiant, p or other way to update
19:27:47 <Deewiant> O_o
19:27:48 <AnMaster> Deewiant, that would cause bounds to change in y
19:28:09 <ais523_sandbox> incidentally, I'm inside the sandbox at the moment to see what olddos.exe does
19:28:16 <ais523_sandbox> it seems to have qbasic.exe in
19:28:20 <ais523_sandbox> and no licence agreement
19:28:33 <Deewiant> So are you saying that '5f0pf0g.@' doesn't work?
19:28:39 <Deewiant> Or what?
19:28:45 <AnMaster> Deewiant, so if the bounds are defined as {topleft{x,y},bottomright{x,y}} then you never write at x higher than x of bottomright
19:28:47 <ais523_sandbox> yay, it works
19:28:59 <ais523_sandbox> I now have what is AFAICT a legal copy of QBasic, direct from Microsoft
19:29:14 <ais523_sandbox> run olddos.exe in dosbox, rather than wine
19:29:17 <Deewiant> AnMaster: So what exactly doesn't work?
19:29:26 <Deewiant> Does the above work?
19:29:26 <ehird> ais523_sandbox: if they're offering it, my downloaded version is legal too
19:29:31 <ais523_sandbox> I suppose so
19:29:40 <AnMaster> Deewiant, well it works. Just you didn't test that
19:29:41 <ais523_sandbox> unless it's a different bit pattern in the version they're offering, or something
19:29:48 <ais523_sandbox> anyway, going back out of the sandbox
19:29:53 -!- ais523_sandbox has quit (Client Quit).
19:30:01 <Deewiant> AnMaster: So you meant to say 'Mycology' and not 'CCBI'
19:30:09 <AnMaster> Deewiant, ah yes
19:30:10 <AnMaster> typo
19:30:13 <AnMaster> (mental one)
19:30:16 <Deewiant> Phew, you had me worried there :-P
19:30:22 <fizzie> "The letters are like right next to each other."
19:30:24 <AnMaster> Deewiant, I mean, you test the value from y is correct before/after writing at -1,-1. But not writing outside in the other corner
19:30:37 <ehird> http://imgur.com/6AYNY.png <- The unparalleled elegance of the Mac OS X user interface.
19:30:40 <Deewiant> Yes, that can happen
19:31:08 <Deewiant> AnMaster: I've said it before, many times, and I'll say it once more now: combinatorial explosion of testcases means that I don't do everything that could be done
19:31:48 <ehird> There needs to be a way of copying text from DOS to outsid
19:31:49 <ehird> e
19:31:51 <ehird> :P
19:32:18 <AnMaster> Deewiant, internally cfunge doesn't store it as x,y,w,h, but x1,y1,x2,y2. It translates it for sysinfo. I mean it is an easy typo to write: if (x < minx) minx = x; else if (x > maxx) minx = x;
19:32:20 <AnMaster> or such
19:32:24 <pikhq> Works right in DOSemu on Linux. ;)
19:32:29 <fizzie> Apologies for the crudeness, but I just misread Deewiant's comment as "combinatorial explosion of testicles". That sounded painful.
19:32:34 -!- ais523 has quit (Remote closed the connection).
19:32:41 <ehird> pikhq: You can copy and paste text from QBasic to elsewhere?
19:32:48 <ehird> Impressive; howd oes it work?
19:33:06 <pikhq> How anything in X11 works: select and middle-click.
19:33:22 <ehird> Yes, but DOS isn't that simple.
19:33:23 <Deewiant> AnMaster: Yes, so I should test all 32 cases for p as well as i as well as for the various p-like instructions in fingerprints, right?
19:33:34 <ehird> I mean how does it work internally.
19:33:34 <AnMaster> 32 cases for p?
19:33:37 <fizzie> In a text video-mode, you can just read the screen buffer.
19:33:50 <pikhq> Ah. Yeah, it just reads the screen buffer...
19:33:55 <fizzie> It's interleaved [character, attributes, character, attributes, ...] list of bytes.
19:33:58 <ehird> Does QBasic run in text video mode? I'm not sure.
19:34:03 <AnMaster> Deewiant, what do you mean 32 cases of p?
19:34:04 <pikhq> Yes, it does.
19:34:05 -!- ais523 has joined.
19:34:07 <ehird> OK.
19:34:10 <AnMaster> wb ais523
19:34:12 <ais523> aargh
19:34:15 <AnMaster> eh?
19:34:19 <ais523> it seems there's something wrong with the user switcher atm
19:34:21 <ais523> I had to restart X
19:34:38 <Deewiant> AnMaster: Exaggeration; there are 9 cases
19:35:12 <pikhq> Just a matter of reading from (short *)0xB8000...
19:35:14 <AnMaster> Deewiant, you mean, in bounds, and various out of bounds ways?
19:35:19 <AnMaster> or what?
19:35:22 <Deewiant> Yep.
19:36:09 <AnMaster> Deewiant, well -1,-1 is much easier to get wrong indeed
19:36:25 <Deewiant> All that tests is that negative funge-space works
19:36:35 <Deewiant> I assume that people can get /positive/ funge-space to work...
19:36:44 <fizzie> ITYM "reading from b800:0000"; this is, after all, about DOS, so a segmented form of addressing is more appropriately crazy.
19:37:10 <ehird> Hmm, I wonder if you can get QBasic to "print" out its manual. To a PDF.
19:37:36 <ais523> DOS addresses are so weird
19:37:45 <AnMaster> Deewiant, just doing code coverage analysis is interesting. With mycology + custom test cases I aim to manage 100% coverage* in the core of cfunge. Fingerprints too in the long run, but core first.
19:37:47 <ehird> also, can you actuallty type b800:0000 in a DOS C file?
19:37:59 <ais523> it's 0xb8000000
19:38:05 <pikhq> Right, right; definitely b800.
19:38:11 <ais523> although you generally have to cast it to a long pointer
19:38:15 <pikhq> ehird: No, that's the assembly notation.
19:38:23 <ais523> (char far*)0xb8000000
19:38:25 <ehird> Ah.
19:38:31 <AnMaster> * 100% as defined by gcov and excluding any "fputs("The impossible happened. Internal error.\n", stderr); abort();"
19:38:37 <ais523> far isn't part of standard C, but is defined in any good DOS header file
19:38:41 <ais523> it works much the same way as const
19:38:42 <Deewiant> (char huge*)0xb800000
19:38:52 <pikhq> ais523: More useful to be (short far*)0xb8000000, I'm pretty sure.
19:39:01 <ais523> pikhq: short's only 16 bits
19:39:15 <pikhq> Yeah.
19:39:25 <AnMaster> Hm. What was the point of special "far pointers"?
19:39:31 <Deewiant> (void huge*) is somewhat amusing IMO
19:39:34 <fizzie> It's also funny that in a that sort of system, 0xb8000010 and 0xb8010000 point to the same place but aren't the same pointer.
19:39:37 <AnMaster> And why are they not used any longer in modern code.
19:39:52 <Deewiant> AnMaster: http://en.wikipedia.org/wiki/Far_pointer
19:39:59 <pikhq> AnMaster: A far pointer was a pointer outside of your current segment.
19:40:12 <AnMaster> ah right. Flat address space :)
19:40:14 <ais523> AnMaster: because having two lengths of pointers was common in DOS
19:40:14 <pikhq> They're not used because nobody, and I mean *nobody* uses segmented addresses.
19:40:29 <ais523> even with segmented addresses, they wouldn't be used nowadays because computers have lots of memory
19:40:35 <ais523> and so making all pointers far would work fine
19:41:22 <AnMaster> what about speed? I guess you could fit more non-far pointers in cache than far pointers?
19:41:34 <pikhq> It'd be very slightly inefficient making all pointers far.
19:41:50 <pikhq> You'd end up writing to cs every time you did a jump. ;)
19:41:55 <AnMaster> how large are far/non-far pointers on x86?
19:42:11 <ais523> AnMaster: far is 32 bits, near is 16 bits
19:42:14 <pikhq> Depends on your current execution mode.
19:42:20 <ais523> in real mode, at least
19:42:35 <ais523> which used to be the only one available, but nothing but bootloaders use it nowadays
19:42:59 <AnMaster> hm.
19:43:02 <ehird> Erm, how do you terminate a QBASIC program?
19:43:11 <pikhq> For protected 32-bit mode, double that...
19:43:24 <Azstal> ehird: Ctrl+Break
19:43:27 <pikhq> And for long mode, near is 64 bits and far doesn't exist.
19:43:36 <ehird> Where is break on the keyboard again? So I know what it's mapped to :P
19:43:37 <ais523> ehird: run off the end of the program
19:43:41 <ehird> ais523: no, while it's running
19:43:42 <Azstal> Pause
19:43:43 <ais523> oh, break's normally control-pause
19:43:51 <ehird> ... and pause is where? :P
19:43:56 <ehird> I pressed F16 and that paused the program
19:43:58 <Azstal> right of scroll lock :)
19:44:03 <ais523> near scroll-lock and sysrq, normally
19:44:06 <pikhq> ... F16?!?
19:44:06 <ehird> You guys hate me. :)
19:44:13 <ehird> pikhq: Apple keyboard.
19:44:14 <AnMaster> pikhq, well amd64 has several addressing modes in fact.
19:44:20 <AnMaster> though not near/far
19:44:26 <pikhq> AnMaster: Segmented is not one of them.
19:44:30 <ais523> AnMaster: there was huge as well as near and far
19:44:33 <ehird> pikhq: See http://www.purelygadgets.co.uk/images/user/products/Apple-keyboard.jpg
19:44:33 <fizzie> Wouldn't protected-mode far pointers (not that I've seen any) be 48-bit instead of 64-bit? I mean, there's the 16-bit selector and 32-bit address.
19:44:36 <ais523> huge is like far, but wraps properly
19:44:45 <pikhq> fizzie: 32-bit selector.
19:44:52 <ais523> e.g. with huge pointers, 0x3000ffff + 1 is 0x40000000
19:45:10 <Deewiant> ehird: No Num Lock?
19:45:11 <fizzie> Are you sure the selector has 32 bits? I mean, physically speaking. I'm sure it could have in a pointer.
19:45:18 <ehird> Deewiant: None. The numpad always numbers.
19:45:26 <ehird> Number is a verb, naturally.
19:45:27 <pikhq> The selector is a pointer to the start of the segment.
19:45:32 <AnMaster> pikhq, true. But then there are other things: RIP relative addressing, code model (small, medium, large and kernel)
19:45:40 <AnMaster> and various other things
19:45:57 <AnMaster> which IMO are about as strange.
19:46:14 <pikhq> AnMaster: Yeah, long mode is a bit strange.
19:46:20 <ehird> Erm, halp.
19:46:24 <ais523> ehird: looking at that keyboard, I'd say F16 is the pause/break key
19:46:29 <ehird> Right, f16 pauses
19:46:32 <ais523> as it's three keys to the right of f12
19:46:34 <AnMaster> pikhq, RIP relative *does* make sense though. Makes PIC code more efficient IIRC.
19:46:35 <Deewiant> But what is F13?
19:46:36 <ais523> what does control-f16 do?
19:46:36 <ehird> aha
19:46:38 <ehird> cmd-f16 pauses
19:46:42 <ais523> *f13
19:46:45 <ehird> Deewiant: It beeps. In my experience.
19:46:47 <ais523> and control not cmd
19:46:51 <Deewiant> ehird: How useful.
19:46:53 <lament> http://en.wikipedia.org/wiki/File:Sgapage.jpg
19:46:55 <ehird> F13 does nothing in boxr
19:46:57 <ehird> *boxer
19:47:10 <AnMaster> what is more interesting is that AMD64 actually has a 48 bit address space. Sign extended.
19:47:21 <ehird> Okay, I froze it.
19:47:26 <ehird> Now the program thing says "QBASIC PAUSE".
19:47:28 <AnMaster> with kernel living in the upper half, and user space in the lower.
19:47:37 <ais523> pressing any key other than pause normally restarts it
19:47:37 <AnMaster> so 48 bits, sign extended to 64 bits
19:47:44 <AnMaster> bbl
19:47:47 <ehird> Not this time, ais523, I think DOSBox is paused
19:47:53 <ais523> ah, ok
19:47:54 <pikhq> AnMaster: That's on current implementations.
19:48:25 * ehird reboots
19:49:38 <ehird> Strings can't be longer than 32767 chars.
19:49:56 <ehird> Arrays cannot be longer than 64KB
19:50:06 <ehird> Also, only 60 dimensions
19:50:14 <Azstal> I think even VB6 kept some of those restrictions
19:50:14 <ehird> Oh, and you can't address 64KB< only 32767
19:50:40 <ehird> Max path size 127 chars
19:52:20 <fizzie> Those aren't such terrible limits. In C99 you can only count on having 65535 bytes in an object, for example. Or 4095 characters in a string literal.
19:52:21 <pikhq> So, arrays can only be one segment, strings have a signed size_t, and the max path size is, as in DOS, 8-bit signed.
19:52:42 <fizzie> And 15 nesting levels of #include files, that's reasonably low too.
19:52:59 <fizzie> Not to mention the "127 arguments in a function call", that's a limit I hit all the time!
19:53:19 <pikhq> Thus, almost all of the limits of Qbasic are because it's a freaking 16-bit language.
19:53:46 <pikhq> (though why the size_t equivalent is *signed* is beyond me)
19:53:58 <ehird> For cyclexa
19:54:12 <pikhq> Ah, right.
19:54:25 <pikhq> Real mode = screwy.
19:54:39 <ais523> ehird: why did you just mention cyclexa?
19:54:43 <Azstal> Dim x(-10 to 10) as Integer
19:54:46 <ehird> ais523:
19:54:47 <ehird> 18:53 pikhq: (though why the size_t equivalent is *signed* is beyond me)
19:54:48 <ais523> that seems quite a non-sequitur
19:54:53 <ehird> neg strings
19:55:00 <fizzie> Besides, if I'm reading this right, C99 might only allow 12-dimensional arrays; "12 pointer, array, and function declarators (in any combinations) modifying an arithmetic -- type in a declaration".
19:55:12 <ehird> holy shit, accessing the variable INKEY$ actually gives a prompt
19:55:13 <ehird> that's fucked
19:55:38 <ais523> seriously, yes
19:55:52 <ehird> well, not a prompt
19:55:57 <ehird> but it puts it into hello i am listening to you mode
19:55:58 <fizzie> The C99 limits list has a nice introduction: "The implementation shall be able to translate at least one program that contains at least one instance of every one of the following limits:"
19:56:03 <fizzie> That's one ugly program.
19:56:36 <pikhq> fizzie: I'm pretty sure those C99 limits are the minimums an implementation must support.
19:57:02 <pikhq> I suspect that most C implementations are limited by what the architecture they're on will allow.
19:57:25 <fizzie> Sure, but it's still an ugly program that contains one instance of all the limits.
19:57:45 <fizzie> It will have 63 levels of conditional inclusion, blocks nested 127 levels deep, 1023 members in a structure and so on. 4095-character lines. 127 arguments in one macro invocation.
19:57:54 <fizzie> I wonder if someone's written one for compliance testing.
19:57:55 <pikhq> That's fugly.
19:58:31 <pikhq> Hmm. Does it specify anything for Unicode literals?
19:58:40 <ais523> fizzie: someone must have done, surely
19:58:50 <ais523> there's probably a 127-argument macro in boost somewhere, come to think of it
19:59:35 <AnMaster> <pikhq> AnMaster: That's on current implementations. <-- yes
19:59:45 <ehird> 10PRINTINKEY$:GOTO10
19:59:57 <ehird> Aw, you need a space.
19:59:58 <ehird> PRINT INKEY$
20:00:15 <AnMaster> pikhq, mine even says: "address sizes : 40 bits physical, 48 bits virtual". Not sure what that means.
20:00:19 <ehird> Oh well, 10 PRINT INKEY$: GOTO 10
20:00:22 <AnMaster> from /proc/cpuinfo
20:00:26 <ehird> Hm, that hangs.
20:00:33 <ehird> Oh of course.
20:00:35 <ehird> Make that INKEY$;
20:00:40 <ehird> Now how do I terminate...
20:00:50 <ais523> AnMaster: nowadays pointers used in applications nearly never correspond to the actual memory address in the RAM
20:00:51 <AnMaster> pikhq, a server I sshed to has: "address sizes : 48 bits physical, 48 bits virtual" though
20:00:53 <pikhq> AnMaster: Allows for up to 40 bits worth of physical RAM, and 48 bits worth of stuff mmapped.
20:00:59 <AnMaster> ais523, of course.
20:01:07 <AnMaster> ais523, I know what paged memory is...
20:01:08 <pikhq> ais523: That's because of paging, of course.
20:01:19 <ais523> AnMaster: so the pointer width of the RAM and the pointer width in executables need not be the same
20:01:32 <ehird> Agh.
20:01:35 <ehird> Must figure out how to terminate.
20:01:36 <pikhq> ais523: Except that the architecture itself demands it. ;)
20:01:54 <ais523> pikhq: well, the architecture demands 64 bits
20:02:04 <ais523> but the RAM is incapable of paying attention to all 64 bits
20:02:08 <AnMaster> ais523, well duh. And then there is 32-bit mode under 64-bit too.
20:02:12 <fizzie> Oo, this Xeon box says: address sizes : 36 bits physical, 48 bits virtual -- tiny tiny 36-bit thing.
20:02:14 <ais523> generally speaking, it'll pay attention to the top 1 bit, and the bottom n
20:02:15 <AnMaster> which is yet another thing
20:03:08 <pikhq> fizzie: Early Intel Xeons are the only ones restricted like that.
20:03:15 -!- oklofok has quit (Read error: 110 (Connection timed out)).
20:04:19 <AnMaster> hm My mobo only supports 8 GB RAM though according to the manual. So I guess the "40 bits" is in the CPU, since the mobo limit is even lower.
20:04:25 <ehird> Greh, I can't get this to terminate.
20:04:37 <AnMaster> Btw, 8 GB ram on this would require 2 x 4 GB RAM sticks
20:04:42 <AnMaster> since there are only two slots
20:04:42 <ehird> Agh, DOSBox paused.
20:04:45 <ehird> How do I undo that..
20:04:46 <pikhq> That's a function of the system bus, I'm pretty sure.
20:05:02 <pikhq> And/or the memory bus.
20:06:46 <ehird> Geee.
20:06:47 <ehird> er.
20:06:48 <ehird> Grrrrr.
20:11:35 <pikhq> You know, the news has become hard to tell apart from satire...
20:11:48 <ehird> " 'This example requires a color graphics adapter. "
20:11:51 <ehird> Duuuude, I can't afford that.
20:11:52 <ehird> :(
20:12:13 <pikhq> Recently, a court ruled that the statement in a libel case being *true* is not a defense.
20:12:21 <ehird> hahahaa
20:12:30 <ehird> USA, I assum
20:12:30 <ehird> e
20:12:34 <pikhq> Yeah.
20:12:42 <pikhq> What other country would be *that* insane?
20:12:43 <lament> pikhq: lol?
20:12:50 <lament> what's a valid defense then?
20:13:01 <pikhq> The statement not being malicious.
20:13:04 <pikhq> That's *it*.
20:13:11 <ais523> ehird: it's hard to find a CGA graphics card nowadays...
20:13:17 <ais523> I wonder if modern cards can emulate it?
20:13:34 <ehird> Whoa. I just drew a fuckin' CGA triangle.
20:13:36 <ehird> Hardcore shit.
20:14:02 <ais523> drawing filled triangles was actually hardware-accelerated on the BBC Basic
20:14:09 <ehird> SCREEN 1
20:14:15 <pikhq> ais523: VGA is a superset of CGA.
20:14:17 <ehird> DRAW "C2F60L120E60BD30P1,2C3"
20:14:20 <ehird> FUCK YEAH
20:14:24 <fizzie> ais523: How many million triangles it could fill in a second?
20:14:34 <ais523> fizzie: probably about 0.00001
20:14:45 <ais523> just because it was accelerated didn't mean it was fast
20:14:48 <ehird> hmm
20:14:53 <ais523> you could see the triangle fill if you watched really closely
20:14:56 <ehird> so, if you made most of your graphics as compositions of triangles
20:15:01 <ehird> your game would be faster? :D
20:15:03 <ais523> but it was a lot faster than doing it any other way
20:15:15 <ais523> ehird: yep, traditionally quadrilaterals were filled by filling two triangles
20:15:41 <fizzie> That's surprisingly modern, given that triangles is what they draw nowadays too.
20:16:15 <ehird> Today on synchronicity, a friend just told me he's watching look around you because apparently it's good.
20:16:38 <ehird> Now more QBasic.
20:17:02 <ehird> Omg.
20:17:05 <ehird> Look up the command "WAIT".
20:17:06 <ehird> It's select()!
20:17:50 <ais523> what does QBasic get its multiple input sources from?
20:17:54 <ehird> Ports
20:19:28 <fizzie> If you don't use the HGA monochrome modes, you can use the 0xb0000-0xb7fff address range (in-between VGA's 0xa0000-0xaffff and the cga-compatible/color text mode 0xb8000-0xbffff) to other uses; for example with emm386.exe specifier like I=B000-B7FF.
20:19:58 <ehird> PLAY "L64ABCDEFGFEDCBA" ;BLEEPYEAOW
20:20:02 <ehird> err
20:20:04 <ehird> PLAY "L64ABCDEFGFEDCBA" 'BLEEPYEAOW
20:21:38 <ehird> Huh, ? expands to PRINT>
20:25:07 <fizzie> I do have the quickbasic 4.5 compiler somewhere too, but that's not a legal thing to share. I'm pretty sure I don't even have it legalley.
20:25:45 <ehird> a song:
20:25:48 <ehird> N = 64
20:26:02 <ehird> DO: PLAY "L"+STR$(N)+"ABCDEFGFEDCBA": N=N-1: LOOP WHILE INKEY$=""
20:28:53 <ehird> What the fuck
20:28:57 <ehird> you can get qbasic to CHECK TYPES
20:31:03 <ehird> I am playing DONKEY.BAS.
20:31:07 <ehird> I like the sfx.
20:32:29 <fizzie> I just received an email. There's a single part made out of ascii text, but it was sent with Content-Type "application/x-" so my mail client was a bit confused about it.
20:32:48 <ehird> Huh, ais523?
20:32:58 <ehird> It works if you comment out the DEF SEG : POKE 106,0 line
20:33:23 <ais523> fizzie: that's a great content-type
20:35:08 * ehird cheats DONKEY.BAS
20:35:14 <ehird> by making the donkey always go in the second lane
20:35:20 <ehird> also, I think this actually checked collisions by if the pixels hit
20:35:23 <ehird> instead of keeping track...
20:36:09 -!- comex has changed nick to judicaster.
20:36:30 <fizzie> It's funny how the qbasic help file has code examples with inline asm: http://zem.fi/~fis/code.txt
20:36:47 <ehird> Hey, you have a text copy? Gimme, I can't stand this interactive one :P
20:36:49 <ehird> also, that's awesome
20:36:53 <ehird> so, so awesome
20:37:05 <ais523> fizzie: I thought it was inline machine code
20:37:15 <fizzie> Okay, the inline asm is just a comment.
20:38:55 * ehird invents DONKEY.BAS variant:
20:38:58 <ehird> Invisible Donkey.BAS
20:39:00 <ehird> The donkeys are invisible.
20:39:12 <fizzie> And, well, I decoded the hlp file with HELPMAKE, but the end result still has quite a lot of markup left: http://zem.fi/~fis/qh3.txt
20:39:31 <fizzie> That one was converted through iconv -f cp437 -t utf-8, so the line-drawing characters are partially correct.
20:39:42 <ehird> fizzie: It's not the F1 so it works for me!
20:41:00 <ehird> How to have INVISIBLE DONKEY.BAS:
20:41:04 <ehird> Comment out line 81
20:41:08 <fizzie> All links seem to be formatted with ^Qfoo^P, and then there are .commands and :commands on a few lines, but other than that it's quite plaintext. The non-plaintext decoding output was all: \i^Q\a\pContents\v@L8002\v\i^P\p \i^Q\a\pIndex\v@L80b6\v\i^P\p \i^Q\a\pBack\v!B\v\i^P\p
20:42:06 <fizzie> On the other hand, in that format you could then search for "context @L80b6" to find the linked-to thing. It's a tradeoff.
20:42:34 <fizzie> Maybe I should write a Perl script to convert that to HTML.
20:42:44 <ehird> That would be fairly easy
20:42:49 <ehird> If you don't do it i will :P
20:42:50 <fizzie> It doesn't seem to be an especially difficult format after that helpmake.
20:43:28 <fizzie> Maybe I'll do it.
20:44:41 <fizzie> But you might have to wait some hours; I'm the slow.
20:46:41 -!- kar8nga has joined.
20:49:56 <ehird> Hmm, you can't SLEEP for less than a second without PLAY, I think.
20:49:56 <ehird> brb->
20:50:08 <ehird> Oh, TIMER
20:52:55 <ais523> ehird: you can do it by polling timer in a loop, I always used to
20:52:57 <ais523> but that's a busywait
20:53:05 -!- jix_ has quit ("...").
20:53:10 <ais523> also, note that a SLEEP ends if someone presses any key, including shift or control
20:59:32 <Judofyr> any smart guys here knows anything about A* and UCS?
20:59:47 <ais523> Judofyr: A* as in the search algorithm?
20:59:51 <Judofyr> yep
21:00:10 <ais523> I've used it before, sort of
21:00:13 <ais523> but am not an expert on it
21:00:18 <Deewiant> I've even coded it
21:00:19 <ais523> and I don't know of UCS
21:00:21 <Deewiant> Though poorly
21:00:32 <Deewiant> UCS is the Universal Character Set
21:00:59 <ais523> oh, as in UCS-2
21:01:05 <Judofyr> Uniform-cost search :-)
21:01:09 <Deewiant> D'oh
21:01:18 <Judofyr> I guess it's a stupid question, but will A* and UCS always return the same shortest path?
21:01:38 <Judofyr> (when you trace the route back again)
21:01:40 <Deewiant> Probably not
21:02:12 <Deewiant> If there's more than one shortest path, the chosen one depends on the heuristic you use
21:02:43 -!- ais523 has changed nick to CallForJudgement.
21:02:52 <Judofyr> but if there's only one, both of them will find it?
21:02:59 <Judofyr> but A* will probably find it faster?
21:03:01 <Deewiant> Sure
21:03:06 <Deewiant> Well, depends on your heuristic again :-P
21:03:11 <Judofyr> yeah
21:03:17 <Judofyr> I've just followed a crappy assignment one of my friend got
21:03:56 <Judofyr> so I'm not very steady on this :P
21:04:13 <Judofyr> but it's quite fun
21:04:18 <Judofyr> doing it in Scheme :O
21:21:40 <fizzie> ehird: I did at least most of the conversion: http://zem.fi/~fis/qb.html
21:22:03 <fizzie> Hm, there's an unterminated <em> somewhere, I think.
21:22:09 <fizzie> Don't look at it yet. :p
21:24:07 <judicaster> http://www.haskell.org/pipermail/haskell-cafe/2009-March/057590.html
21:24:19 <judicaster> This is my first public release of open source software. I have been working on this project since 2003.
21:24:25 <judicaster> "
21:24:36 <fizzie> Yes. It's because the source file interleaves things. A pure translation would look like <em>foo<a ...>bar</em>baz</a>. It's horrid.
21:24:59 <judicaster> % wc -l `find` 2>&1 | grep total
21:25:01 <judicaster> 4496 total
21:25:05 <judicaster> since 2003? really?
21:27:50 * Sgeo imagines it might have been on and off, like PSOX but worse
21:28:16 * Sgeo likes randomly mentioning PSOX.
21:32:08 <ehird> hi Judofyr
21:32:09 <ehird> err
21:32:11 <ehird> judicaster:
21:32:13 <ehird> you new? :)
21:32:22 <Judofyr> hi ehird :-)
21:32:26 <ehird> :)
21:32:33 <Judofyr> how's it going?
21:32:46 <CallForJudgement> ehird: are you new here?
21:33:03 <ehird> 20:04 Judofyr: doing it in Scheme :O <-- nice
21:33:07 <ehird> CallForJudgement: erm, no :P
21:33:17 <Judofyr> CallForJudgement: are you new here?
21:33:35 <ehird> fizzie: that thing doesn't link function names etc :(
21:33:38 <CallForJudgement> Judofyr: I'm older than judicaster, anyway
21:33:38 <judicaster> Judofyr: are you new here?
21:33:49 <ehird> oh, judicaster is comex.
21:33:52 <Judofyr> I've actually bough SICP and The Little Schemer :D
21:33:57 <CallForJudgement> also, I haven't seen estoppel around here recently
21:33:58 <ehird> the little schemer is great
21:34:19 <Judofyr> judicaster: just idling for some months...
21:36:10 <fizzie> ehird: I told you not to look, didn't I.
21:36:17 <ehird> fizzie: sry :<
21:36:21 <ehird> so anyway, Hoefler Text is awesome, did I mention that?
21:36:59 <ehird> also
21:37:03 <ehird> wtf on a pogo stick
21:37:05 <ehird> mactex
21:37:06 <ehird> is
21:37:07 <ehird> 1.2GB
21:37:11 <ehird> and that's ZIPPED
21:37:15 <ehird> the zipped installer
21:37:28 <ehird> I DON'T KNOW IF YOU NOTICED BUT I DO NOT THINK THAT REQUIRES 1.2GB
21:38:00 <pikhq> What the fuck?
21:38:16 <fizzie> Okay, now the "unterminated <em>" problem is fixed in that qb.html.
21:38:23 <ehird> pikhq: Yeah, totally
21:38:42 <fizzie> What else did you want? Does the original thing hyperlink function names, or was there just "look up function name under cursor" thing?
21:38:49 <pikhq> For some inexplicable reason, MacTeX includes a number of GUI applications in addition to TeX Live.
21:38:54 <pikhq> And Ghostscript...
21:39:07 <ehird> fizzie: It was just the latter, but grepping for functions/commands and linking each occurance can't be hard
21:39:08 <AnMaster> Deewiant, there?
21:39:19 <ehird> pikhq: But 1.2GB?
21:39:21 <fizzie> If I can find a sensible table of the names in there.
21:39:26 <ehird> My grandmother isn't 1.2GB.
21:39:27 <ehird> Er.
21:39:43 <pikhq> ... Didn't OS X include Ghostscript as part of its CUPS implementation, anyways?
21:39:48 <Deewiant> AnMaster: aye
21:39:48 <ehird> fizzie: <h1>FOO Statement/Function</h1>
21:39:49 <AnMaster> Deewiant, one thing you actually may want to test is UDP (SOCK_DGRAM) in SOCK. It seems like something that would actually be fairly important.
21:40:03 <ehird> also FOO, BAR Statements/Functions
21:40:03 <Deewiant> Not really IMO.
21:40:14 <ehird> then just link all UPPER CASE OCCURENCES
21:40:18 <Deewiant> I mean, unless you're writing your own stack, there's not much to deal with.
21:40:25 <Deewiant> Since it's all just frontends to other functions basically
21:40:43 <AnMaster> Deewiant, well it works differently than TCP. For example accept() doesn't make sense. And so on.
21:40:45 <fizzie> Yes, I'll do something like that. Except that I have to do two passes then, now it's output-as-it-comes-in.
21:41:07 <ehird> Just make two scripts
21:41:07 <ehird> :P
21:41:10 <Deewiant> AnMaster: But is there any code overhead in dealing with UDP specially?
21:41:28 <Deewiant> I mean, there might be, I don't know jack about network programming
21:42:32 <AnMaster> Deewiant, a bit iirc, but since SOCK is defined to support it... I see I treat it specially in S but don't see any other special casing for it.
21:43:17 <Deewiant> My point is that unless it requires special code paths in the implementation it's probably not worth testing, especially since SOCK has a billion options to look for
21:43:28 <Deewiant> AnMaster: Hell, I even say at the beginning of SOCK that I'm only testing one thing...
21:44:02 <AnMaster> Deewiant, heh
21:44:09 <fizzie> It's not so completely trivial, there's things like "RANDOMIZE Statement, RND Function". On the other hand, the function index has better-looking links.
21:44:47 <fizzie> I'm not going to distinguish between "KEY (Assignment) Statement" and "KEY (Event Trapping) Statement", though.
21:44:52 <ehird> Guys, do you want to be in:
21:45:07 <ehird> Anivers, Diavlo, Fertigo Pro, Fontin, Fontin Sans, Tallys, or Hoefler Text
21:45:10 <ehird> (In my IRC client.)
21:45:18 <AnMaster> Deewiant, I just looked at my STRN. Wonder why G checks the funge space bounds rect....
21:45:18 <ehird> Pick one and only one. :P
21:46:17 <Azstal> AnMaster: because otherwise it can infinite loop
21:46:27 <ehird> Hi, you're all in Fontin Sans 14pt.
21:46:38 <AnMaster> Azstal, I don't see any wrapping code there though... *looks again*
21:47:15 <AnMaster> oh wait right. if the entire line is all spaces
21:47:39 <ehird> http://imgur.com/6CED2.png
21:48:15 <Azstal> I think it's actually valid behaviour to infinitely loop in that case, but mycology kind of depends on it not doing that.
21:48:22 <AnMaster> Azstal, it could still happen. just write something to xmax,ymax, and to xmin,ymin. So bounds are entire funge space.
21:48:40 <AnMaster> Azstal, well report it as a mycology bug to Deewiant
21:49:03 <ehird> Via email!
21:49:06 <Deewiant> I know, I know, it's on my todo list to remove it
21:49:10 <ehird> (Deewiant: DON'T LISTEN)
21:49:19 <ehird> (WE ARE DISCUSSING PRIVATE MATTERS)
21:49:19 <Deewiant> It's one of those mycology_opinionated.b98 things
21:49:40 <AnMaster> ehird, why do you have a bar code in the scrollbar...
21:49:52 <ehird> AnMaster: Times when I have been highlighted.
21:49:58 <AnMaster> ah
21:50:05 <AnMaster> nice feature
21:50:27 <Judofyr> ehird: nice. could you send me the theme?
21:50:35 <ehird> Judofyr: http://julianstahnke.com/read/a_theme_for_limechat_colloquial/
21:50:37 <ehird> Tada :-)
21:50:56 <ehird> Hmm, :-) doesn't look too hot in Fontin Sans.
21:51:22 <ehird> Judofyr: (BTW, I removed the bottom log by resizing it small ;))
21:51:33 <AnMaster> Why to not use variable width on IRC: /msg nickserv help
21:51:43 <Judofyr> ehird: yeah, but you are just in #esoteric :P
21:51:44 <AnMaster> see the nice aligned table?
21:51:51 <ehird> Judofyr: tru :P
21:51:53 <AnMaster> if yes: congrats on using monospace
21:51:55 <AnMaster> ehird, ^
21:52:03 <ehird> AnMaster: Yes, because I bring up that help screen daily and its nice alignment is vital—above everything else.
21:52:13 <Judofyr> brb
21:52:14 -!- Judofyr has quit ("raise Hand, 'wave'").
21:52:16 <ehird> Despite being readable even when not aligned.
21:52:28 -!- Judofyr has joined.
21:52:48 <ehird> AnMaster: http://imgur.com/6CGOE.png
21:52:50 <ehird> Looks fine to me.
21:53:32 <ehird> wow, OS X has wikipedia built in
21:53:41 <AnMaster> ehird, it looks way better aligned: http://paste.lisp.org/display/76982
21:53:42 <ehird> I'm not exaggerating in any way at all
21:53:49 <ehird> AnMaster: I don't really care...
21:53:55 <AnMaster> k
21:54:05 <ehird> (Open Dictionary, click "Wikipedia", enter search term. Voila.)
21:54:08 <ehird> It even handles the infoboxes
21:54:18 <ehird> ... and user pages
21:56:31 <fizzie> ehird: Now it generates hyperlinks. It's still not perfect (FOR...NEXT and things like that is not handled) but it's closer, anyway.
21:56:38 <ehird> Woo!
21:57:00 <ehird> erm
21:57:00 <ehird> fizzie:
21:57:02 <ehird> it's repeated
21:57:04 <ehird> first without monospace
21:57:05 <ehird> then with
21:57:19 <fizzie> I don't see that.
21:57:29 <ehird> <a name="QEw4MTZk"></a>
21:57:29 <ehird> <h1>Type more than 65535 bytes</h1>
21:57:31 <ehird> <p>
21:57:33 <ehird> A user-defined data type cannot exceed 64K.
21:57:35 <ehird> </p>
21:57:37 <ehird> <html>
21:57:39 <ehird> <head>
21:57:41 <ehird> <title>qbasic help</title>
21:57:43 <ehird> <style type="text/css">
21:57:45 <ehird> p { font-family: monospace; white-space: pre; }
21:57:47 <ehird> a.extra { text-decoration: none; }
21:57:49 <ehird> a.extra:hover { text-decoration: underline; }
21:57:51 <ehird> </style>
21:57:53 <ehird> I do.
21:58:13 <fizzie> Hmm.
21:58:14 <fizzie> Oh.
21:58:17 <fizzie> Right, whoops.
21:58:39 <fizzie> There, now it's better.
21:58:56 <fizzie> I had my extra-linkifying loop print it out instead of modifying the @array, so there were two copies.
21:59:01 <ehird> Programming task Keywords included in this list
21:59:01 <ehird> ═════════════════════════════════ ═══════════════════════════════════════
21:59:05 <ehird> is that space a bug?
21:59:13 <ehird> BASICA Statement QBasic Equivalent
21:59:13 <ehird> ══════════════════ ═══════════════════════════════
21:59:16 <ehird> ah
21:59:18 <ehird> just misaligned
21:59:22 <ehird> maybe you should replace ═ with =
21:59:26 <ehird> and ─ with -
21:59:40 <AnMaster> Deewiant, possible mycology bug in TIME: It doesn't seem to check day of year with anything but local time. That could differ between local and utc output.
21:59:44 <ehird> BTW, GET and PUT aren't linked fizzie
21:59:57 <AnMaster> Also I may be reading the branch profiling info wrong. But this *does* seem to be the case.
22:00:16 <fizzie> Er, it aligns just fine, otherwise that QBasic Equivalent "underline" wouldn't start at the right spot.
22:00:24 <Deewiant> AnMaster: Not really a bug.
22:00:31 <Deewiant> I mean, it doesn't check it in any case.
22:00:33 <ehird> fizzie: It does not for me.
22:00:34 <Deewiant> It just outputs it.
22:00:49 <fizzie> Oh. Well, then your "monospace" font isn't very monospace.
22:00:57 <ehird> No unicode monospace font is.
22:00:58 <fizzie> It aligns just fine in your IRC-paste too. :p
22:01:02 <ehird> I know this because I wanted one once.
22:01:12 <AnMaster> Deewiant, well right. But the output will be wrong when UTC and local time are on different dates
22:01:16 <ehird> TBH,
22:01:38 <fizzie> Anyway, GET and PUT aren't linked because they're in the index twice, "GET (File I/O) Statement" and "GET (Graphics) Statement" and I can't know which one to link.
22:01:39 <Deewiant> AnMaster: true true
22:01:57 <ehird> fizzie: you could output a disambig
22:02:03 <ehird> i.e., you click it and get to a "DID YOU MEAN..."
22:02:09 <fizzie> Yes, right, sure.
22:02:11 <fizzie> You can do that. :p
22:02:20 <ehird> Sure, gimme the source code & source file :P
22:02:23 <Judofyr> ehird: meh, I prefer the "Spring Night" theme...
22:02:49 <ehird> Judofyr: but black windows are ugly in OS X (due to window borders) :P
22:03:00 <fizzie> ehird: http://zem.fi/~fis/convert.pl and source.txt. Going away for a while, have fun with it.
22:03:04 <ehird> Yay.
22:03:10 <ehird> Bye
22:03:59 <Judofyr> my Adium is black too...
22:05:13 <Deewiant> Hmm, is there any particular reason why ELF files have read-only data sections? Why not have constants where the executable code is?
22:06:02 <Deewiant> Or, I guess executable formats in general
22:06:34 <fizzie> Not every architecture can really comfortably address that place, that might be one reason. The possibility for making data non-executable might be other.
22:06:45 <ehird> grr
22:06:48 <ehird> how do you tell perl a file is in utf-8?
22:06:51 <ehird> source file
22:07:03 <Deewiant> It just seems like it'd be a filesize optimization to leave out the extra headers
22:07:04 <fizzie> "use utf8;" or something like that.
22:07:31 <ehird> I wouldn't use it if I could figure out the codepoint of these chars :P
22:07:39 <Deewiant> I mean, I guess the compiler should be reasonably sure that the code it generated won't accidentally jump into the data parts :-P
22:08:09 <fizzie> Deewiant: You could just instruct your compiler to put all the constants in the .text section.
22:08:39 <fizzie> I mean, you don't actually have to have more than one section in an ELF file, I guess.
22:08:44 <ehird> # transform links... we shunt commands outside links for maximum sillitude...
22:08:46 <ehird> an impressive comment
22:09:00 <Deewiant> fizzie: Which is why I'm wondering why compilers make multiple sections at all
22:09:31 <fizzie> Deewiant: Because architectures have more than one kind of memory, and/or they want to set access flags separately for different stuff.
22:10:20 <Deewiant> fizzie: And my point is, the compiler knows the architecture, so it should know in the case of x86 that it doesn't matter, and it knows the code it generated so it can ignore access flags
22:10:21 <fizzie> I mean, take some Harvard architecture machine, it has completely separate code and data memories.
22:10:34 <fizzie> Well, *that* might be just historical inertia.
22:10:42 <Deewiant> But if you're compiling an x86 binary it won't run on a Harvard architecture machine. :-P
22:11:12 <Deewiant> One thing that came to mind is that due to linkers and no full-program analysis, I guess it actually doesn't know for sure what code is in the final program
22:11:23 <fizzie> If you're compiling C, you can't really be sure you won't jump into your read-only data at some point, and it might therefore be prudent to keep it non-executable.
22:11:24 <ehird> /NOHI] [[/<a class="extra" href="#QEw4MDk0">RUN</a>] sou
22:11:25 <Deewiant> Which is why it sets the sections to non-executable for safety
22:11:26 * ehird tries to fix
22:12:03 <CallForJudgement> it's certainly possible to compile C into Harvard architecture machines
22:12:12 <CallForJudgement> gcc-bf's Harvard architecture, for instance
22:12:24 <fizzie> Yes, I don't think anyone was questioning that.
22:13:26 <ehird> hmm
22:13:30 <ehird> how do you say not in perl regexps?
22:13:32 <ehird> (?!foo)?
22:13:58 <fizzie> That's a negative look-ahead thing, yes.
22:14:16 <CallForJudgement> ehird: let me find an example, you can do it Prolog-style
22:14:18 <ehird> Doesn't seem to work, unfortunately
22:14:26 <ehird> $line =~ s/\b(?!\/)([A-Z\$]+)/extralink($1)/ge
22:14:26 <ehird> unless $line =~ /<a/;
22:14:38 <AnMaster> <fizzie> I mean, you don't actually have to have more than one section in an ELF file, I guess. <-- Hm I think you will need more than one in fact..
22:14:38 <CallForJudgement> (*COMMIT)(*F)| at the end of the regex works
22:14:48 <AnMaster> yes
22:14:49 <CallForJudgement> it's like the prolog definition of not, almost exactly
22:14:51 <ehird> I'm basically trying to say "that, but not with a / in front"
22:14:52 <AnMaster> fizzie, at least 2
22:15:03 <AnMaster> since first section must be a NULL one
22:15:03 <CallForJudgement> ehird: oh, that's negative look/behind/ you need
22:15:10 <AnMaster> according to spec
22:15:11 <ehird> well, it's "not" to me :P
22:15:13 <ehird> "not a /"
22:15:19 <AnMaster> I guess NULL and .text might work
22:15:26 <CallForJudgement> ehird: there's more than one sort of not in a regex
22:15:32 <CallForJudgement> [^/]foo almost works
22:15:42 <CallForJudgement> that's "foo preceded by a character that is not a /"
22:15:55 <CallForJudgement> but that doesn't allow for a foo at the beginning of the string
22:16:16 <AnMaster> not sure though
22:16:23 <FireyFly> ^[^/]?foo
22:16:26 <FireyFly> Should work alright?
22:16:38 <ehird> hm, yes
22:16:42 <ehird> wait, no
22:16:44 <ehird> that allows for /
22:16:47 <ehird> I think
22:16:48 <ehird> hm, nope
22:16:57 <ehird> Well.
22:16:59 <ehird> That breaks things.
22:17:00 <fizzie> AnMaster: Are you sure? The canonical http://www.muppetlabs.com/~breadbox/software/tiny/teensy.html has 1 in the shnum field.
22:17:02 <ehird> So I guess no,
22:17:19 <ehird> fizzie: that isn't a valid ELF file
22:17:22 <ehird> it relies on linux's handling
22:17:23 <ehird> as they said
22:17:44 <AnMaster> fizzie, I'm pretty sure. I remember reading some mail about it on the gnu binutils mailing list.
22:19:04 <AnMaster> fizzie, anyway without separate data section you need to allocate any read-write vars on stack or heap
22:19:22 <fizzie> Yes, I think Deewiant was just complaining about .rodata.
22:19:32 <fizzie> So what's that null section about, then? I mean, it's not anything objdump shows, no?
22:20:30 <fizzie> Apparently not, but readelf lists it. Anyway, why is it there?
22:21:40 <AnMaster> anyway .rodata is useful for NX
22:22:03 <Deewiant> AnMaster: I question how that is 'useful'
22:22:03 <AnMaster> fizzie, as for why: all I remember was that specs required it
22:22:23 <AnMaster> Deewiant, um? You suggest NX is useless?
22:22:27 <fizzie> ehird: Oh, and (fixed-width-only) negative lookbehind is (?<!...) so /\b(?<!\/).../ should do it.
22:22:34 <ehird> yay
22:22:42 <AnMaster> Deewiant, is that what you are saying?
22:22:51 <Deewiant> AnMaster: I think so, yes
22:23:01 <AnMaster> Deewiant, why do you think NX is useless?
22:23:06 <ehird> hmm
22:23:13 <ehird> I can't see where it finds duplicate entries and discards them, fizzie
22:23:25 <Deewiant> AnMaster: How is it useful for statically linked executables?
22:23:36 <ehird> Ooh, you don't link multi word names
22:23:37 <ehird> like DEF SEG
22:23:38 * ehird hacx
22:23:40 <fizzie> ehird: It doesn't.
22:23:52 <ehird> hmm, actually, solving this may be difficult
22:24:01 <fizzie> Yes, that's why I didn't do it. :p
22:24:02 <ehird> since it only works on one word
22:24:13 <ehird> I could make it generate a lookup tabl
22:24:13 <ehird> e
22:25:06 <fizzie> I guess you can match "all consecutive uppercase words" and hope it doesn't chomp too much, then maybe try the shorter combinations or something. It doesn't sound very pleasant, though.
22:25:08 -!- psygnisfive has quit (Remote closed the connection).
22:25:15 <AnMaster> Deewiant, NX in general is useful to limit damage of various exploits, like buffer overflows. Sure: it can only happen due to bugs in the code. But there will always be bugs. NX makes it program crash instead of allowing remote execution of arbitrary code.
22:25:23 <AnMaster> I fail to see how it is useless. For any binary.
22:25:29 <fizzie> Alternatively you could just generate the index and do a client-side scripting hack for the "find this keyword" thing.
22:25:37 <Deewiant> Yeah, exactly, it's a bug catcher.
22:26:17 <Deewiant> So it is, in and of itself, essentially useless; it has no additional value beyond counteracting stuff you've messed up elsewhere
22:26:30 <AnMaster> Deewiant, yes, but there will always be bugs. + Does a few wasted bytes help? If you really need those (embedded system or whatever): Use a custom linker script
22:26:42 <AnMaster> the linux kernel does that, for some variables that is needed early on boot iirc
22:26:59 <Deewiant> I'm just wondering
22:27:14 <fizzie> I do that, in my (Nintendo) DS compilation environment. :p
22:29:28 <AnMaster> Deewiant, Shouldn't you make memory page at 0 readable, writable and executable then? It would be useful. Having it non-accessible is just a bug catching thing
22:29:30 <AnMaster> :P
22:29:38 <fizzie> Given that the output file is a flat binary, it might not really count, since it's not like I can put things in multiple sections there.
22:30:34 <Deewiant> AnMaster: That's befunge for you
22:30:42 -!- judicaster has changed nick to jc.
22:31:00 <AnMaster> Deewiant, hah. Then use befunge. No sections at all!
22:32:11 <ehird> QBasic editor is annnoyyyying in one way
22:32:17 <ehird> if you make a subroutine the rest of the file disappears
22:32:49 <Deewiant> I'm somewhat disappointed at the move against self-modifying code
22:35:41 <ehird> QBASIC HAD OBJECT ORIENTATION WTF
22:35:51 <ehird> THAT'S JUST _WRONG_ GODDAMMIT
22:35:55 <ehird> CallForJudgement: Share in my WTF.
22:36:20 <CallForJudgement> heh, that's pretty WTFy
22:36:22 <CallForJudgement> but how?
22:36:39 <ehird> Erm, let me get this manual up somewhere
22:36:48 <ehird> Anyone know a pastebin that lets you paste one HTML page?
22:37:12 <AnMaster> Deewiant, it can be done still. On POSIX systems: mprotect()
22:37:25 <ehird> Hey AnMaster, you have a site right? Could you put up one tiny HTML page up for me?
22:37:36 <ehird> By tiny I mean 451K
22:37:39 <AnMaster> ehird, don't you have one?
22:37:43 <AnMaster> also that is rather large.
22:37:45 <ehird> Yes, but it doesn't run a webserver atm.
22:37:49 <ehird> Also, it's the QBasic manual as html.
22:38:03 <fizzie> You can just resend me your script.
22:38:07 <fizzie> I can stick it at the same location.
22:38:13 <ehird> That would also work.
22:38:14 <Deewiant> AnMaster: Yes, I know, but stuff like NX seems to discourage it.
22:38:32 <ehird> fizzie: http://pastie.org/415705.txt?key=ecliar25bphg5ibwtnc4g
22:39:03 <ehird> CallForJudgement: anyway, it's more C-like structs than OOP, but it LOOKS oop
22:39:07 <ehird> TYPE Card
22:39:07 <ehird> Suit AS STRING * 9
22:39:09 <ehird> Value AS INTEGER
22:39:11 <ehird> END TYPE
22:39:13 <ehird> DIM Deck(1 TO 52) AS Card
22:39:14 <AnMaster> Deewiant, well, I like NX. It is actually useful. Only JITs need to disable it really.
22:39:15 <ehird> Deck(1).Suit = "Club"
22:39:17 <ehird> Deck(1).Value = 2
22:39:19 <ehird> PRINT Deck(1).Suit, Deck(1).Value
22:39:21 <ehird> from the manual
22:39:40 <ehird> anyone doing the above IMHO just be shot and forced to remake it as an array of strings.
22:39:42 <ehird> :P
22:39:55 <fizzie> ehird: http://zem.fi/~fis/qb.html is now converted with your script.
22:40:01 <ehird> Huray
22:40:05 <AnMaster> I don't know about kernels, it is possible you might need something there.
22:40:14 <ehird> fizzie: Oh, wait, I have one more mod
22:40:15 <AnMaster> Deewiant, tell me any other non-esoteric example where you need to disable NX
22:40:26 <fizzie> Although I could've just used iconv -t ascii//translit to get +---+ line-drawing-art.
22:40:51 <Deewiant> AnMaster: Self-modifying code.
22:40:52 <ehird> fizzie: new line:
22:40:53 <ehird> s/[┌└┐┘╔╗╣║╚╝]/+/g;
22:41:14 <AnMaster> Deewiant, any non-esoteric examples of self modifying code? Apart from JITs that is.
22:42:11 <ehird> anyway
22:42:13 <ehird> CallForJudgement: http://zem.fi/~fis/qb.html#QEw4MDg3
22:42:29 <fizzie> Reconverted with that s/// line.
22:42:39 -!- Jophish has joined.
22:42:40 <CallForJudgement> ehird: where in it? that anchor isn't working
22:42:41 <AnMaster> Deewiant, and for library loading, your dynamic linker takes care of the correct write/mark no-write order.
22:42:44 <Deewiant> AnMaster: For instance, instead of having a boolean test in a loop (slowing the program down) or outside the loop (adding duplicate code since the loop has to be generated twice) you can set an instruction inside the loop
22:42:44 <CallForJudgement> hi Jophish
22:42:48 <ehird> CallForJudgement: Refresh if the anchor isn't working
22:42:52 <Deewiant> AnMaster: Essentially, optimization.
22:42:52 <ehird> and don't scroll
22:42:56 <ehird> until it jumps
22:43:03 <ehird> but, "TYPE Statement"
22:43:16 <Deewiant> AnMaster: Another case is to hide stuff, if you're not fully open about your code or data
22:43:27 <Deewiant> Debugger fighting and such.
22:43:34 <AnMaster> Deewiant, So you have too little memory to be able to be able to have two copies of the loop?
22:44:00 <Deewiant> AnMaster: Maybe I don't want to have pointless stuff in the CPU's pipeline or L1 cache.
22:44:03 <CallForJudgement> ehird: still didn't jump
22:44:10 <ehird> just grep for TYPE Statement
22:44:17 <AnMaster> as for debugger fighting, why on earth do you want to do that? I mean not even Microsoft does that. Heck. Microsoft even provide debugging symbols for all of windows...
22:44:20 <AnMaster> including the kernel
22:44:27 <fizzie> Strange, the anchor works for me.
22:44:32 <CallForJudgement> ehird: ah, got it
22:44:36 <CallForJudgement> and that isn't OO, that's just structs
22:44:42 <ehird> CallForJudgement: i know, but the example looks oop-y
22:44:47 <ehird> also, I have an idea of how to make it oop
22:44:48 <ehird> but it's evil
22:44:50 -!- neldoret1 has quit (No route to host).
22:45:35 <AnMaster> Deewiant, so, that doesn't make much sense either. But well ok, I guess writing in code to do that makes sense. But NX doesn't affect that. Since code is loaded read-only by default you need to call mprotect() *anyway*
22:46:04 <AnMaster> or whatever your platform use
22:46:09 <Deewiant> AnMaster: Debugger fighting is for code obfuscation; Microsoft doesn't care, they can just sue you if you reverse engineer
22:46:11 <AnMaster> windows has some other call I think
22:46:46 <Deewiant> Can't you make an ELF which has the executable code as RWE?
22:46:56 <AnMaster> Deewiant, don't know. It may be possible.
22:47:04 <fizzie> ehird: You can make it OOP by storing all your data in COMMON block, writing a separate .bas file for each method, storing the .bas file names into TYPE-defined struct fields, and using "CHAIN obj.func" to call. I'm not yet sure how you will return.
22:47:04 <Deewiant> I don't see why not
22:47:18 <ehird> fizzie: ahsdjhaskdhsjkfhkafjhgf jhasgfsdjfj sdfj WHHHHHHHHHHHHAAAAAAAAAAAAAAAATTTTTTTTTTTTTT
22:47:33 <ehird> fizzie: OR
22:47:35 <ehird> um
22:47:37 <ehird> ahahahah
22:47:54 -!- mad has joined.
22:47:55 <AnMaster> Deewiant, think it may be invalid.
22:48:00 <fizzie> Well, line numbers are a better solution, maybe.
22:48:17 <fizzie> Or would be if it wouldn't just be a GOTO <int-constant>.
22:48:35 <Deewiant> AnMaster: In any case you don't need mprotect since you can make a different RWE section and just jump to that at the start of execution in the RE
22:48:52 <AnMaster> Deewiant, Yep you can. Both with and without NX.
22:48:55 <AnMaster> Your point?
22:49:12 <Deewiant> My point is you don't need mprotect, which you said one does.
22:50:04 <ehird> Hmm.
22:50:16 <ehird> How do you switch DOS into the highest video mode?
22:50:20 <ehird> Presumably writing to some address.
22:50:25 <mad> vga or svga?
22:50:27 <AnMaster> Deewiant, well you need either mprotect() or change the section flags in the executable. Right
22:50:34 <CallForJudgement> SCREEN 12 is the traditional method in QBasic
22:50:48 <ehird> mad: SVGA, since it's higher resolution.
22:50:54 <AnMaster> Hm I wonder. Does WXSVGA exist?
22:50:54 <mad> hmm
22:51:01 <ehird> Also, hi mad. haven't seen you before.
22:51:07 <Deewiant> Mode 13h!
22:51:10 <mad> ehird: then the easiest method is a library
22:51:14 <AnMaster> ehird, duh. He joined half a screen back.
22:51:18 <ehird> AnMaster: o :P
22:51:23 <mad> yeah I'm new :D
22:51:34 <ehird> mad: ah, to hell with that, QBasic and libraries is like... like... like QBasic and libraries.
22:51:49 <CallForJudgement> mad: what brings you here?
22:51:52 <mad> in qbasic? heh
22:52:05 <ehird> mad: Yeah, I'm playing with dosbox
22:52:07 -!- Mony has quit (Nick collision from services.).
22:52:10 <CallForJudgement> Sb
22:52:12 <AnMaster> mad, we usually don't do DOS stuff. We do things in Brainf*ck, Befunge, INTERCAL and such usually.
22:52:22 <AnMaster> just so you don't get the wrong impression.
22:52:24 <mad> yeah I know
22:52:29 -!- M0ny has joined.
22:52:42 <ehird> AnMaster: I think that's blatantly obvious.
22:52:43 <mad> I did a couple attempts at esoteric languages
22:52:49 <ehird> Also, we're more offtopic than on...
22:52:53 <AnMaster> ehird, well not from topic, Not from the convo right no
22:52:56 <AnMaster> now*
22:53:03 <ehird> Yes, but, the name is #esoteric, see. :P
22:53:05 <mad> but yeah with qbasic your best luck is probably 640x480
22:53:09 <ehird> Mm
22:53:19 <CallForJudgement> actually, we spend most of our time offtopic
22:53:20 <AnMaster> ehird, well, what about those persons wondering about new age stuff or whatever it is
22:53:23 <CallForJudgement> but ontopic is better IMO
22:53:25 <mad> Maybe you can hack it a bit to get it to 720x512 but probably not much more :D
22:53:29 <AnMaster> because they misunderstood what type of esoteric
22:53:33 <fizzie> There's a .bas file for doing svga graphics, though.
22:53:35 <ehird> CallForJudgement: that's what I said
22:53:37 <ehird> more offtopic than on
22:53:41 <ehird> AnMaster: he said programming, so. :P
22:53:46 <AnMaster> well right
22:53:51 <CallForJudgement> actually, most of the time is taken up with ehird and AnMaster arguing
22:53:55 <ehird> Heh.
22:53:58 <AnMaster> hah
22:54:06 <ehird> ■ activepage% The screen page that text or graphics output writes to.
22:54:06 <ehird> ■ visualpage% The screen page that is currently displayed on your
22:54:07 <ehird> screen.
22:54:11 <ehird> Fun fun.
22:54:20 <CallForJudgement> you can have great fun double-buffering with those
22:54:25 <CallForJudgement> but most of the good video modes don't support it
22:54:27 <AnMaster> fizzie, didn't your stats show ehird was the most active one?
22:54:31 <AnMaster> and was I number two or?
22:54:43 <CallForJudgement> if you remove arguments between you too, though, you're about #102 and #105
22:54:48 <CallForJudgement> *you two
22:54:50 <fizzie> AnMaster: Right.
22:54:54 <AnMaster> mhm
22:55:02 <fizzie> Or maybe the SVGA library was for quickbasic 4.5 only. Hmm.
22:55:04 <ehird> CallForJudgement: Actually, it's mostly my pastes and multiline stuff that make me high
22:55:06 <mad> yeah a lot of those modes are kinda blah
22:55:08 <ehird> Err, higher. Not, you know, high.
22:55:13 <ehird> Because, drugs are bad, mmkay.
22:55:40 <mad> cga? more like suck g a :D
22:56:12 <fizzie> ehird: Here's a SVGA tutorial for you, treating QBasic in addition to QuickBasic: http://www.petesqbsite.com/sections/tutorials/zines/qbtm/1-svga.html
22:56:26 <ehird> I'm going for vga for simplicity
22:56:31 <fizzie> I would, too.
22:56:34 <AnMaster> heh WQUXGA
22:56:39 <AnMaster> that exists it seems
22:56:50 <AnMaster> "Wide Quad Ultra Extended Graphics Array"
22:56:53 <ehird> WQXGA is often found in 30" displays like the Dell 3008WFP and the Apple Cinema Display.
22:56:54 <fizzie> But I distinctly remember seeing a rather featureful svga library for either qbasic or quickbasic.
22:56:56 <AnMaster> http://en.wikipedia.org/wiki/QXGA#WQUXGA
22:56:58 <ehird> that's just 2560x1600
22:57:01 <ehird> not insanely large
22:57:07 <AnMaster> ehird, WQXGA != WQUXGA
22:57:11 <ehird> o
22:57:12 <ehird> ha
22:57:24 <mad> svga is doable in djgpp
22:57:35 <AnMaster> WQUXGA: 3840 x 2400
22:57:35 <ehird> Yikes, colour attributes are scary
22:57:38 <mad> and doable as in practical
22:57:43 <AnMaster> and is 16:10
22:57:50 <mad> color attributes?
22:57:52 <ehird> also it's really irritating that QBASIC reformats your code to be less ugly.
22:57:55 -!- Hiato has quit (Connection timed out).
22:57:56 <ehird> mad: http://zem.fi/~fis/qb.html#QEw4MDUw
22:58:20 <mad> there's a trick for that
22:58:34 <mad> you can just overwrite the palette
22:58:55 <ehird> cute
22:59:17 <ehird> hmm
22:59:20 <ehird> mode 13 seems the best
22:59:21 <fizzie> What's the fun is that in addition to NOT, AND, OR, XOR QBasic also has the EQV and IMP (equivalence, implication) bitwise ops.
22:59:24 <ehird> since you get 256 colours
22:59:33 <mad> yeah mode 13 is the best for games
22:59:35 <ehird> although the res is tiny on this screen ofc
22:59:50 <fizzie> Admittedly "a EQV b" is just "NOT (a XOR b)" and so on, but it's there.
23:00:15 <mad> though with some palette editing you can make 16 color modes look good, which is nice
23:00:25 <ehird> mad: you still only get 16 cols :-)
23:00:40 <mad> well, yeah :D
23:00:54 <mad> but some games do well with that
23:01:11 <mad> duke nukem 2, metal gear 2, hmm
23:01:11 <fizzie> On Real Computers, you could just do palette reprogramming during the hblank period and get 16 different colors for each line.
23:01:31 <mad> fizzie: except the ibm PC isn't a real computer :D
23:01:42 <fizzie> Right, it's a business machine.
23:02:05 <mad> PCs aren't for doing hdma tricks
23:02:11 <mad> that's what amigas are for
23:03:28 <ehird> PLAY "T255P64" <-- shortest pause you can get without silly timer hax
23:03:38 <AnMaster> hdma?
23:03:48 <AnMaster> what does the extra h on DMA mean there?
23:04:05 <mad> horizontal blank dma
23:04:24 <AnMaster> I see. And what does that actually mean?
23:04:27 <ehird> I still need to figure out how to terminate this program
23:04:31 <ehird> no break key :(
23:04:32 <mad> I think it's specific to snes technically but in general it refers to effects where you alter registers between lines
23:04:46 <AnMaster> ehird, where did you find qbasic btw?
23:04:50 <ehird> AnMaster: logs.
23:05:00 <ehird> greh
23:05:01 <AnMaster> ehird, well I mean, download url?
23:05:03 <mad> It's common on 16 bit platforms except PC and mac
23:05:07 <jc> lolqbasic
23:05:12 -!- tombom has quit ("Peace and Protection 4.22.2").
23:05:14 <fizzie> AnMaster: It's possibly from my dos 6.21 installation floppy.
23:05:19 <AnMaster> hm
23:05:19 <ehird> no
23:05:27 <fizzie> Oh, just the help file was?
23:05:30 <ehird> ya
23:06:55 <fizzie> AnMaster: Since you usually care about legalities (I guess?), ais523 linked to http://download.microsoft.com/download/win95upg/tool_s/1.0/w95/en-us/olddos.exe which you can run in dosbox.
23:07:12 <fizzie> Although I'm quite sure my qbasic.exe has pretty much the same bits.
23:07:22 <AnMaster> fizzie, mhm
23:07:35 <AnMaster> and yeah I tend to be careful.
23:07:43 -!- M0ny has quit (Read error: 60 (Operation timed out)).
23:07:46 <fizzie> I think that should expand to various "old DOS utilities".
23:08:06 <AnMaster> anyone here good at perl? Need to test something for the PERL fingerprint in cfunge...
23:08:12 <CallForJudgement> I'm pretty good at Perl
23:08:16 <CallForJudgement> what in particular do you need?
23:08:39 <AnMaster> CallForJudgement, I don't know perl at all. Something like a for loop. To output 5932 bytes
23:08:39 <fizzie> I'm reasonably good at writing messy Perl.
23:08:44 <AnMaster> just use x or whatever
23:09:11 <fizzie> The expression "x" x 5932 evalutes to a 5932-byte string.
23:09:21 <AnMaster> the perl equivalent of: for (i=0;i<5932;i++) putchar('x');
23:09:24 <AnMaster> is what I need basically
23:09:27 <AnMaster> hm
23:09:33 <fizzie> Well, that's print "x" x 5932;
23:09:48 <AnMaster> right
23:09:49 <Deewiant> x = 5932; print "x" x x;
23:10:00 <Deewiant> D'oh, sigils
23:10:09 <fizzie> It's also print "x" foreach (0 .. 5931); if you want to be more form-conformant.
23:10:11 <AnMaster> well that would be less confusing with something else than x I guess
23:10:17 <ehird> $x=5932;$X="x";print $X x $x
23:10:24 <lament> in python it's print "x" * 5932
23:10:27 <ehird> $x=5932;$X=x;print $X x $x
23:10:28 <lament> but that's just because python is sane
23:10:36 <ehird> ■ STATIC Specifies that the values of the SUB procedure's
23:10:36 <ehird> local variables are saved between function calls.
23:10:40 <ehird> that's a modifier ON THE FUNCTION
23:10:41 <ehird> CallForJudgement: WTF.
23:10:51 <AnMaster> hm
23:10:54 <CallForJudgement> ehird: heh
23:11:02 <fizzie> Hey, just be happy it actually has functions, and local variables.
23:11:04 <Deewiant> ehird: Use ẋ or something instead of X
23:11:10 <fizzie> That's quite a fancy-schmanzy schnitzel.
23:11:13 -!- CallForJudgement has changed nick to ais523.
23:11:17 <AnMaster> and in an eval() context. So eval returns that many x.
23:11:21 <AnMaster> what would it be then?
23:11:27 <fizzie> "x" x 5932
23:11:28 <ehird> 'x' x 5932
23:11:30 <AnMaster> right
23:11:35 <ehird> SUB count STATIC
23:11:37 <ehird> count = 0
23:11:39 <ehird> count = count + 1
23:11:40 <ehird> RETURN count
23:11:40 <fizzie> I don't think GW-BASIC did local variables. It might've done GOSUB, though.
23:11:41 <ehird> END SUB
23:12:06 <AnMaster> um
23:12:11 <ehird> err, wait
23:12:15 <ehird> RETURN isn't a valuey thingy
23:12:16 <AnMaster> so why doesn't this work: perl -e 'print eval("x" x 5932)'
23:12:17 <ehird> I need a function
23:12:17 <fizzie> ehird: It's not restricted as a function attribute, though: "STATIC makes a variable local to a function or procedure and preserves its value between calls."
23:12:22 <ehird> AnMaster: because that evaluates
23:12:23 <ehird> xxxxxxxxxxxxxxxxxxxxxx
23:12:26 <ehird> instead of returning xxxxxxxxxxxxxx
23:12:28 <ehird> you should do
23:12:32 <ehird> eval('"x" x 5932')
23:12:33 <mad> I think the stone age basics had gosub yeah
23:12:34 <AnMaster> ehird, right
23:12:35 <ehird> and now I doubt your coding ability...
23:12:39 <ehird> /flamebait
23:12:51 <AnMaster> ehird, well I don't know perl indeed.
23:13:25 <ais523> why do you need eval in order to print lots of xs?
23:13:25 <AnMaster> that I admit. I just try to conform to the rather weird PERL fingerprint spec. And found a bug in handling long results...
23:14:20 <AnMaster> ais523, look at PERL spec
23:14:25 <ais523> oh dear
23:14:28 <AnMaster> http://catseye.tc/projects/funge98/library/PERL.html
23:14:30 <fizzie> But seriously, why can't qbasic do a simple "GOTO $var"? (Alternatively: how can it do that?)
23:14:32 <AnMaster> E ('Eval') pops a 0gnirts string and performs a Perl eval() on it, possibly (or not) shelling Perl as indicated by S above. The result of the call is pushed as a 0gnirts string back onto the stack.
23:14:41 <ais523> fizzie: you can use SELECT CASE
23:14:43 <ehird> fizzie: GOTO var?
23:14:46 <ais523> which is basically switch() from C
23:15:02 <ehird> also, you can GOTO label
23:15:04 <fizzie> Oh, I mean GOTO var$. Or is it var%? I don't remember them sigils either.
23:15:09 <AnMaster> ais523, that means I ended up (with the help of Deewiant and someone else in here, forgot who) with: execv() on "perl" "-e" "open(CFUNGE_REALERR, \">&STDERR\"); open(STDERR, \">&STDOUT\"); print CFUNGE_REALERR eval($ARGV[0])"
23:15:11 <fizzie> Yes, but I want a computed goto.
23:15:15 <ais523> fizzie: QBasic sigils are weird
23:15:17 <ehird> Yeah, use a switch
23:15:18 <Deewiant> AnMaster: fizzie
23:15:23 <AnMaster> was it him? ok
23:15:26 <ehird> also, $ = string, % = integer
23:15:30 <ehird> nothing = same as %
23:15:36 <ais523> AnMaster: that looks about right
23:15:40 <mad> does it have some float too?
23:15:52 <ehird> think so
23:15:58 <AnMaster> ais523, anyway I found a bug in my handling of reading back really long results.
23:15:59 <ehird> data-type suffix (%, &, !, #, or $).
23:16:09 <ehird> +-------------------------Data-Type Suffixes--------------------------+
23:16:09 <ehird> │ ! Single-precision % Integer │
23:16:10 <ehird> │ # Double-precision & Long-integer │
23:16:12 <ehird> │ $ String │
23:16:14 <ehird> +---------------------------------------------------------------------+
23:16:17 <ehird> So, #.
23:16:30 <ehird> & is a whopping THIRTY TWO BITS
23:16:55 <mad> what's the point of ! :D
23:17:03 -!- M0ny has joined.
23:17:36 <fizzie> ais523: Do you mean "use SELECT CASE" as in "write your whole program as "SELECT CASE a% CASE 1 ..." and use "a% = 42; <whatever the local equivalent of break is>" for control flow"?
23:17:45 <ehird> mad: stores 7 digits after the decimal point
23:17:47 <ais523> fizzie: well, why are you doing control flow like that, anyway?
23:17:54 <ais523> I was assuming you'd only be jumping to one of a set few lines anyway
23:18:03 <mad> ehird: yeah but you can use # instead :D
23:18:10 <fizzie> ais523: I was just thinking of ehird's "Objective QBasic" thing.
23:18:12 <ehird> mad: Think of the RAM!
23:18:24 <mad> wait, i know
23:18:24 <ehird> We have like 1MB.
23:18:24 <mad> right
23:18:24 <fizzie> ais523: I'm not actually doing anything.
23:18:24 <ehird> :D
23:18:24 <ehird> fizzie: eek :D
23:18:24 <mad> well, conventional ram :D
23:25:09 <mad> And more like 64k often :D
23:25:09 <ehird> hee
23:25:09 -!- M0ny has quit (Client Quit).
23:25:09 <ehird> who needs C when you have qbasic
23:25:09 <ehird> :P
23:25:09 <AnMaster> Deewiant, do you remember off the top of your head which value to y returns stack size?
23:25:09 <ehird> (int*)1234=5;
23:25:09 <ehird> POKE1234,5
23:25:09 <mad> ehird: but you can have TURBO C :D
23:25:09 <ehird> WINNER: QBASIC
23:25:09 <ehird> mad: I HAD A TURBO BUTTON ON MY PC! It didn't do a thing.
23:25:09 <Deewiant> AnMaster: nope
23:25:09 <Deewiant> ehird: What a crap PC
23:25:09 <ehird> Deewiant: :<
23:25:09 <mad> from like some 386s on it did like nothing :D
23:25:09 <Deewiant> Turbo buttons should always do something
23:25:09 <ehird> y u insult my pc
23:25:09 <ais523> ehird: course it did, it slowed down the PC when you turned it off
23:25:09 <ehird> haha
23:25:09 <Deewiant> Yeah, exactly
23:25:09 <ais523> they were designed so you could play old games which used loops for delays
23:25:09 <ehird> Yeah
23:25:09 <mad> because even if you ran stuff at 7mhz it's still going to be ridiculously fast on a 486 no matter what
23:25:09 <Deewiant> And they worked well
23:25:09 <ais523> but why have a slow down button when you can have a speed up button?
23:25:09 <ehird> I always thought it was a go faster button
23:25:09 <ehird> As in
23:25:09 <Deewiant> Well, it is
23:25:09 <ehird> You can only use half your CPU and RAM
23:25:09 <ehird> until you press TURBO
23:25:09 <fizzie> My router box used to be in a case that had a spare TURBO BUTTON, but I couldn't figure out any nifty thing to connect it to.
23:25:10 <ehird> Hmm, I'ma write a sierpinski drawer. Should be trivial.
23:25:10 <mad> not to mention a pentium which is probably going to be able to stuff the whole program in its CACHE
23:25:10 <mad> then pair instructions to do 2 instructions per cycle :D
23:25:10 -!- MigoMipo has quit ("QuitIRCServerException: MigoMipo disconnected from IRC Server").
23:25:10 <ehird> Hmm
23:25:10 <ehird> QBasic has no bitwise operators? :-S
23:25:10 <ehird> oh wait
23:25:10 <ehird> they're its boolean operators
23:25:10 <ehird> XD
23:25:10 <AnMaster> what happened if you pressed turbo while the computer was running?
23:25:10 <ais523> AnMaster: it crashed
23:25:10 <fizzie> Yes. And there's even EQV and IMP there.
23:25:10 <AnMaster> ah
23:25:10 <ais523> I know, I've done that once
23:25:10 <ehird> AnMaster: You became a COOL DUDE.
23:25:11 <Deewiant> Huh? My turbo button worked when the machine was on
23:25:28 <Deewiant> Or alternatively it did nothing, it's been a long time
23:25:32 <Deewiant> But it certainly didn't crash anything
23:25:45 <fizzie> I used to have a 386 that had a manufacturer-specific "TURBO COMMAND"; a DOS command that could be used to switch between 8 MHz and 16 MHz mode.
23:25:52 <fizzie> On-the-fly, even.
23:26:01 <AnMaster> heh
23:26:43 <fizzie> Also http://zem.fi/~fis/qbu.html has the qbasic manual with those utf-8 line-drawing characters, for people who prefer that and happen to have a font and system where things align correctly with it.
23:26:58 <ais523> PICs can be switched from their default 4 MHz (= 1 MIPS) down to about 75 kHz
23:27:01 <ais523> as a sort of power-saving mode
23:27:26 <AnMaster> Modern CPUs can change freq too
23:27:30 <AnMaster> for power saving
23:27:44 <AnMaster> like my sempron, 1 GHz, 1.5 GHz or 2 GHz
23:27:52 <fizzie> C128 can be switched from the default 1 MHz mode into a faster 2 MHz mode, but then the VIC-II chip drops offline, and you have to use the 80-column screen which has a different display controller.
23:27:58 <AnMaster> s/,/:/
23:27:59 <ehird> DIM A(640,480) gives me subscript out of bounds
23:28:08 <ehird> why? ais523?
23:28:15 <ais523> because qbasic can't allocate a lot of memory
23:28:22 <ehird> that's not a lot ...
23:28:23 <mad> fizzie: heh, that's... not nice
23:28:52 <fizzie> 640*480!? That's over nine thous.. I mean, 307200. That amount of integers wouldn't fit in any sort of memory.
23:28:57 <ehird> :D
23:29:02 <ehird> But it fits in video memory!
23:29:23 <fizzie> Not really, you only have four bits per pixel there.
23:29:28 <ehird> Ah. True da.t
23:29:33 <ais523> actually, 307200 is almost half of memory
23:29:37 <ehird> It's just, using LINE on the fly was really slow.
23:29:39 <ais523> DOS only supports 640K, remember
23:29:40 <ehird> As in one pixel per second.
23:29:53 <fizzie> You can POKE in the video memory, though.
23:30:03 <AnMaster> ehird, allocate it in hi memory? extended memory? or whatever
23:30:11 <ehird> in BASIC?
23:30:17 <ais523> you can POKE anywhere in BASIC
23:30:20 <AnMaster> ehird, well can't you POKE to do that?
23:30:21 <ehird> fizzie: Yeah, 'cept I don't know the format of the values
23:30:23 <ehird> ais523: that was @AnMaster
23:30:24 <mad> yeah but qbasic probably can't handle >16bit pointers
23:30:37 <AnMaster> hm
23:30:39 <fizzie> ehird: It's just "two nybbles in each byte give two adjacent pixels".
23:30:45 <mad> that's why people usually switch to djgpp :D
23:30:49 <ais523> mad: it can
23:30:50 <ehird> fizzie: and what is a pixel in that case?
23:30:51 <ais523> DEF SEG
23:30:56 <AnMaster> use one of those "memory optimizer" to move stuff out of the memory you can use then
23:31:07 <mad> stuff = malloc(20000000);
23:31:11 <ehird> What's the address of video memory, anyhoo?
23:31:13 <mad> Actually WORKS in djgpp :D
23:31:15 <fizzie> You do need to DEF SEG = &HA000.
23:31:15 <AnMaster> I remember some tool that messed with config.sys and autoexec.bad
23:31:17 <mad> 0xa0000
23:31:19 <AnMaster> bat*
23:31:21 -!- psygnisfive has joined.
23:31:29 <AnMaster> to free low low memory
23:31:58 -!- kar8nga has quit (Remote closed the connection).
23:31:58 <fizzie> Then you can just POKE in there, and the address given in POKE is directly an offset to the screen buffer.
23:32:03 <mad> video mem address depends on video mode
23:32:04 <ehird> fizzie: Still slow; as in it's taking many many seconds. I wonder if I have a bug.
23:32:12 <ehird> Or maybe it crashed.
23:32:18 <mad> but in 256 color mode it's 0xa0000
23:32:28 <ehird> Ah.
23:32:30 <ehird> I was using SCREEN 1.
23:32:42 <ais523> 12 always used to be my favourite
23:32:49 <AnMaster> ehird, how many FPS?
23:32:51 <ehird> Yes, but I'm just doing a b/w sierpinski :P
23:32:55 <ehird> AnMaster: I don't know
23:33:26 <AnMaster> heh
23:33:34 <AnMaster> ehird, tell me when/if you find out
23:33:42 <ehird> Oh, it terminated.
23:33:49 <ehird> Anyway, I'm just looping over the 320,200 display.
23:33:53 <ehird> I don't see how I can get any faster.
23:34:24 <fizzie> I remember doing some comprehensive qbasic putpixel benchmarking, and there were at least five methods.
23:34:27 <ehird> I guess sierpinski is just way beyond DOS's ability.
23:35:05 <mad> ehird: unless it's 3d bit dos
23:35:12 <ehird> 3 DIMENSIONAL BIT DOS?!
23:35:17 <mad> haha
23:35:21 <ais523> yay, voxel bits
23:35:28 <mad> voxbits
23:35:30 <ais523> you could almost call it voxel-perfect
23:35:30 <fizzie> You can write your sierpinski to file and the BLOAD it directly on top of the display memory. That gives you a fast blit. Unfortunately you need to precalc the file.
23:36:09 <mad> use putpixel + recursive function?
23:36:11 <ehird> Text mode sierpinski works :P
23:36:26 -!- neldoreth has joined.
23:36:55 <fizzie> Still, I think POKE 320*y+x was a lot faster than any LINE (x, y)-(x, y) style thing.
23:37:02 <fizzie> Or PSET.
23:37:13 <fizzie> Although PSET at least wasn't many magnitudes slower.
23:37:16 <AnMaster> <ais523> you could almost call it voxel-perfect <-- that does sound strangely familiar..... But I can't identify it
23:37:29 <ehird> ;_; AnMasterrrrrrrrrrr
23:37:36 <ais523> AnMaster: esolangs.org = esoteric.voxelperfect.net
23:37:40 <AnMaster> oh right
23:37:42 <AnMaster> duh
23:37:50 <AnMaster> ais523, I use the first url to access
23:37:58 <ehird> Hm. There seems to be some algorithmic problem.
23:38:06 <ais523> just explaining where the reference came from
23:38:29 <AnMaster> ehird, also you could do sierpinski in dos. Ever seen some of those DOS demos?
23:38:40 <ehird> AnMaster: And what are they written in?
23:38:41 <ehird> Assembly.
23:38:43 <ehird> And what am I using?
23:38:45 <ehird> QBasic.
23:38:48 <ehird> And what is QBasic?
23:38:51 <AnMaster> oh right true
23:38:52 <ais523> bloated
23:38:52 <fizzie> Oh, there are QBasic demos.
23:38:53 <ehird> An interpreter, probably written in C.
23:38:56 <ehird> Totally unoptimized, to boot.
23:39:01 <AnMaster> ehird, can't you compile qbasic?
23:39:09 <ehird> using QuickBASIC.
23:39:11 <mad> I heard there was a compiler
23:39:11 <ehird> Which I don't have.
23:39:12 <AnMaster> ah
23:39:18 <fizzie> QuickBasic is commercial, non-free.
23:39:26 <mad> then you can switch to the next bigger thing
23:39:27 <AnMaster> I see
23:39:27 <fizzie> And it doesn't really generate very fast code.
23:39:31 <mad> TURBO PASCAL :D
23:39:42 <AnMaster> mad, I think I have a copy of that
23:39:43 <AnMaster> in fact
23:39:54 <AnMaster> not sure where
23:40:08 <AnMaster> and I think it was TURBO PASCAL for windows or something even.
23:40:25 <AnMaster> or maybe not
23:40:37 <fizzie> Or you can switch to the next smaller thing, debug.com.
23:40:38 <AnMaster> don't remember. Too long ago
23:40:52 <mad> I've written a short game for dos
23:40:55 <ehird> Hmmm.
23:41:00 <mad> but it was with libraries
23:41:07 <AnMaster> ehird, anyway, when you find out frame rate: tell me
23:41:09 <ehird> Question.
23:41:12 <ehird> A bunch of PRINT "x";
23:41:14 <ehird> in succession
23:41:17 <ehird> will output nothing but xs
23:41:18 <ehird> right?
23:41:24 <mad> who knows
23:41:43 <AnMaster> an unfair comparsion: glxgears on my GPU gives me: 38952 frames in 5.0 seconds = 7790.366 FPS. And that is with 2xAA...
23:41:45 <mad> I think basic probably tacks on a line end and you have to supress it or something
23:41:50 <fizzie> Yes, as long as you don't forget the ; there.
23:41:55 <ehird> mad: thus the ;
23:41:56 <fizzie> That's the line-suppression thing.
23:42:01 <ehird> AnMaster: frame rate of what
23:42:19 <AnMaster> ehird, just drawing a single colour over the screen in a loop?
23:42:19 <fizzie> A , would start at the "next print zone", and "print zones are 14 characters wide". That's very out-of-nowhere.
23:42:32 <ehird> AnMaster: 10FPS
23:42:33 <ehird> Or so
23:42:36 <AnMaster> ehird, heh
23:42:40 <ehird> Well
23:42:49 <ehird> It takes about 7 seconds to display 256 colour bands
23:42:59 <ehird> I dunno
23:43:00 <AnMaster> wow that is slow
23:43:07 <ehird> anyway
23:43:18 <AnMaster> ehird, for dosbox it should be possible to tune the speed iirc
23:43:32 <fizzie> Look, it's a lot faster than the TI-BASIC in my calculator, so just stop complaining about the speed.
23:43:36 <ehird> CLS
23:43:36 <ehird> FOR Y = 0 TO 15
23:43:37 <ehird> FOR X = 0 TO 15
23:43:39 <ehird> Y1 = 15 - Y
23:43:41 <ehird> IF (X AND Y1) = 0 THEN PRINT "*"; ELSE PRINT " ";
23:43:43 <ehird> NEXT X
23:43:45 <ehird> PRINT
23:43:47 <ehird> NEXT Y
23:43:55 <ehird> Renders a sierpinski triangle of 16x16 in about 0.7 seconds.
23:44:04 <ehird> You can watch it draw.
23:44:21 <ehird> Now to try and center it.
23:45:44 <jc> fizzie: this
23:45:50 <jc> TI-Basic is so ridiculously slow
23:45:51 -!- jc has changed nick to comex.
23:46:02 <ehird> yeah well your butt is ridiculously slow if you know what i mean.
23:46:13 <ais523> someone show http://www.newscientist.com/blogs/shortsharpscience/2009/03/how-moores-law-saved-the-web.html to zzo38
23:46:14 <AnMaster> <fizzie> Look, it's a lot faster than the TI-BASIC in my calculator, so just stop complaining about the speed. <-- Remember that FOR loops after faster than WHILE in TI-BASIC
23:46:48 <comex> all good TI-Basic programs start with AsmPrgm
23:47:08 <AnMaster> comex, how does that work. I don't remember?
23:47:20 <comex> you have to type in z80 opcodes as hex
23:47:23 <ehird> CLS
23:47:23 <ehird> FOR Y = 0 TO 15
23:47:24 <ehird> Y1 = 15 - Y
23:47:26 <ehird> FOR I = 1 TO Y1
23:47:27 <comex> (thus 'asm' is somwhat misleading...)
23:47:28 <ehird> PRINT " ";
23:47:30 <ehird> NEXT I
23:47:32 <AnMaster> comex, oh I see
23:47:32 <ehird> FOR X = 0 TO 15
23:47:34 <ehird> IF (X AND Y1) = 0 THEN PRINT "**"; ELSE PRINT " ";
23:47:36 <ehird> NEXT X
23:47:38 <ehird> PRINT
23:47:39 <AnMaster> so you could hand type it on the calculator?
23:47:40 <ehird> NEXT Y
23:47:42 <ehird> centered.
23:47:44 <ehird> Also optimmized.
23:47:46 <ehird> Now it takes 0.3s
23:47:53 <comex> I have a packet with a list of z80 opcodes
23:47:55 <AnMaster> ehird, I think there was a faster way than = 0
23:48:08 <comex> sometimes when I'm feeling masochistic I make programs
23:48:09 <AnMaster> in IF that is
23:48:41 <AnMaster> not() should be faster. At least on TI-83+
23:48:44 <AnMaster> which is what I have
23:49:03 <ehird> This is on DOS :P
23:49:06 <comex> this
23:49:06 <AnMaster> ah
23:49:07 <ehird> But, I need to check 0
23:49:10 <ehird> NOT() checks for -1 or something
23:49:14 <ehird> It doesn't output right in any case
23:49:23 <AnMaster> ehird, well I meant on TI-83+
23:49:29 <AnMaster> right
23:49:37 <ehird> Anyway, now to make it do it SEXTUALLY
23:49:41 <ehird> By which I mean graphically
23:49:44 <comex> ..
23:50:09 <ehird> fizzie: what was your POKE gfx magick?
23:50:19 -!- KingOfKarlsruhe has joined.
23:50:29 <AnMaster> ehird, scrollback?
23:50:33 <ehird> ah POKE 320*y+x
23:51:08 <ehird> fizzie: what mode was that for?
23:51:09 <ais523> which DEF SEG is that in?
23:51:53 <ehird> I'll just use pset
23:51:54 <ehird> probably
23:52:57 <ehird> wtf
23:53:00 <ehird> illegal function call on an if
23:53:03 <ehird> I guess it is complaining ab-
23:53:04 <ehird> oh
23:53:13 <ehird> pset without screen
23:53:30 -!- BeholdMyGlory has quit (Read error: 104 (Connection reset by peer)).
23:53:33 <ehird> Erm, or not.
23:53:52 * AnMaster wonders
23:53:56 <ehird> IF (X AND Y1) = 0 THEN PSET (X, Y)
23:53:58 <ehird> that's invalid?
23:54:26 <AnMaster> 6145 output chars vs 5932
23:54:31 <AnMaster> that doesn't match at all
23:55:25 <AnMaster> oh right indeed.
23:55:28 <AnMaster> a bug
23:55:31 <fizzie> Yes, as I said you need a DEF SEG = &HA000 in order for the poke to work.
23:55:41 <fizzie> And it's for mode 13h, the 320x200 VGA 256-color mode.
23:55:43 <ehird> I'm using PSET.
23:55:46 <ehird> Not DEF SEG>
23:56:09 <fizzie> If you like. It might even be faster with PSET if you need to do the y*320+x operation.
23:56:30 <ehird> agh
23:56:33 <ehird> my program is running in step mode
23:56:35 <fizzie> Since concievably it might be written in C or whatever then, not done with QBasic code.
23:56:35 <ehird> how do I undo that :
23:56:37 <ehird> :\
23:56:48 <fizzie> I don't remember anything about the UI.
23:57:04 <AnMaster> ehird, read docs?
23:57:09 <ehird> AnMaster: I did.
23:57:13 <ehird> Woo, my sierpinskigfx work
23:57:25 <AnMaster> nice
23:57:34 <ehird> Albeit sloooowly.
23:57:40 <AnMaster> ehird, screenshot?
23:57:52 <AnMaster> also for dosbox you can increase simulation speed
23:57:57 <AnMaster> some option somewhere
23:58:10 <ehird> The slowness is AUTHENTIC.
23:58:15 <AnMaster> btw, what is the difference between dosbox and doxemu?
23:58:16 <ais523> yes
23:58:22 <ehird> dosbox emulates DOS, not a cpu
23:58:23 <AnMaster> dosemu*
23:58:27 <AnMaster> ah
23:58:32 * kerlo memorizes all of pi in binary
23:58:32 <ehird> er oh
23:58:34 <ehird> thought you said qemu
23:58:40 <kerlo> Pretty easy.
23:58:43 <AnMaster> so why is the second called dosemu?
23:58:46 <kerlo> 1100111110000000
23:58:49 <ehird> it emulates dos
23:59:04 <AnMaster> then what is the difference? Which is best?
23:59:09 <AnMaster> dosbox or dosemu?
23:59:09 <ehird> fizzie: so, what IS it that makes BASIC so damn slow?
23:59:13 <ehird> dosemu only runs on linux
23:59:19 <ehird> but iirc its emulation is more "authentic"
23:59:25 <AnMaster> oh?
23:59:27 <ehird> and dosemu lets you copy/paste from-to dos
23:59:29 <ehird> apparently
23:59:35 <AnMaster> sounds useful
23:59:41 <fizzie> dosemu uses the vm86 syscall to run DOS "natively" on linux.
23:59:43 <AnMaster> and the linux requirement is hardly an issue
23:59:55 <ehird> unless you use something else.
23:59:57 <ehird> like me
←2009-03-12 2009-03-13 2009-03-14→ ↑2009 ↑all