00:01:00 Colemak is supposedly more optimal 00:01:32 don't be polemic, just use colemak 00:02:10 is there a colemak for Swedish? 00:02:20 I type a lot in Swedish so I need åäö 00:02:21 There is just one colemak 00:02:23 äåö 00:02:27 Deewiant, there is svorak 00:02:33 äåãøúüöáñéíóæœ 00:02:44 Deewiant, altgr isn't valid :P 00:02:45 AnMaster: Yes, I know. 00:02:58 i use qwerty 00:03:01 *crickets chirp* 00:03:02 I'm fine with altgr; you can always configure it yourself if you want 00:04:32 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 qwerty, the favorite layout of crickets 00:04:52 "Because" doesn't make much sense there :-P 00:04:55 I basically have a muscle memory of qwerty :( 00:05:02 ehird, same here 00:05:16 Unlearning and learning something else would take up to a year, probably 00:05:18 I can switch to qwerty within minutes 00:05:18 I grew up with qwerty after all. Hard to unlearn it now 00:05:23 ehird, probably 00:05:24 and I give up after a day or two because I type so much 00:05:27 AnMaster: that makes sense 00:05:30 Or rather, within seconds, but I'm back in comfort within minutes 00:05:31 oh yes I type lots too 00:05:36 lament, which line? 00:05:44 Took me about a month or two to get fully comfortable with colemak 00:05:49 AnMaster: if you want to design an optimal layout, you would need statistical analysis of the text you type 00:06:00 hard to do that without a computer 00:06:02 lament, ok, they could have said that. 00:06:05 (and without knowing what kind of text you type) 00:06:08 lament: Hard but that doesn't imply that it's suboptimal 00:06:32 I maintain that "suboptimal because no computers were used" doesn't hold 00:06:44 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 i didn't write that FAQ, don't complain to me 00:07:21 so saying something about computer aided statistical analysis would have been better 00:07:23 dvorak is good enough for me but it's clearly not optimal 00:07:58 eg "ls" is clearly bad, "i" and "u" should probably be switched... 00:08:14 mhm 00:08:33 qwerty is great because it's _always_ suboptimal 00:08:36 lament, you could do that in some file in /usr/share/keymaps/ iirc 00:08:42 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 maybe somewhere else for X 00:08:47 not sure 00:08:52 Different order though 00:08:54 I'm fine with Dvorak. 00:09:14 But I think that also goes a bit against Colemak's point about computer-aided statistical analysis 00:09:37 Deewiant: huh? 00:09:37 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 Deewiant, how emacs compatible is colmak? 00:09:50 AnMaster: Don't know, don't care. 00:09:54 you use vi? 00:09:57 Deewiant: the relative frequency of letters is known. 00:10:03 then how vi(m) compatible is it? 00:10:04 lament: Yep. 00:10:11 Deewiant: that's not enough to design an optimal layout. 00:10:14 hjkl are moved for example 00:10:22 AnMaster: Not very, I remap the basic movement keys 00:10:34 Deewiant, mhm 00:10:35 I wish there was something like vi that unsucked 00:10:47 ehird, it's called µeamcs 00:10:50 lament: True, but I just think they're stating it a bit too strongly 00:10:52 µemacs* 00:10:54 that is not like vi AnMaster 00:11:02 ehird, well depends on what you define "like" as 00:11:05 it is an editor 00:11:06 AnMaster: I don't remap much though, I like the mnemonics 00:11:11 and not a potato 00:11:18 There's a "colemak.vim" which changes a crapload of stuff 00:11:23 I argue vim is more like emacs than vim is like a potato~ 00:11:31 But it's more a customization of the whole of vim than just a remapping of the keys 00:11:34 So I don't use ti 00:11:35 s/ti/it/ 00:11:36 Deewiant: please complain to them, not to me. 00:11:52 lament: I wasn't complaining to you or to anybody, I just made a statement 00:12:28 what the heck _is_ this ~ thing 00:12:40 I can't remember whose idea it was 00:12:51 A sarcasm indicator, basically 00:13:02 hmm, is there a standard threading api lower level than pthreads? 00:13:06 what a wonderful idea~ 00:13:43 oerjan, it was ehird's idea 00:13:44 iirc 00:13:55 ehird: you're so smart~ 00:13:56 was t? 00:13:57 *it 00:14:13 ehird, either that or you read it somewhere and mentioned it in this channel 00:14:16 not sure 00:14:29 I could be wrong, it was some time ago after all 00:14:41 AnMaster: you wrong? never~ 00:14:52 oerjan, memory isn't as good as when you were young 00:14:57 you should know how it is ;P 00:15:19 sorry, i don't remember how good my memory was when i was young~ 00:15:30 hah~~ 00:16:35 ehird: clone(2) 00:16:45 no manual entry for clone 00:16:45 :P 00:17:02 Well yeah, if you want to be portable, no :-P 00:17:07 Beats me about OSX 00:17:26 I just looked at the source of glibc and that's what it uses 00:17:44 OS X would be whatever BSD uses 00:17:45 ehird: well you could just copy some other manpage to it 00:17:51 groan 00:18:14 oerjan, :D 00:18:31 and here i thought that one was too subtle... 00:18:36 ehird, anyway no standard one lower than pthreads no 00:18:45 it is "implementation defined" 00:18:47 ehird: __clone? 00:18:55 pthreads is awful though 00:18:58 Deewiant, iirc clone() is linux specific 00:19:04 it is a linux system call... 00:19:22 ehird, fork() shm_* 00:19:33 fork isn't threas 00:19:33 ds 00:19:50 ehird, well depends. On linux fork() is clone() and phtreads is clone() 00:19:54 just different parameters 00:20:21 It specifically needs to be a thread because i'm doing it for a gc 00:20:28 so the gc has to fuck with the heap 00:20:31 well linux also has a system call fork(), for compatibility with older code 00:20:39 but nowdays clone() is used 00:20:48 and the syscall fork() maps to the same code 00:21:41 GregorR: egobfc2m doesn't work on non-linux :< 00:22:23 ehird: Just look at your sys/syscall.h and see what's there :-P 00:22:33 Deewiant: I need portable :P 00:22:43 ehird: Then why ask for lowest level? :-P 00:22:49 I didn't say lowest 00:22:51 I said lower than pthreads 00:23:03 Why go lower instead of higher, in general 00:23:08 If you're aiming for portability 00:23:08 pthreads sucks :D 00:23:11 >_< 00:23:12 ehird, pthreads is the lowest portable 00:23:13 pthreads is about as low as you portably get, is my guess. 00:23:16 darn 00:23:18 ehird: Then use a higher level library? 00:23:21 Which doesn't suck 00:23:24 Bah. 00:23:30 wait 00:23:52 ehird, nick confusion? You going low level and me and others suggesting higher level? 00:23:54 HUH! 00:24:11 something isn't right here 00:24:28 Greenity. 00:24:41 purplity 00:24:44 Have to admit I've rarely seen people complain pthreads isn't low-level enough. 00:25:18 fizzie, indeed. I have seen people saying it is too low level though 00:25:22 and I agree 00:25:25 I prefer higher level 00:27:00 Nighty-night, anyway. 00:29:03 SCHRODINGER'S SCHRODINGER 00:31:19 what? 00:31:32 yo schrodinger? 00:32:39 yep 00:32:46 I herd u liek quantum physicists 00:33:28 Say how do you tell vim not to give you the splash on startup 00:33:28 If you do, I am single 00:33:49 because you know what 00:33:51 FUCK UGANDA 00:33:54 Hmm, can write(2) to stdout/stderr be buffered, so that you need to fsync it? 00:34:03 Deewiant: for >file, maybe? 00:34:08 i think you need a secret code that you only get if you actually donate~ 00:34:28 ehird: What about console? 00:34:35 Deewiant: dunno 00:34:41 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 I guess it could be, in theory 00:34:51 I'm not the kind of guy who says "dawg", you see. 00:35:19 I also see that you don't say "Schrödinger" 00:35:31 What did umlauts ever do to you? 00:35:52 an umlaut killed my granduncle! 00:36:00 Oh, dear! 00:37:10 orelo: orely? 00:37:37 ö®ëll¥¿ 00:38:03 Schrödinger. 00:39:54 * orelo watches irssi's status line scroll up into backscroll. 00:41:37 that sounds borken 00:42:00 It is relatively borken, yes. 00:42:57 I'll take a screenshot in a while. 00:47:27 http://i39.tinypic.com/20r2ob8.png 00:48:13 Hmm. 00:48:24 Vim cannot address the space one after a lines last character (before the newline). 00:48:27 Why is this? Deewiant? 00:49:10 Because you're not in insert mode? 00:49:45 Correct. 00:49:46 And? 00:49:51 Why can I not address that position? 00:50:09 Because you don't want to. 00:50:44 Having my thin-line-style cursor end at the seemingly-arbitrary second-last character is jarring. 00:51:15 orelo: what happens if you press ^L ? 00:51:32 hm i guess it's a bit late now 00:53:45 ehird: hm i have a thick cursor when not in insert mode, i suppose that fits vim better 00:53:59 hmm, can you do a multiline string in a vimrc? 00:55:07 * orelo tries 00:55:40 Hey, it fixes it. 00:56:10 so just a display bug 00:56:18 :\ 00:56:38 It's kind of a Unicode bug. 00:56:54 I think my terminal settings are lying when they say UTF-8. 00:57:19 Ä 00:58:02 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 i note there were _two_ unicode lines before that bug in the screenshot 00:58:20 In the chat window, it displays as inverse D. 00:58:25 yeah it's an A with umlaut here 00:59:17 oh only one of the lines were yours 00:59:29 so it's when you are typing 01:00:36 ehird: how do you get a thin-line cursor in vim? 01:00:43 more importantly, why would you want one 01:01:00 I conclude that irssi is not sending UTF-8 to my terminal. 01:01:04 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 that will give you block cursor on normal mode, thin cursor on everything else but r and c 01:01:31 I'd like to make the cursor gray 01:01:33 so it stands out less 01:01:47 lol, gui 01:02:20 you use gvim last I checked 01:02:34 no, I don't 01:02:43 You certainly tried it. 01:03:00 that's correct, I opened gvim once to try it. :D 01:03:10 and I just opened it again to see what you're talking about. 01:03:43 you have a line ending with a space? 01:03:46 and you can't address it? 01:04:02 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 oh, you just want to put the block after the last character 01:04:51 why 01:05:50 because it was a vertical line 01:05:55 so it looked stupid otherwise 01:05:58 but notw it's not 01:06:07 mm 01:06:32 I'm still deciding whether or not I like vim putting you at a character instead of between characters 01:06:59 for ^ and $, it's just a waste of time to remember whether to use i or a 01:07:05 but for searches, it makes sense... 01:07:38 ^i = I, $a = A 01:07:50 btw, the ironman colour scheme is nice 01:08:29 oerjan: nice, I'll remember that 01:08:30 * ehird maps Ctrl-A to I and Ctrl-E to A 01:08:34 emacs addiction. 01:08:48 ctrl-a > ^ 01:08:50 that requires a big reach 01:08:55 not for me 01:08:57 oh 01:08:57 right 01:08:59 yeah 01:09:05 this one works in insert mode though too 01:09:06 :P 01:09:34 also, what 01:09:55 * orelo concludes that irssi is sending UTF-8 to screen 01:10:00 naah, because in normal mode you get a beep 01:10:20 solution: nnoremap 01:10:22 comex: 01:10:23 nmap ^ 01:10:24 imap I 01:10:26 nmap $ 01:10:27 or that 01:10:28 imap A 01:10:38 works exactly how you expect in both modes 01:10:47 not in visual mode, though 01:10:51 who gives a shit about visual mode 01:11:06 * comex vmap 01:11:22 night 01:11:26 * oerjan likes visual mode 01:11:28 except 01:11:29 you can't do 01:11:34 foo 01:11:37 because that trashes your selection 01:11:42 ehird: vmap ^ 01:11:46 ah 01:13:33 * comex wonders how to remember 'vaB' 01:13:41 hmmmmmm 01:13:46 my hi Cursor things are being ignored :( 01:14:33 aha 01:15:21 colorscheme ironman 01:15:21 hi Cursor guifg=#000000 guibg=#CCCCCC 01:15:23 hi lCursor guifg=#000000 guibg=#CCCCCC 01:15:25 hi CursorIM guifg=#000000 guibg=#CCCCCC 01:15:27 lovely 01:16:14 wtf 01:16:18 I restart, and it forgets 01:16:55 too bad there isn't a way to select the {}-delimited block _and whatever comes before it_ 01:17:04 ehird: shit gets reset when you do shit 01:17:06 :p 01:17:11 though it would require knowledge of C 01:17:11 yes but 01:17:13 ais523: can emacs do that? 01:17:15 :soucre ~/.vimrc 01:17:16 ohwaityouaren'there 01:17:17 FIXES IT 01:17:18 *source 01:17:24 comex: umm, no, it wouldn't require that 01:17:26 create a function 01:17:29 then map a key to call it 01:17:30 voila 01:17:38 full vimscript at your fingertips (NOTE: vimscript is shit) 01:17:52 I meant it would require knowing that the file is C 01:18:02 which, according to ais523, is bad 01:18:09 /emacsy 01:18:11 I don't see why 01:18:14 :u 01:18:15 oh 01:18:22 I'm gonig to have to learn vim scripting though 01:18:25 now comex 01:18:30 how come source .vimrc fixes this 01:18:31 :| 01:18:32 so far I've just been copying from the tips wiki 01:18:40 echo -e \\0347\\0214\\0253 does precisely what it ought to. 01:18:48 ehird: do it after syntax on 01:18:51 if you're not already 01:18:56 wait, 01:18:58 -!- kerlo has joined. 01:18:59 cursor isn't syntax 01:19:01 * comex shuts up 01:19:04 that is default, for one :p 01:19:13 ehird: 01:19:16 move it to the end of vimrc 01:19:22 wtf 01:19:26 it works after syntax on 01:19:27 figure, go 01:20:55 -!- kerlo has quit (Client Quit). 01:22:00 -!- orelo has changed nick to kerlo. 01:22:26 I've deduced, I suppose, that screen is messing everything up. 01:24:07 hey comex, whats the thing for :e-but-in-a-new-tab 01:30:19 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 trees of bloom filters! 02:50:40 forests in bloom! 02:52:39 what's the most efficient way of representing 3 bit strings, A, (A|B), and B? 02:53:41 surely you can do better than 3n 02:55:48 um one is the or of the others? 02:56:04 oh wait 02:56:16 erm what is (A|B) 02:56:40 bsmntbombdood: ^ 02:56:49 bitwise or 02:56:54 oh 02:57:06 well just leave it out, duh 02:57:08 2n 02:57:23 -!- kwertii has joined. 02:57:48 ...except you're not allowed to do that 02:58:08 well then it's a question of what you mean by "representation" 02:58:27 since that is the precise shortest way, i think 02:59:55 what about sending A,B, and one of the flag pairs 10, 11 or 01? 03:00:31 2n+2, and each of them can be sent "separately" 03:00:52 of course that is long for everything _other_ than (A|B) 03:00:55 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 oh 03:02:21 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 obviously you need to add _something_ to be able to compute (A|B) from n bits 03:03:34 right 03:04:22 although theoretically the representations of A and B could be recodings, no need to store the actual same bits 03:04:45 A and B are independent 03:05:25 it just seems like it should be possible to do better than 3n because A|B is biased towards 1 03:07:56 hm no idea 03:10:12 -!- kwertii has quit ("bye"). 03:10:25 -!- kwertii has joined. 03:45:37 what's a good rolling checksum/? 03:47:23 0 03:47:26 It's round and smooth. 03:47:31 Should roll quite nicely. 03:47:51 It's also the 1-bit checksum (i.e. parity) for anything that has an even number of 1s. 03:48:30 ah, that's helpful 03:48:48 Damn, then I've failed. 03:50:40 -!- Sgeo[Worms] has changed nick to Sgeo. 03:52:04 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 ALL TAUTOLOGIES ARE TAUTOLOGIES 05:42:26 i just felt i should let you guys know this. 05:42:48 x!=x is true for some x 06:00:00 nan != nan 06:22:22 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 ehird: re. vim addressing the nonexistent last char on a line, look at :help 'virtualedit 10:38:01 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 Gahh that IE-only Travel system is horrible. 11:17:21 -!- mvmn has joined. 11:18:51 Hails 11:19:30 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 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 my computer is borken `___´ 11:43:39 BORK 11:43:43 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 oerjan is wrong 16:17:46 :split is for framey-things 16:17:46 but tabs 16:17:48 not 16:18:23 :tabe % 16:18:31 ah 16:18:33 tabe 16:18:47 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 hmm 16:30:21 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 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 — John McCarthy 16:56:35 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 — Marvin Minsky 16:56:42 NOW WE UNDERSTAND COMPUTATION! 16:56:45 — Stephen Wolfram 16:58:29 Wolfram solved the halting problem 16:58:43 yes he asked wolfram|alpha 16:58:47 "how to solve halting problem" 16:58:49 :D 16:59:01 and it gave him that stackoverflow article we linked earlier 16:59:04 (about the BF halting checker) 16:59:09 and then he enlighteninged 17:00:47 BF halting checker? 17:01:11 That shouldn't be too hard, considering that most BF is 30k cells or so 17:01:13 -!- MigoMipo has joined. 17:02:10 10AB -> B 17:02:10 11ABC -> 11AC1BC 17:02:19 ^ simpler than Binary Combinatory Logic? 17:02:22 hmm wait 17:02:26 that has 11 wrong 17:02:27 damn 17:02:28 nm 17:05:51 hi 17:05:56 hi 17:15:39 -!- bsmntbombdood has quit (Read error: 113 (No route to host)). 17:16:21 -!- bsmntbombdood has joined. 17:17:04 http://nitens.org/taraborelli/latex ← Typography porn. 17:19:51 ligatures are hot 17:20:38 I wonder if there's someone who's actually sexually attracted to good typography. 17:23:29 http://www.josbuivenga.demon.nl/tallys.html <- awesome font 17:23:48 Er, typeface. 17:23:51 Please forgive me. 17:24:41 ehird : We have someone on a conlanging forum 17:24:46 She has this expression 17:24:49 SCRIPTGASM 17:24:52 A person? On a forum? That's amazing. 17:24:58 Because she enjoys "pretty scripties" 17:25:10 Well, sure, but is she actually physically aroused by them? 17:25:17 You'll have to do some tests. 17:25:53 Well, she's a minor, so it would probably be illegal 17:26:06 -!- oklofok has joined. 17:28:47 Wow, why have I never used Hoefler Text before? 17:28:49 That's one awesome typeface. 17:35:17 kay, if I ever publish a book it'll be in hoefler tex 17:35:18 t 17:51:13 Deewiant, fizzie: There? 17:51:40 What exactly is the correct way to interpret a form feed in the program file when in befunge 98 mode? 17:51:54 byte #12 17:52:04 Deewiant, so it should just be loaded as it is? 17:52:12 Yes 17:52:49 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 Deewiant, that is for unefunge 17:53:06 Ah, crap 17:53:07 Then do that 17:53:14 so loading form feed raw into funge space would be inconsistent 17:53:15 I.e. ignore it 17:53:24 Deewiant, what about when you load with i? 17:53:34 "source file" 17:53:38 so 17:53:44 if it's a source file 17:53:48 then newlines are ignored 17:53:50 otherwise, it's not 17:53:52 i includes a file, right? 17:53:53 or sth 17:53:56 i'd class that as a source file 17:53:56 loading with i is equivalent to loading the source 17:54:02 ehird, you can load a source file with i, or a data file 17:54:19 AnMaster: I'd say any file-based representation of fungespace where one char = one place is a source file 17:54:22 you know wha I mean 17:54:23 anyway 17:54:31 Deewiant, i has two loading modes. 17:54:32 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 AnMaster: Yes, and they are both very well specced. 17:54:46 AnMaster: i can has two loading modes? 17:54:54 ehird, XD 17:54:57 I mean, that answers your question directly... I don't get why you're asking me 17:56:17 okay I am way too obsessed with fonts atm; halp 17:56:33 ehird: Use Comic Sans and forget the rest 17:56:37 http://bohemiancoding.com/?Fontcase <-- think I will download this to feed my crack^Wfont habit 17:56:40 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 Deewiant: I should make Comic Helvetica 17:56:51 AnMaster: 1) and 3) are equivalent 17:56:55 and cause the apocalypse 17:57:00 AnMaster: 1) just hardcodes the position as (0,0) 17:57:06 (,0,0,0...) 17:57:21 Deewiant, yes indeed. I just wanted to be sure I got it right 17:57:27 ehird: If you want to be useful add glyphs to DejaVu Sans Mono 17:57:37 I don't like dejavu sans mono :-( 17:57:48 It looks ugly. 17:57:56 Start with GLAGOLITIC CAPITAL LETTER SPIDERY HA 17:58:03 ... On the other hand! 17:58:07 Deewiant, currently I'm doing coverage analysis of cfunge and writing test cases for things missing mycology. 17:58:20 New project: Add the GLAGOLITIC CAPITAL LETTER SPIDERY HA to every font in the universe. 17:58:37 ehird, sounds cool. How do you make/edit a font btw? 17:58:43 AnMaster: using expensive software 17:58:47 U+2C22 if you want to look at a reference pic 17:58:56 ehird, I'm sure there is some free software *searches* 17:59:07 AnMaster: yes, but ... not very good. 17:59:12 media-gfx/fontforge http://fontforge.sourceforge.net/ ? 17:59:16 never tried it 17:59:26 typefaces are ... ever so slightly complex. 17:59:33 also very niche 17:59:38 Which would explain the lack of good free tools 17:59:42 unfortunately 17:59:43 well truetype is certainly complex 17:59:51 Fontographer seems popular 17:59:52 I remember reading about the file format some time ago. 17:59:54 -!- kar8nga has joined. 18:00:10 http://dejavu-fonts.org/wiki/index.php?title=Developer%27s_Corner suggests fontforge 18:00:15 AnMaster: truetype is out of date, actually 18:00:20 well, sorta 18:00:26 opentype is more widely used in new stuff IME 18:00:32 mhm 18:00:36 Deewiant: yes, but they're a free project; they wouldn't recommend a commercial tool 18:00:41 I never seen opentype on anything but apple 18:00:51 AnMaster: opentype is a microsoft format 18:00:56 oh hm 18:00:57 ehird: Yes, of course, I was only considering free ones anyway 18:01:05 Deewiant: Well, there's only fontforge. 18:01:14 ehird, I'm pretty sure I have seen opentype on OS X though... I may be wrong 18:01:17 yes 18:01:21 all default fonts on OS X are opentype 18:01:23 ah 18:01:37 holy crap I love fontcase 18:01:40 ehird, is opentype free and patent-unencumbered? 18:01:46 um 18:01:52 iii don't know 18:02:00 http://partners.adobe.com/public/developer/opentype/index_spec.html 18:02:01 I mean, just because it says "open" doesn't mean it actually is 18:02:08 there's the spec 18:02:19 mhm 18:02:19 -!- ais523 has joined. 18:02:22 hi ais523 18:02:23 hi ais523 18:02:37 ehird, argh! you were a second faster 18:02:46 so I ended up second 18:02:50 Ooh, Charcoal CY is a pretty typeface 18:03:01 -!- Judofyr has joined. 18:06:07 Deewiant, I think your = has a bug 18:06:26 hi ehird, AnMaster 18:06:30 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 Deewiant, try = on empty stack, it pushes 0 18:06:52 it might be UNDEF 18:06:56 -!- Mony has joined. 18:07:16 but to me it sounds like everything didn't go as planned 18:07:19 I'd say everything went as expected 18:07:27 You asked me to execute nothing and I did, successfully 18:07:32 Deewiant, so what is the meaning of empty string = ? 18:07:38 what does = do? 18:07:43 AnMaster: Like /bin/true 18:07:49 ais523: system() 18:07:59 hmm... empty string = is impl-defined, I'm almost certain 18:08:04 ais523, execute a string in an implementation defined way. This means system() usually 18:08:06 i just want to buy every typeface in the world. 18:08:10 and use them all. 18:08:20 plop 18:08:33 cfunge pushes -2 on empty string to = 18:08:34 hi Mony 18:08:46 what does system("") do? 18:08:48 AnMaster: FBBI would also push 0 18:08:48 that should be what = does. 18:08:57 ehird, implementation defined I *think* 18:09:01 AnMaster: try it on your system. 18:09:03 that is C implementation 18:09:04 If the value of command is NULL, system() returns non-zero if the shell 18:09:04 is available, and zero if not. 18:09:04 if it does something sane, copy that 18:09:09 system(NULL) is defined by the C standard, it tells you whether system() can do anything or not 18:09:11 Deewiant: do that, then 18:09:13 system("") is different, and isn't defined 18:09:17 oh 18:09:17 right 18:09:26 well, what does system("") do on linux/bsd? 18:09:29 just do that. 18:10:04 ehird: You do realize that my code is just push(system(popstring)) or something equally simple 18:10:11 Deewiant: Then your code is right./ 18:10:16 Hmm. 18:10:23 I'm going to make my own Befunge interp. Again 18:10:31 how's your INTERCAL impl doing? 18:10:32 ehird, it returns 0 18:10:38 AnMaster: Do that. 18:10:47 -!- jix_ has joined. 18:10:48 ais523: When I said April, I meant next April 18:11:14 C-INTERCAL 0.01 was famously written in a weekend 18:11:18 admittedly, it didn't actually work 18:11:18 But anyway; only three compliant implementations? This will not do. 18:11:24 Four, no? 18:11:30 Umm.. 18:11:32 Oh, stinkhorn? 18:11:35 Isn't that really incomplete? 18:11:40 on *POSIX* system() is defined like: 18:11:40 That makes five if it does 18:11:41 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 execl() as follows: 18:11:42 execl(, "sh", "-c", command, (char *)0); 18:11:45 what is stinkhorn? 18:11:45 Deewiant: list them? 18:11:48 ais523: Asztal's 18:11:52 CCBI, cfunge, RC/funge98 18:11:54 where is an unspecified pathname for the sh utility. 18:11:55 ehird: CCBI, cfunge, RC/Funge-98, Language::Befunge were the ones I was thinking of 18:11:57 What else is compliant? 18:11:58 oh 18:12:02 Language::Befunge is compliant? 18:12:04 And complete? 18:12:12 Last I checked, IIRC, yes 18:12:20 Well, very slow, I presume :P 18:12:33 He's working on speeding it up, haven't tried it in a while 18:12:45 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 void execute() { 18:13:00 ip.stack.push(cast(cell)system(popStringz())); 18:13:00 } 18:13:03 that is Deewiant's code 18:13:24 also, my interpreter's goal: 18:13:40 Be completely complian. Support as many fingerprints as possible. As a very distant last goal, be fast enough. 18:13:41 Make a DS9K 18:13:44 *compliant 18:13:58 Deewiant: I will be sure to have a flyDemonsOutOfUsersNose function. 18:14:00 Sounds like CCBI to me, 'fast' just a bit more distant then usual 18:14:02 Deewiant, hm = may *ONLY* reflect if = is unimplemented right? 18:14:03 Argh 18:14:04 s/then/than/ 18:14:08 is efunge complaint yet 18:14:14 AnMaster: I think so, yep 18:14:22 indeed 18:14:24 I doubt it's a complaint 18:14:37 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 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 also, MKRY is MikeRiley's new name; spread the word. 18:15:13 ais523, I found it doing coverage analysis, and I plan to complete that first, collecting a todo list. 18:15:21 brb phone 18:15:21 actually, I'd love to make a befunge-98 DS9K 18:15:34 a befunge-93 DS9K would unfortunately probably not function on any programs at all 18:15:43 Deep Space 9000? 18:15:52 ais523: make a (feral) DS9K fingerprint 18:15:55 ehird: Right, some of 2) is actually by choice and not just due to that DMD bug 18:15:56 that has no instructions 18:15:59 but when you load it 18:16:05 it puts the interpreter into DeathStation 9000 mode 18:16:08 ehird: For 3) we have hsfunge (or we don't, but funktio does) 18:16:12 for hardcore programmers 18:16:16 ehird: so it complies with the standard, but nothing else? 18:16:24 ais523: right! Not even the laws of physics. 18:16:26 unfortunately, it has at least one fingerprint loaded, and thus can legally do anything 18:16:26 That'd be a bit crap actually 18:16:46 Because the spec is so messed up that it probably wouldn't run many programs that well 18:16:52 Deewiant: 2) See? Inferior. 3) It is incomplete, and doesn't reach the other goals, and funktio is dead 18:17:01 also, that would be the point 18:17:13 funktio isn't dead, he said something on #haskell a few days ago 18:17:29 And for 2), well, we have RC/Funge-98 for that 18:17:31 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 he's pretty dead 18:17:39 and 2) RC/Funge doesn't meet the other goals :P 18:17:44 His site is dead 18:19:08 ehird: And given your original goals, I think it does meet 18:19:24 Deewiant: It fails 1) and 3) of my new goals 18:19:25 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 Slereah_: DS9K = DeathStation 9000 18:20:47 which is basically something that complies to the letter of a standard, but not its spirit 18:21:03 like Windows for POSIX, for instance, they got everything that legally could return ENOTIMPLEMENTED IIRC 18:21:06 ehird: You didn't explicitly specify those as goals 18:21:14 Deewiant: oh stfu :P 18:22:38 anyway the most important thing in a funge interp is a name; all else follows 18:22:51 maybe i should call it FG98 :-D 18:22:58 -!- jix has quit (Connection timed out). 18:23:10 http://www.haskell.org/pipermail/haskell-cafe/2009-March/057590.html <-- <3 18:23:14 ehird: what will its handprint be? 18:23:26 ais523: FG98 18:23:26 :P 18:23:29 makes sense 18:23:36 what will the handprint for the next version be? 18:23:43 next version? 18:24:00 AnMaster/Deewiant: do you have to change the handprint if you upgrade a Funge interp to a new version? 18:24:11 No 18:24:36 oh, it's variants that have to have different handprints 18:24:54 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 I NEED A BASIC REPL 18:27:10 ehird: BASIC isn't really suited to REPLs 18:27:16 Sure it is 18:27:19 Whyever not? 18:27:24 As long as it automatically numbers lines 18:27:30 because nearly all nontrivial BASIC programs span multiple lines 18:27:34 yes, and? 18:27:40 you mean liek c64 18:28:44 hee I wrote a BASIC program oh that was fun 18:28:47 what is so fun about BASIC? 18:28:49 it's so shitty/ 18:28:58 REPLs? 18:29:08 BASIC was one of the first languages to really catch on amongst the general computer-using public 18:29:09 Sgeo: o_o 18:29:11 !SYNTAX ERROR IN LINE 40, COLUMN 29 18:29:11 UNEXPECTED 1 18:29:13 EXPECTING : OR END OF LINE 18:29:14 it means "replica" 18:29:19 it just puts the parsec error in uppercase 18:29:19 xD 18:29:20 Sgeo: Read, Evaluate, Print, Loop 18:29:34 Sgeo: either me or ais523 is lying, i think 18:29:39 it's a small program that prints the results of expressions in a given language 18:29:49 such as ghci for Haskell, or intercalc for CLC-INTERCAL 18:30:04 Sgeo: it's like 18:30:07 $ python 18:30:08 for python. 18:30:13 * Sgeo wikis 18:30:14 (There, in words you understand. :P) 18:30:14 ty 18:30:18 lol 18:30:20 the interactive prompt 18:30:51 interestingly, with Perl you need to use perl -de 0 to get a repl 18:30:53 not just perl 18:30:59 hmm 18:31:00 question 18:31:04 in BASIC how come 18:31:06 IF X THEN NUMBER 18:31:10 gotos NUMBER 18:31:12 but, e.g. 18:31:15 PRINT "FOO":10 18:31:16 doesn't work 18:31:17 you need 18:31:20 PRINT "FOO":GOTO 10 18:31:28 IF X THEN 10 is an abbreviation 18:31:31 syntax antisugar, if you like 18:31:41 no that's definitely syntactic sugar 18:31:44 it was actually the only form of IF that used to be accepted 18:32:00 it used to be that IF only ever did a goto, you couldn't get it to do anything else 18:32:07 "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 oh, that was important on early computers, removing all the whitespace from a program helped it to fit in memory 18:33:20 10 PRINT "LOOK AROUND YOU"; 18:33:21 20 GOTO 10 18:33:28 LOOK AROUND YOU 18:33:30 LOOK AROUND YOU 18:33:33 LOOK AROUND YOU 18:33:33 NO 18:33:34 it has ; 18:33:35 LOOK AROUND YOU 18:33:36 it all goes on one line 18:33:38 LOOK AROUND YOU 18:33:39 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 ; is an anti-newline in BASIC print statements 18:33:52 OHHHHHHHHHHHHHHHHHHHHH 18:33:56 even better, 18:34:01 <3 Look Around You 18:34:04 PRINT "LOOK AROUND YOU"' 18:34:05 although; in the original one, it had no ; 18:34:09 prints LOOK AROUND YOU and then two newlines 18:34:11 different implementations 18:34:22 my implementation is non-standard! 18:34:29 Look, around you. Look around, you. Just, look around you. 18:34:30 LOOK AROUND YOU 18:34:33 INFINITE LOOP DETECTED 18:34:40 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 LOOK AROUND YOU SORRY IT IS LOOP 18:35:01 oh wait 18:35:04 http://www.youtube.com/watch?v=mdI_MmN-Lp4 18:35:06 it has a space and a ; 18:35:10 10 PRINT "LOOK AROUND YOU "; 18:35:10 20 GOTO 10 18:35:12 back 18:35:12 amended code 18:35:38 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 GregorR: 18:36:06 http://www.youtube.com/watch?v=mdI_MmN-Lp4 18:36:09 Cheskers in Look Around You 18:37:09 ais523, what would be the easiest way to insert a literal form feed in emacs? 18:37:17 Ctrl-V Ctrl-M 18:37:18 No? 18:37:21 AnMaster: ^Q^L 18:37:26 Oh, ^L 18:37:27 ehird, maybe. I forgot the key combo 18:37:27 well, C-q C-l as this is emacs 18:37:30 thanks 18:37:40 ehird: C-v is "scroll down" in emacs 18:37:45 yeah fuck emacs 18:37:45 :P 18:37:51 C-q is "insert next character literally unless it's a digit" 18:38:00 ais523, so which key is form feed then 18:38:04 AnMaster: C-l 18:38:12 You know the problem with VINTAGE BASIC? 18:38:15 No "DRAW" instruction. 18:38:17 ah right 18:38:21 I fucking need DRAW. BASIC is useless without it. 18:38:34 ehird: That's where I got the idea :P 18:38:39 GregorR: Hahaha 18:40:47 "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 Wow, is that to avoid an extra variable? 18:41:11 I'm pretty sure that after a while, they generalised it to add negative arguments 18:41:16 but I forget what they do 18:41:27 and yes, variables used to be in short supply 18:41:37 but not just that, to avoid having to write out the code to save the random number in a variable 18:41:53 original BASIC was highly golfed, by necessity, the programs wouldn't fit in memory otherwise 18:44:43 Yay, i wrote a guessing game. That was so pointless, but I enjoyed it anyway. 18:44:46 10 A=INT(RND(1)*100) 18:44:46 20 INPUT"GUESS THE NUMBER";B 18:44:47 30 IF B=A THEN 60 18:44:49 40 IF B 50 IF B>A THEN 80 18:44:52 60 PRINT"YOU WIN!":END 18:44:55 70 PRINT"TOO SMALL":GOTO 20 18:44:56 80 PRINT"TOO BIG":GOTO 20 18:45:16 ehird: line 30 is redundant 18:45:21 Aha, so it is. 18:45:22 you could delete it and the program would still work 18:45:48 How did kids guess the target line number before they wrote it...? 18:45:59 you can write the lines in any order 18:46:02 and revise them 18:46:07 so you just write GOTO 0 the first time round 18:46:12 and then edit the line later to fix the number 18:46:14 Oh, how boring. 18:46:18 * ais523 used to have a BBC BASIC computer 18:46:47 hmm, I'm sure it can be less than 7 lines 18:46:53 although...nah 18:46:59 well 18:47:14 30 C=1+SGN(A-B) 18:47:19 10 INPUT"GUESS THE NUMBER";B 18:47:19 20 IF B 30 IF B>INT(RND(1)*100) THEN 60 18:47:23 40 PRINT"YOU WIN!":END 18:47:25 50 PRINT"TOO SMALL":GOTO 20 18:47:25 40 CASECON70,60,80 18:47:27 60 PRINT"TOO BIG":GOTO 20 18:47:29 that works, but it pointless 18:47:31 ais523: whaddafu 18:47:37 ehird: same length, unfortunately 18:47:41 -!- Corun has joined. 18:47:44 also, you need RND(0) not RND(1) 18:47:47 oh, right 18:48:06 * ehird rewrites program in haskell to see how far programming has advanced 18:48:11 also remember you're allowed lowercase in string literals 18:48:14 that'll make the output look nicer 18:48:21 SSH 18:48:22 this is the 70s 18:48:27 there is no such thing as lowercase 18:48:40 lowercase hasn't been INVENTED yet 18:48:52 the appendix to the ALGOL-68 standard stated an optional program file format for computers that allowed lowercas 18:48:53 *lowercase 18:48:57 so yes, it had been 18:49:10 although apparently it wasn't in common enough use to assume all computers had it 18:50:05 And then came unicode. 18:50:11 and RUINED EVERYTHING. 18:50:18 anyway, I want my DRAW. 18:50:26 I am ITCHY without DRAW. 18:50:59 READ var1, var2, ... 18:50:59 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 wat 18:51:15 ehird: you don't know of READ? 18:51:25 I don't know what the heck it is on about 18:51:35 here's an example 18:51:36 DATA literal1, literal2, ... 18:51:36 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 10 READ A 18:51:40 nt occurs can be used as the target of a RESTORE statement. Example: DATA January, 31, "Martian History Month". 18:51:43 whyyyy 18:51:45 20 PRINT A 18:51:47 30 GOTO 10 18:51:53 40 DATA 1,2,3,4,5,6,7,8,9 18:51:54 martian history month!!! 18:52:00 ais523: good lord, why? 18:52:00 that prints all the numbers from 1 to 9, then errors 18:52:11 beautiful... but... WHY 18:52:21 ehird: well, you're hardly going to waste your precious 52 variables by using them to store data, are you? 18:52:29 <33 18:52:42 DATA effectively creates ROM 18:52:47 that you can access via READ and RESTORE 18:52:58 -!- Corun has quit ("This computer has gone to sleep"). 18:53:30 10 RESTORE -10: READ A: PRINT A: GOTO 10 18:53:42 http://drivey.com/DONKEYQB.BAS.html 18:53:48 DONKEY.BAS is the prettiest program ever written. 18:53:53 MizardX: RESTORE takes arguments? Wow, I never knew that 18:54:01 Good luck writing DONKEY.BAS that concisely in modern languages 18:54:11 that QB implies QBasic 18:54:12 is it? 18:54:15 Yes, it's a port 18:54:21 but that presumably doesn't change all that much 18:54:47 -!- Corun has joined. 18:55:07 ehird: that first line, translated to C, would be *(char*)106 = 0 18:55:15 I hate to think what that was designed to do... 18:55:26 eh, you know POKEs 18:55:31 ais523: it'd be putting it into graphical mode 18:55:32 probably 18:55:35 ah, yes 18:55:43 the only thing I ever used POKEs from was to turn caps lock on and off 18:55:55 after a while I wised up and converted the input to uppercase/lowercase in my program instead 18:56:01 with POKE, your days of 52 variables are long gone! 18:56:07 er, and PEEK :P 18:56:12 * lament POKES ehird 18:56:28 :o 18:56:33 "Donkey .NET is a three-dimensional driving simulator game that demonstrates the new features available to Microsoft® Visual Basic® developers." 18:56:35 http://www.microsoft.com/downloads/details.aspx?FamilyID=990d0ec1-23ea-4408-898d-1fd5727a8890&displaylang=en 18:56:41 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 urce code. 18:56:46 NO! Not Visual BASIC! 18:56:59 also, .NET? 18:57:01 Yes. 18:57:05 Blasphemy of the highest degree. 18:57:07 Visual BASIC was invented ages before .NET was 18:57:16 visual basic is now VB.NET 18:57:29 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 most byte-compiled langs have their own bytecode 18:58:10 but all the microsoft ones compile to .NET 18:58:32 the microsoft folks endorse Mono semi-officially 18:58:33 which is nice 18:58:40 e.g. silverlight download page on linux, directs you to mono's Moonlight pag 18:58:41 e 18:59:03 Microsoft are currently at the stage of trying to get Silverlight generally accepted 18:59:12 % vintbas /dev/stdin 18:59:12 POKE 0,0 18:59:14 !LINE NUMBERING ERROR IN RAW LINE 1, COLUMN 1 18:59:16 UNEXPECTED "P" 18:59:18 EXPECTING LINE NUMBER OR END OF FILE 18:59:18 making people think it has good Linux support is one way to do that 18:59:20 Useless. 18:59:28 although interestingly, there doesn't seem to be a Mac version, or wasn't last I looked 18:59:39 mono runs on os x 18:59:45 dunno about plugins tho 18:59:45 ah, I didn't know that 19:00:05 hmm 19:00:05 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 I wonder if there's a portable QBasic interpreter 19:00:17 no idea whether that one's true or not 19:00:28 ehird: QBasic runs under DOSbox, I suspect 19:00:28 (using a virtual heap, OFC, with traps on things like that 103) 19:00:37 ais523: meh, I guess so 19:00:39 it'd be nicer to have it to hand 19:01:04 and there are so many peeks/pokes to literal addresses in typical programs you'd want a full DOS emulator 19:01:10 Tru 19:01:10 e 19:02:40 http://boxerapp.com/ <-- Wow, someone made DOSBox all mac-like. 19:02:51 Isn't that a bit pointless when the actual DOS inside will be very very DOS? :P 19:03:17 people are allowed to delude themselves 19:03:48 form over function, ALWAYS 19:04:20 the DOS inside DOSBox isn't all that DOS-like, I find 19:04:24 which is strange 19:04:26 Robdgreat: Y'know, it's possible to have both. 19:04:33 some of my old DOS programs don't run in it 19:04:49 it's for games, not for your old dos programs 19:04:54 it's for dune and xcom 19:04:55 lament: Yeah, true. 19:05:08 lament: but my programs were games 19:05:13 admittedly, I wrote them 19:05:18 but it doesn't prevent them being games 19:05:45 ehird: true, but I won't throw a hammer out just because it's not pretty enough 19:05:48 i'm guessing that dosbox is a fairly imperfect emulation 19:05:53 Robdgreat: indeed 19:06:04 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 what about running FreeDOS in a VM? 19:06:21 that ought to work if the VM works properly 19:06:27 and their list of popular games might not actually include any games by ais523 19:06:45 Aww, Boxer comes with ton sof DOS tols but not qbasic. 19:06:47 never mind, I ported that game to Windows ages ago and it runs in WINE 19:07:03 I'll probably port it to Allegro or SDL sometime 19:07:14 then it'll run in Linux too, and probably on a Mac 19:07:21 Huh, it comes with a bunch of games. Aren't they copyrighted...? 19:07:32 not all DOS games are copyright 19:07:40 one of them is Commander Keen 4 19:07:41 and nearly all are abandonware, technically that's illegal but nobody but me seems to care 19:07:53 it's good you care 19:07:54 also, abandonware is legal, it's just that most things aren't abandonware 19:08:16 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 Maybe it's the shareware version of Keen 4? 19:09:32 it looks full 19:09:32 -!- Corun has quit ("Leaving"). 19:09:41 ais523: The sites claim it's games with expired copyright 19:09:49 of which there are none in the US, as far as I know 19:09:56 or, probably, the UK 19:10:14 copyright is stupid anyway, it should expire way earlier 19:10:29 none of this 2 to the power of the age of the author at death + 7 million years 19:10:34 it is possible, I think, for there to be DOS games nowadays where the author died over 25 years ago 19:10:41 hmm, true 19:10:43 how many, though? 19:10:51 not a lot, I suspect, most programmers are quite young 19:10:58 but I suppose they might have died in an accident or something 19:11:14 I suppose 19:11:19 http://en.wikipedia.org/wiki/QBasic#Simple_game 19:11:19 wow 19:11:21 that sucks 19:11:26 that's waaay longer than my version 19:11:36 all theirs does is decease the range and put a cap on the guesses 19:11:37 :P 19:11:42 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 boughteded 19:12:15 Okay, who has QBASIC.EXE? 19:12:45 I used to have it, but I think it's bit-rotted to death by now 19:12:50 Google has it. 19:13:08 Yes, well, I'm trying to google it, fizzie 19:13:12 I have dos 6.22 installation floppy images I dd'd once, I assume it would be there too. 19:13:18 http://www.winsite.com/bin/Info?4385 has a download link. 19:13:19 http://www.velocityreviews.com/forums/t43803-does-xp-have-coding.html DOES XP HAVE CODING 19:13:29 I have it somewhere 19:13:31 * Robdgreat digs 19:13:38 I believe at least one program has been written on Windows XP 19:13:53 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 I certainly ported programs from Windows 95 to Windows XP 19:13:55 wut, why does "copy con con" say con not found 19:13:59 *banana 19:14:01 it's con: 19:14:03 lament: haha 19:14:03 which is pretty worrying 19:14:04 fizzie: o 19:14:10 fizzie: that doesn't work either on DOSbox, IIRC 19:14:16 fizzie: no u lie 19:14:18 DOSbox is not a very good implementation of DOS 19:14:18 ILLEGAL PATH 19:14:29 Hey. 19:14:31 it doesn't even say illegal command or file name or murder 19:14:32 ehird: it was originally CON: on the precursor to DOS 19:14:36 it says Illegal command: blah. 19:14:41 zem.fi/~fis/qbasic.exe 19:14:42 DOS changed it to CON.* 19:14:44 including with no extension 19:14:52 because back then, most programs had implied extensions 19:14:57 For some strange reason, qbasic.exe was uncompressed on the first install floppy of dos 6.21. 19:15:12 http://www.winsite.com/bin/Info?4385 <-- this lacks .hlp 19:15:16 I didn't even realise you could get dos 6 except bundled with Windows 19:15:33 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 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 I wonder if you can buy QBASIC from microsofft 19:16:24 or download it for free? 19:16:26 ehird: http://zem.fi/~fis/qbasic.hl_ has the hlp file, but you need expand.exe to uncompress it. :p 19:16:27 *microsoft 19:16:34 ais523: I doubt they would give anything away for free 19:16:48 they gave away limited versions of VC++ for free 19:16:52 well, yesy es 19:16:55 and that's a lot more advanced than QBaisc 19:16:57 *QBasic 19:16:58 Although you can download expand.exe too from http://zem.fi/~fis/expand.exe 19:17:07 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 yay 19:17:24 * ehird attempts to configure Boxer to stretch the display WITHOUT antialiasing it badly 19:17:52 "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 wow, are microsoft advising people to violate their own licence? 19:18:16 ha 19:19:39 ehird: try http://download.microsoft.com/download/win95upg/tool_s/1.0/w95/en-us/olddos.exe 19:19:56 I haven't looked myself, but allegedly qbasic is in there 19:20:16 # "opengl" will use bilinear filtering when scaling (smoother but 19:20:18 # fuzzier), while "openglnb" will preserve the original appearance 19:20:20 # (which may result in odd stretching at certain resolutions.) 19:20:22 aha 19:20:35 Din't work :( 19:20:59 AnMaster: I'd say don't even increment, since that's how Unefunge works 19:21:44 Deewiant, right 19:22:11 Deewiant, CCBI fails to handle it correctly 19:22:22 Yep, probably 19:25:02 hmm, boxer is actually quite nice 19:26:39 -!- ais523_sandbox has joined. 19:26:45 Hmm. 19:26:51 sorry about that 19:26:52 Where do executables go in DOS, generally? 19:26:54 C:\, right? 19:27:02 ehird: a directory inside c:| 19:27:04 *c:\ 19:27:07 Wherever you want 19:27:08 named after the executable 19:27:13 Deewiant, btw, CCBI never writes at a higher x coordinate than the edge of the initial loaded program 19:27:14 ah 19:27:24 Deewiant, while it does write at a higher y coordinate 19:27:29 AnMaster: write? 19:27:38 Deewiant, p or other way to update 19:27:47 O_o 19:27:48 Deewiant, that would cause bounds to change in y 19:28:09 incidentally, I'm inside the sandbox at the moment to see what olddos.exe does 19:28:16 it seems to have qbasic.exe in 19:28:20 and no licence agreement 19:28:33 So are you saying that '5f0pf0g.@' doesn't work? 19:28:39 Or what? 19:28:45 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 yay, it works 19:28:59 I now have what is AFAICT a legal copy of QBasic, direct from Microsoft 19:29:14 run olddos.exe in dosbox, rather than wine 19:29:17 AnMaster: So what exactly doesn't work? 19:29:26 Does the above work? 19:29:26 ais523_sandbox: if they're offering it, my downloaded version is legal too 19:29:31 I suppose so 19:29:40 Deewiant, well it works. Just you didn't test that 19:29:41 unless it's a different bit pattern in the version they're offering, or something 19:29:48 anyway, going back out of the sandbox 19:29:53 -!- ais523_sandbox has quit (Client Quit). 19:30:01 AnMaster: So you meant to say 'Mycology' and not 'CCBI' 19:30:09 Deewiant, ah yes 19:30:10 typo 19:30:13 (mental one) 19:30:16 Phew, you had me worried there :-P 19:30:22 "The letters are like right next to each other." 19:30:24 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 http://imgur.com/6AYNY.png <- The unparalleled elegance of the Mac OS X user interface. 19:30:40 Yes, that can happen 19:31:08 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 There needs to be a way of copying text from DOS to outsid 19:31:49 e 19:31:51 :P 19:32:18 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 or such 19:32:24 Works right in DOSemu on Linux. ;) 19:32:29 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 pikhq: You can copy and paste text from QBasic to elsewhere? 19:32:48 Impressive; howd oes it work? 19:33:06 How anything in X11 works: select and middle-click. 19:33:22 Yes, but DOS isn't that simple. 19:33:23 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 I mean how does it work internally. 19:33:34 32 cases for p? 19:33:37 In a text video-mode, you can just read the screen buffer. 19:33:50 Ah. Yeah, it just reads the screen buffer... 19:33:55 It's interleaved [character, attributes, character, attributes, ...] list of bytes. 19:33:58 Does QBasic run in text video mode? I'm not sure. 19:34:03 Deewiant, what do you mean 32 cases of p? 19:34:04 Yes, it does. 19:34:05 -!- ais523 has joined. 19:34:07 OK. 19:34:10 wb ais523 19:34:12 aargh 19:34:15 eh? 19:34:19 it seems there's something wrong with the user switcher atm 19:34:21 I had to restart X 19:34:38 AnMaster: Exaggeration; there are 9 cases 19:35:12 Just a matter of reading from (short *)0xB8000... 19:35:14 Deewiant, you mean, in bounds, and various out of bounds ways? 19:35:19 or what? 19:35:22 Yep. 19:36:09 Deewiant, well -1,-1 is much easier to get wrong indeed 19:36:25 All that tests is that negative funge-space works 19:36:35 I assume that people can get /positive/ funge-space to work... 19:36:44 ITYM "reading from b800:0000"; this is, after all, about DOS, so a segmented form of addressing is more appropriately crazy. 19:37:10 Hmm, I wonder if you can get QBasic to "print" out its manual. To a PDF. 19:37:36 DOS addresses are so weird 19:37:45 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 also, can you actuallty type b800:0000 in a DOS C file? 19:37:59 it's 0xb8000000 19:38:05 Right, right; definitely b800. 19:38:11 although you generally have to cast it to a long pointer 19:38:15 ehird: No, that's the assembly notation. 19:38:23 (char far*)0xb8000000 19:38:25 Ah. 19:38:31 * 100% as defined by gcov and excluding any "fputs("The impossible happened. Internal error.\n", stderr); abort();" 19:38:37 far isn't part of standard C, but is defined in any good DOS header file 19:38:41 it works much the same way as const 19:38:42 (char huge*)0xb800000 19:38:52 ais523: More useful to be (short far*)0xb8000000, I'm pretty sure. 19:39:01 pikhq: short's only 16 bits 19:39:15 Yeah. 19:39:25 Hm. What was the point of special "far pointers"? 19:39:31 (void huge*) is somewhat amusing IMO 19:39:34 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 And why are they not used any longer in modern code. 19:39:52 AnMaster: http://en.wikipedia.org/wiki/Far_pointer 19:39:59 AnMaster: A far pointer was a pointer outside of your current segment. 19:40:12 ah right. Flat address space :) 19:40:14 AnMaster: because having two lengths of pointers was common in DOS 19:40:14 They're not used because nobody, and I mean *nobody* uses segmented addresses. 19:40:29 even with segmented addresses, they wouldn't be used nowadays because computers have lots of memory 19:40:35 and so making all pointers far would work fine 19:41:22 what about speed? I guess you could fit more non-far pointers in cache than far pointers? 19:41:34 It'd be very slightly inefficient making all pointers far. 19:41:50 You'd end up writing to cs every time you did a jump. ;) 19:41:55 how large are far/non-far pointers on x86? 19:42:11 AnMaster: far is 32 bits, near is 16 bits 19:42:14 Depends on your current execution mode. 19:42:20 in real mode, at least 19:42:35 which used to be the only one available, but nothing but bootloaders use it nowadays 19:42:59 hm. 19:43:02 Erm, how do you terminate a QBASIC program? 19:43:11 For protected 32-bit mode, double that... 19:43:24 ehird: Ctrl+Break 19:43:27 And for long mode, near is 64 bits and far doesn't exist. 19:43:36 Where is break on the keyboard again? So I know what it's mapped to :P 19:43:37 ehird: run off the end of the program 19:43:41 ais523: no, while it's running 19:43:42 Pause 19:43:43 oh, break's normally control-pause 19:43:51 ... and pause is where? :P 19:43:56 I pressed F16 and that paused the program 19:43:58 right of scroll lock :) 19:44:03 near scroll-lock and sysrq, normally 19:44:06 ... F16?!? 19:44:06 You guys hate me. :) 19:44:13 pikhq: Apple keyboard. 19:44:14 pikhq, well amd64 has several addressing modes in fact. 19:44:20 though not near/far 19:44:26 AnMaster: Segmented is not one of them. 19:44:30 AnMaster: there was huge as well as near and far 19:44:33 pikhq: See http://www.purelygadgets.co.uk/images/user/products/Apple-keyboard.jpg 19:44:33 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 huge is like far, but wraps properly 19:44:45 fizzie: 32-bit selector. 19:44:52 e.g. with huge pointers, 0x3000ffff + 1 is 0x40000000 19:45:10 ehird: No Num Lock? 19:45:11 Are you sure the selector has 32 bits? I mean, physically speaking. I'm sure it could have in a pointer. 19:45:18 Deewiant: None. The numpad always numbers. 19:45:26 Number is a verb, naturally. 19:45:27 The selector is a pointer to the start of the segment. 19:45:32 pikhq, true. But then there are other things: RIP relative addressing, code model (small, medium, large and kernel) 19:45:40 and various other things 19:45:57 which IMO are about as strange. 19:46:14 AnMaster: Yeah, long mode is a bit strange. 19:46:20 Erm, halp. 19:46:24 ehird: looking at that keyboard, I'd say F16 is the pause/break key 19:46:29 Right, f16 pauses 19:46:32 as it's three keys to the right of f12 19:46:34 pikhq, RIP relative *does* make sense though. Makes PIC code more efficient IIRC. 19:46:35 But what is F13? 19:46:36 what does control-f16 do? 19:46:36 aha 19:46:38 cmd-f16 pauses 19:46:42 *f13 19:46:45 Deewiant: It beeps. In my experience. 19:46:47 and control not cmd 19:46:51 ehird: How useful. 19:46:53 http://en.wikipedia.org/wiki/File:Sgapage.jpg 19:46:55 F13 does nothing in boxr 19:46:57 *boxer 19:47:10 what is more interesting is that AMD64 actually has a 48 bit address space. Sign extended. 19:47:21 Okay, I froze it. 19:47:26 Now the program thing says "QBASIC PAUSE". 19:47:28 with kernel living in the upper half, and user space in the lower. 19:47:37 pressing any key other than pause normally restarts it 19:47:37 so 48 bits, sign extended to 64 bits 19:47:44 bbl 19:47:47 Not this time, ais523, I think DOSBox is paused 19:47:53 ah, ok 19:47:54 AnMaster: That's on current implementations. 19:48:25 * ehird reboots 19:49:38 Strings can't be longer than 32767 chars. 19:49:56 Arrays cannot be longer than 64KB 19:50:06 Also, only 60 dimensions 19:50:14 I think even VB6 kept some of those restrictions 19:50:14 Oh, and you can't address 64KB< only 32767 19:50:40 Max path size 127 chars 19:52:20 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 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 And 15 nesting levels of #include files, that's reasonably low too. 19:52:59 Not to mention the "127 arguments in a function call", that's a limit I hit all the time! 19:53:19 Thus, almost all of the limits of Qbasic are because it's a freaking 16-bit language. 19:53:46 (though why the size_t equivalent is *signed* is beyond me) 19:53:58 For cyclexa 19:54:12 Ah, right. 19:54:25 Real mode = screwy. 19:54:39 ehird: why did you just mention cyclexa? 19:54:43 Dim x(-10 to 10) as Integer 19:54:46 ais523: 19:54:47 18:53 pikhq: (though why the size_t equivalent is *signed* is beyond me) 19:54:48 that seems quite a non-sequitur 19:54:53 neg strings 19:55:00 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 holy shit, accessing the variable INKEY$ actually gives a prompt 19:55:13 that's fucked 19:55:38 seriously, yes 19:55:52 well, not a prompt 19:55:57 but it puts it into hello i am listening to you mode 19:55:58 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 That's one ugly program. 19:56:36 fizzie: I'm pretty sure those C99 limits are the minimums an implementation must support. 19:57:02 I suspect that most C implementations are limited by what the architecture they're on will allow. 19:57:25 Sure, but it's still an ugly program that contains one instance of all the limits. 19:57:45 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 I wonder if someone's written one for compliance testing. 19:57:55 That's fugly. 19:58:31 Hmm. Does it specify anything for Unicode literals? 19:58:40 fizzie: someone must have done, surely 19:58:50 there's probably a 127-argument macro in boost somewhere, come to think of it 19:59:35 AnMaster: That's on current implementations. <-- yes 19:59:45 10PRINTINKEY$:GOTO10 19:59:57 Aw, you need a space. 19:59:58 PRINT INKEY$ 20:00:15 pikhq, mine even says: "address sizes : 40 bits physical, 48 bits virtual". Not sure what that means. 20:00:19 Oh well, 10 PRINT INKEY$: GOTO 10 20:00:22 from /proc/cpuinfo 20:00:26 Hm, that hangs. 20:00:33 Oh of course. 20:00:35 Make that INKEY$; 20:00:40 Now how do I terminate... 20:00:50 AnMaster: nowadays pointers used in applications nearly never correspond to the actual memory address in the RAM 20:00:51 pikhq, a server I sshed to has: "address sizes : 48 bits physical, 48 bits virtual" though 20:00:53 AnMaster: Allows for up to 40 bits worth of physical RAM, and 48 bits worth of stuff mmapped. 20:00:59 ais523, of course. 20:01:07 ais523, I know what paged memory is... 20:01:08 ais523: That's because of paging, of course. 20:01:19 AnMaster: so the pointer width of the RAM and the pointer width in executables need not be the same 20:01:32 Agh. 20:01:35 Must figure out how to terminate. 20:01:36 ais523: Except that the architecture itself demands it. ;) 20:01:54 pikhq: well, the architecture demands 64 bits 20:02:04 but the RAM is incapable of paying attention to all 64 bits 20:02:08 ais523, well duh. And then there is 32-bit mode under 64-bit too. 20:02:12 Oo, this Xeon box says: address sizes : 36 bits physical, 48 bits virtual -- tiny tiny 36-bit thing. 20:02:14 generally speaking, it'll pay attention to the top 1 bit, and the bottom n 20:02:15 which is yet another thing 20:03:08 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 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 Greh, I can't get this to terminate. 20:04:37 Btw, 8 GB ram on this would require 2 x 4 GB RAM sticks 20:04:42 since there are only two slots 20:04:42 Agh, DOSBox paused. 20:04:45 How do I undo that.. 20:04:46 That's a function of the system bus, I'm pretty sure. 20:05:02 And/or the memory bus. 20:06:46 Geee. 20:06:47 er. 20:06:48 Grrrrr. 20:11:35 You know, the news has become hard to tell apart from satire... 20:11:48 " 'This example requires a color graphics adapter. " 20:11:51 Duuuude, I can't afford that. 20:11:52 :( 20:12:13 Recently, a court ruled that the statement in a libel case being *true* is not a defense. 20:12:21 hahahaa 20:12:30 USA, I assum 20:12:30 e 20:12:34 Yeah. 20:12:42 What other country would be *that* insane? 20:12:43 pikhq: lol? 20:12:50 what's a valid defense then? 20:13:01 The statement not being malicious. 20:13:04 That's *it*. 20:13:11 ehird: it's hard to find a CGA graphics card nowadays... 20:13:17 I wonder if modern cards can emulate it? 20:13:34 Whoa. I just drew a fuckin' CGA triangle. 20:13:36 Hardcore shit. 20:14:02 drawing filled triangles was actually hardware-accelerated on the BBC Basic 20:14:09 SCREEN 1 20:14:15 ais523: VGA is a superset of CGA. 20:14:17 DRAW "C2F60L120E60BD30P1,2C3" 20:14:20 FUCK YEAH 20:14:24 ais523: How many million triangles it could fill in a second? 20:14:34 fizzie: probably about 0.00001 20:14:45 just because it was accelerated didn't mean it was fast 20:14:48 hmm 20:14:53 you could see the triangle fill if you watched really closely 20:14:56 so, if you made most of your graphics as compositions of triangles 20:15:01 your game would be faster? :D 20:15:03 but it was a lot faster than doing it any other way 20:15:15 ehird: yep, traditionally quadrilaterals were filled by filling two triangles 20:15:41 That's surprisingly modern, given that triangles is what they draw nowadays too. 20:16:15 Today on synchronicity, a friend just told me he's watching look around you because apparently it's good. 20:16:38 Now more QBasic. 20:17:02 Omg. 20:17:05 Look up the command "WAIT". 20:17:06 It's select()! 20:17:50 what does QBasic get its multiple input sources from? 20:17:54 Ports 20:19:28 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 PLAY "L64ABCDEFGFEDCBA" ;BLEEPYEAOW 20:20:02 err 20:20:04 PLAY "L64ABCDEFGFEDCBA" 'BLEEPYEAOW 20:21:38 Huh, ? expands to PRINT> 20:25:07 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 a song: 20:25:48 N = 64 20:26:02 DO: PLAY "L"+STR$(N)+"ABCDEFGFEDCBA": N=N-1: LOOP WHILE INKEY$="" 20:28:53 What the fuck 20:28:57 you can get qbasic to CHECK TYPES 20:31:03 I am playing DONKEY.BAS. 20:31:07 I like the sfx. 20:32:29 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 Huh, ais523? 20:32:58 It works if you comment out the DEF SEG : POKE 106,0 line 20:33:23 fizzie: that's a great content-type 20:35:08 * ehird cheats DONKEY.BAS 20:35:14 by making the donkey always go in the second lane 20:35:20 also, I think this actually checked collisions by if the pixels hit 20:35:23 instead of keeping track... 20:36:09 -!- comex has changed nick to judicaster. 20:36:30 It's funny how the qbasic help file has code examples with inline asm: http://zem.fi/~fis/code.txt 20:36:47 Hey, you have a text copy? Gimme, I can't stand this interactive one :P 20:36:49 also, that's awesome 20:36:53 so, so awesome 20:37:05 fizzie: I thought it was inline machine code 20:37:15 Okay, the inline asm is just a comment. 20:38:55 * ehird invents DONKEY.BAS variant: 20:38:58 Invisible Donkey.BAS 20:39:00 The donkeys are invisible. 20:39:12 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 That one was converted through iconv -f cp437 -t utf-8, so the line-drawing characters are partially correct. 20:39:42 fizzie: It's not the F1 so it works for me! 20:41:00 How to have INVISIBLE DONKEY.BAS: 20:41:04 Comment out line 81 20:41:08 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 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 Maybe I should write a Perl script to convert that to HTML. 20:42:44 That would be fairly easy 20:42:49 If you don't do it i will :P 20:42:50 It doesn't seem to be an especially difficult format after that helpmake. 20:43:28 Maybe I'll do it. 20:44:41 But you might have to wait some hours; I'm the slow. 20:46:41 -!- kar8nga has joined. 20:49:56 Hmm, you can't SLEEP for less than a second without PLAY, I think. 20:49:56 brb-> 20:50:08 Oh, TIMER 20:52:55 ehird: you can do it by polling timer in a loop, I always used to 20:52:57 but that's a busywait 20:53:05 -!- jix_ has quit ("..."). 20:53:10 also, note that a SLEEP ends if someone presses any key, including shift or control 20:59:32 any smart guys here knows anything about A* and UCS? 20:59:47 Judofyr: A* as in the search algorithm? 20:59:51 yep 21:00:10 I've used it before, sort of 21:00:13 but am not an expert on it 21:00:18 I've even coded it 21:00:19 and I don't know of UCS 21:00:21 Though poorly 21:00:32 UCS is the Universal Character Set 21:00:59 oh, as in UCS-2 21:01:05 Uniform-cost search :-) 21:01:09 D'oh 21:01:18 I guess it's a stupid question, but will A* and UCS always return the same shortest path? 21:01:38 (when you trace the route back again) 21:01:40 Probably not 21:02:12 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 but if there's only one, both of them will find it? 21:02:59 but A* will probably find it faster? 21:03:01 Sure 21:03:06 Well, depends on your heuristic again :-P 21:03:11 yeah 21:03:17 I've just followed a crappy assignment one of my friend got 21:03:56 so I'm not very steady on this :P 21:04:13 but it's quite fun 21:04:18 doing it in Scheme :O 21:21:40 ehird: I did at least most of the conversion: http://zem.fi/~fis/qb.html 21:22:03 Hm, there's an unterminated somewhere, I think. 21:22:09 Don't look at it yet. :p 21:24:07 http://www.haskell.org/pipermail/haskell-cafe/2009-March/057590.html 21:24:19 This is my first public release of open source software. I have been working on this project since 2003. 21:24:25 " 21:24:36 Yes. It's because the source file interleaves things. A pure translation would look like foobarbaz. It's horrid. 21:24:59 % wc -l `find` 2>&1 | grep total 21:25:01 4496 total 21:25:05 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 hi Judofyr 21:32:09 err 21:32:11 judicaster: 21:32:13 you new? :) 21:32:22 hi ehird :-) 21:32:26 :) 21:32:33 how's it going? 21:32:46 ehird: are you new here? 21:33:03 20:04 Judofyr: doing it in Scheme :O <-- nice 21:33:07 CallForJudgement: erm, no :P 21:33:17 CallForJudgement: are you new here? 21:33:35 fizzie: that thing doesn't link function names etc :( 21:33:38 Judofyr: I'm older than judicaster, anyway 21:33:38 Judofyr: are you new here? 21:33:49 oh, judicaster is comex. 21:33:52 I've actually bough SICP and The Little Schemer :D 21:33:57 also, I haven't seen estoppel around here recently 21:33:58 the little schemer is great 21:34:19 judicaster: just idling for some months... 21:36:10 ehird: I told you not to look, didn't I. 21:36:17 fizzie: sry :< 21:36:21 so anyway, Hoefler Text is awesome, did I mention that? 21:36:59 also 21:37:03 wtf on a pogo stick 21:37:05 mactex 21:37:06 is 21:37:07 1.2GB 21:37:11 and that's ZIPPED 21:37:15 the zipped installer 21:37:28 I DON'T KNOW IF YOU NOTICED BUT I DO NOT THINK THAT REQUIRES 1.2GB 21:38:00 What the fuck? 21:38:16 Okay, now the "unterminated " problem is fixed in that qb.html. 21:38:23 pikhq: Yeah, totally 21:38:42 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 For some inexplicable reason, MacTeX includes a number of GUI applications in addition to TeX Live. 21:38:54 And Ghostscript... 21:39:07 fizzie: It was just the latter, but grepping for functions/commands and linking each occurance can't be hard 21:39:08 Deewiant, there? 21:39:19 pikhq: But 1.2GB? 21:39:21 If I can find a sensible table of the names in there. 21:39:26 My grandmother isn't 1.2GB. 21:39:27 Er. 21:39:43 ... Didn't OS X include Ghostscript as part of its CUPS implementation, anyways? 21:39:48 AnMaster: aye 21:39:48 fizzie:

FOO Statement/Function

21:39:49 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 also FOO, BAR Statements/Functions 21:40:03 Not really IMO. 21:40:14 then just link all UPPER CASE OCCURENCES 21:40:18 I mean, unless you're writing your own stack, there's not much to deal with. 21:40:25 Since it's all just frontends to other functions basically 21:40:43 Deewiant, well it works differently than TCP. For example accept() doesn't make sense. And so on. 21:40:45 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 Just make two scripts 21:41:07 :P 21:41:10 AnMaster: But is there any code overhead in dealing with UDP specially? 21:41:28 I mean, there might be, I don't know jack about network programming 21:42:32 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 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 AnMaster: Hell, I even say at the beginning of SOCK that I'm only testing one thing... 21:44:02 Deewiant, heh 21:44:09 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 I'm not going to distinguish between "KEY (Assignment) Statement" and "KEY (Event Trapping) Statement", though. 21:44:52 Guys, do you want to be in: 21:45:07 Anivers, Diavlo, Fertigo Pro, Fontin, Fontin Sans, Tallys, or Hoefler Text 21:45:10 (In my IRC client.) 21:45:18 Deewiant, I just looked at my STRN. Wonder why G checks the funge space bounds rect.... 21:45:18 Pick one and only one. :P 21:46:17 AnMaster: because otherwise it can infinite loop 21:46:27 Hi, you're all in Fontin Sans 14pt. 21:46:38 Azstal, I don't see any wrapping code there though... *looks again* 21:47:15 oh wait right. if the entire line is all spaces 21:47:39 http://imgur.com/6CED2.png 21:48:15 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 Azstal, it could still happen. just write something to xmax,ymax, and to xmin,ymin. So bounds are entire funge space. 21:48:40 Azstal, well report it as a mycology bug to Deewiant 21:49:03 Via email! 21:49:06 I know, I know, it's on my todo list to remove it 21:49:10 (Deewiant: DON'T LISTEN) 21:49:19 (WE ARE DISCUSSING PRIVATE MATTERS) 21:49:19 It's one of those mycology_opinionated.b98 things 21:49:40 ehird, why do you have a bar code in the scrollbar... 21:49:52 AnMaster: Times when I have been highlighted. 21:49:58 ah 21:50:05 nice feature 21:50:27 ehird: nice. could you send me the theme? 21:50:35 Judofyr: http://julianstahnke.com/read/a_theme_for_limechat_colloquial/ 21:50:37 Tada :-) 21:50:56 Hmm, :-) doesn't look too hot in Fontin Sans. 21:51:22 Judofyr: (BTW, I removed the bottom log by resizing it small ;)) 21:51:33 Why to not use variable width on IRC: /msg nickserv help 21:51:43 ehird: yeah, but you are just in #esoteric :P 21:51:44 see the nice aligned table? 21:51:51 Judofyr: tru :P 21:51:53 if yes: congrats on using monospace 21:51:55 ehird, ^ 21:52:03 AnMaster: Yes, because I bring up that help screen daily and its nice alignment is vital—above everything else. 21:52:13 brb 21:52:14 -!- Judofyr has quit ("raise Hand, 'wave'"). 21:52:16 Despite being readable even when not aligned. 21:52:28 -!- Judofyr has joined. 21:52:48 AnMaster: http://imgur.com/6CGOE.png 21:52:50 Looks fine to me. 21:53:32 wow, OS X has wikipedia built in 21:53:41 ehird, it looks way better aligned: http://paste.lisp.org/display/76982 21:53:42 I'm not exaggerating in any way at all 21:53:49 AnMaster: I don't really care... 21:53:55 k 21:54:05 (Open Dictionary, click "Wikipedia", enter search term. Voila.) 21:54:08 It even handles the infoboxes 21:54:18 ... and user pages 21:56:31 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 Woo! 21:57:00 erm 21:57:00 fizzie: 21:57:02 it's repeated 21:57:04 first without monospace 21:57:05 then with 21:57:19 I don't see that. 21:57:29 21:57:29

Type more than 65535 bytes

21:57:31

21:57:33 A user-defined data type cannot exceed 64K. 21:57:35

21:57:37 21:57:39 21:57:41 qbasic help 21:57:43 21:57:53 I do. 21:58:13 Hmm. 21:58:14 Oh. 21:58:17 Right, whoops. 21:58:39 There, now it's better. 21:58:56 I had my extra-linkifying loop print it out instead of modifying the @array, so there were two copies. 21:59:01 Programming task Keywords included in this list 21:59:01 ═════════════════════════════════ ═══════════════════════════════════════ 21:59:05 is that space a bug? 21:59:13 BASICA Statement QBasic Equivalent 21:59:13 ══════════════════ ═══════════════════════════════ 21:59:16 ah 21:59:18 just misaligned 21:59:22 maybe you should replace ═ with = 21:59:26 and ─ with - 21:59:40 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 BTW, GET and PUT aren't linked fizzie 21:59:57 Also I may be reading the branch profiling info wrong. But this *does* seem to be the case. 22:00:16 Er, it aligns just fine, otherwise that QBasic Equivalent "underline" wouldn't start at the right spot. 22:00:24 AnMaster: Not really a bug. 22:00:31 I mean, it doesn't check it in any case. 22:00:33 fizzie: It does not for me. 22:00:34 It just outputs it. 22:00:49 Oh. Well, then your "monospace" font isn't very monospace. 22:00:57 No unicode monospace font is. 22:00:58 It aligns just fine in your IRC-paste too. :p 22:01:02 I know this because I wanted one once. 22:01:12 Deewiant, well right. But the output will be wrong when UTC and local time are on different dates 22:01:16 TBH, 22:01:38 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 AnMaster: true true 22:01:57 fizzie: you could output a disambig 22:02:03 i.e., you click it and get to a "DID YOU MEAN..." 22:02:09 Yes, right, sure. 22:02:11 You can do that. :p 22:02:20 Sure, gimme the source code & source file :P 22:02:23 ehird: meh, I prefer the "Spring Night" theme... 22:02:49 Judofyr: but black windows are ugly in OS X (due to window borders) :P 22:03:00 ehird: http://zem.fi/~fis/convert.pl and source.txt. Going away for a while, have fun with it. 22:03:04 Yay. 22:03:10 Bye 22:03:59 my Adium is black too... 22:05:13 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 Or, I guess executable formats in general 22:06:34 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 grr 22:06:48 how do you tell perl a file is in utf-8? 22:06:51 source file 22:07:03 It just seems like it'd be a filesize optimization to leave out the extra headers 22:07:04 "use utf8;" or something like that. 22:07:31 I wouldn't use it if I could figure out the codepoint of these chars :P 22:07:39 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 Deewiant: You could just instruct your compiler to put all the constants in the .text section. 22:08:39 I mean, you don't actually have to have more than one section in an ELF file, I guess. 22:08:44 # transform links... we shunt commands outside links for maximum sillitude... 22:08:46 an impressive comment 22:09:00 fizzie: Which is why I'm wondering why compilers make multiple sections at all 22:09:31 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 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 I mean, take some Harvard architecture machine, it has completely separate code and data memories. 22:10:34 Well, *that* might be just historical inertia. 22:10:42 But if you're compiling an x86 binary it won't run on a Harvard architecture machine. :-P 22:11:12 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 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 /NOHI] [[/RUN] sou 22:11:25 Which is why it sets the sections to non-executable for safety 22:11:26 * ehird tries to fix 22:12:03 it's certainly possible to compile C into Harvard architecture machines 22:12:12 gcc-bf's Harvard architecture, for instance 22:12:24 Yes, I don't think anyone was questioning that. 22:13:26 hmm 22:13:30 how do you say not in perl regexps? 22:13:32 (?!foo)? 22:13:58 That's a negative look-ahead thing, yes. 22:14:16 ehird: let me find an example, you can do it Prolog-style 22:14:18 Doesn't seem to work, unfortunately 22:14:26 $line =~ s/\b(?!\/)([A-Z\$]+)/extralink($1)/ge 22:14:26 unless $line =~ / 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 (*COMMIT)(*F)| at the end of the regex works 22:14:48 yes 22:14:49 it's like the prolog definition of not, almost exactly 22:14:51 I'm basically trying to say "that, but not with a / in front" 22:14:52 fizzie, at least 2 22:15:03 since first section must be a NULL one 22:15:03 ehird: oh, that's negative look/behind/ you need 22:15:10 according to spec 22:15:11 well, it's "not" to me :P 22:15:13 "not a /" 22:15:19 I guess NULL and .text might work 22:15:26 ehird: there's more than one sort of not in a regex 22:15:32 [^/]foo almost works 22:15:42 that's "foo preceded by a character that is not a /" 22:15:55 but that doesn't allow for a foo at the beginning of the string 22:16:16 not sure though 22:16:23 ^[^/]?foo 22:16:26 Should work alright? 22:16:38 hm, yes 22:16:42 wait, no 22:16:44 that allows for / 22:16:47 I think 22:16:48 hm, nope 22:16:57 Well. 22:16:59 That breaks things. 22:17:00 AnMaster: Are you sure? The canonical http://www.muppetlabs.com/~breadbox/software/tiny/teensy.html has 1 in the shnum field. 22:17:02 So I guess no, 22:17:19 fizzie: that isn't a valid ELF file 22:17:22 it relies on linux's handling 22:17:23 as they said 22:17:44 fizzie, I'm pretty sure. I remember reading some mail about it on the gnu binutils mailing list. 22:19:04 fizzie, anyway without separate data section you need to allocate any read-write vars on stack or heap 22:19:22 Yes, I think Deewiant was just complaining about .rodata. 22:19:32 So what's that null section about, then? I mean, it's not anything objdump shows, no? 22:20:30 Apparently not, but readelf lists it. Anyway, why is it there? 22:21:40 anyway .rodata is useful for NX 22:22:03 AnMaster: I question how that is 'useful' 22:22:03 fizzie, as for why: all I remember was that specs required it 22:22:23 Deewiant, um? You suggest NX is useless? 22:22:27 ehird: Oh, and (fixed-width-only) negative lookbehind is (? yay 22:22:42 Deewiant, is that what you are saying? 22:22:51 AnMaster: I think so, yes 22:23:01 Deewiant, why do you think NX is useless? 22:23:06 hmm 22:23:13 I can't see where it finds duplicate entries and discards them, fizzie 22:23:25 AnMaster: How is it useful for statically linked executables? 22:23:36 Ooh, you don't link multi word names 22:23:37 like DEF SEG 22:23:38 * ehird hacx 22:23:40 ehird: It doesn't. 22:23:52 hmm, actually, solving this may be difficult 22:24:01 Yes, that's why I didn't do it. :p 22:24:02 since it only works on one word 22:24:13 I could make it generate a lookup tabl 22:24:13 e 22:25:06 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 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 I fail to see how it is useless. For any binary. 22:25:29 Alternatively you could just generate the index and do a client-side scripting hack for the "find this keyword" thing. 22:25:37 Yeah, exactly, it's a bug catcher. 22:26:17 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 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 the linux kernel does that, for some variables that is needed early on boot iirc 22:26:59 I'm just wondering 22:27:14 I do that, in my (Nintendo) DS compilation environment. :p 22:29:28 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 :P 22:29:38 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 AnMaster: That's befunge for you 22:30:42 -!- judicaster has changed nick to jc. 22:31:00 Deewiant, hah. Then use befunge. No sections at all! 22:32:11 QBasic editor is annnoyyyying in one way 22:32:17 if you make a subroutine the rest of the file disappears 22:32:49 I'm somewhat disappointed at the move against self-modifying code 22:35:41 QBASIC HAD OBJECT ORIENTATION WTF 22:35:51 THAT'S JUST _WRONG_ GODDAMMIT 22:35:55 CallForJudgement: Share in my WTF. 22:36:20 heh, that's pretty WTFy 22:36:22 but how? 22:36:39 Erm, let me get this manual up somewhere 22:36:48 Anyone know a pastebin that lets you paste one HTML page? 22:37:12 Deewiant, it can be done still. On POSIX systems: mprotect() 22:37:25 Hey AnMaster, you have a site right? Could you put up one tiny HTML page up for me? 22:37:36 By tiny I mean 451K 22:37:39 ehird, don't you have one? 22:37:43 also that is rather large. 22:37:45 Yes, but it doesn't run a webserver atm. 22:37:49 Also, it's the QBasic manual as html. 22:38:03 You can just resend me your script. 22:38:07 I can stick it at the same location. 22:38:13 That would also work. 22:38:14 AnMaster: Yes, I know, but stuff like NX seems to discourage it. 22:38:32 fizzie: http://pastie.org/415705.txt?key=ecliar25bphg5ibwtnc4g 22:39:03 CallForJudgement: anyway, it's more C-like structs than OOP, but it LOOKS oop 22:39:07 TYPE Card 22:39:07 Suit AS STRING * 9 22:39:09 Value AS INTEGER 22:39:11 END TYPE 22:39:13 DIM Deck(1 TO 52) AS Card 22:39:14 Deewiant, well, I like NX. It is actually useful. Only JITs need to disable it really. 22:39:15 Deck(1).Suit = "Club" 22:39:17 Deck(1).Value = 2 22:39:19 PRINT Deck(1).Suit, Deck(1).Value 22:39:21 from the manual 22:39:40 anyone doing the above IMHO just be shot and forced to remake it as an array of strings. 22:39:42 :P 22:39:55 ehird: http://zem.fi/~fis/qb.html is now converted with your script. 22:40:01 Huray 22:40:05 I don't know about kernels, it is possible you might need something there. 22:40:14 fizzie: Oh, wait, I have one more mod 22:40:15 Deewiant, tell me any other non-esoteric example where you need to disable NX 22:40:26 Although I could've just used iconv -t ascii//translit to get +---+ line-drawing-art. 22:40:51 AnMaster: Self-modifying code. 22:40:52 fizzie: new line: 22:40:53 s/[┌└┐┘╔╗╣║╚╝]/+/g; 22:41:14 Deewiant, any non-esoteric examples of self modifying code? Apart from JITs that is. 22:42:11 anyway 22:42:13 CallForJudgement: http://zem.fi/~fis/qb.html#QEw4MDg3 22:42:29 Reconverted with that s/// line. 22:42:39 -!- Jophish has joined. 22:42:40 ehird: where in it? that anchor isn't working 22:42:41 Deewiant, and for library loading, your dynamic linker takes care of the correct write/mark no-write order. 22:42:44 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 hi Jophish 22:42:48 CallForJudgement: Refresh if the anchor isn't working 22:42:52 AnMaster: Essentially, optimization. 22:42:52 and don't scroll 22:42:56 until it jumps 22:43:03 but, "TYPE Statement" 22:43:16 AnMaster: Another case is to hide stuff, if you're not fully open about your code or data 22:43:27 Debugger fighting and such. 22:43:34 Deewiant, So you have too little memory to be able to be able to have two copies of the loop? 22:44:00 AnMaster: Maybe I don't want to have pointless stuff in the CPU's pipeline or L1 cache. 22:44:03 ehird: still didn't jump 22:44:10 just grep for TYPE Statement 22:44:17 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 including the kernel 22:44:27 Strange, the anchor works for me. 22:44:32 ehird: ah, got it 22:44:36 and that isn't OO, that's just structs 22:44:42 CallForJudgement: i know, but the example looks oop-y 22:44:47 also, I have an idea of how to make it oop 22:44:48 but it's evil 22:44:50 -!- neldoret1 has quit (No route to host). 22:45:35 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 or whatever your platform use 22:46:09 AnMaster: Debugger fighting is for code obfuscation; Microsoft doesn't care, they can just sue you if you reverse engineer 22:46:11 windows has some other call I think 22:46:46 Can't you make an ELF which has the executable code as RWE? 22:46:56 Deewiant, don't know. It may be possible. 22:47:04 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 I don't see why not 22:47:18 fizzie: ahsdjhaskdhsjkfhkafjhgf jhasgfsdjfj sdfj WHHHHHHHHHHHHAAAAAAAAAAAAAAAATTTTTTTTTTTTTT 22:47:33 fizzie: OR 22:47:35 um 22:47:37 ahahahah 22:47:54 -!- mad has joined. 22:47:55 Deewiant, think it may be invalid. 22:48:00 Well, line numbers are a better solution, maybe. 22:48:17 Or would be if it wouldn't just be a GOTO . 22:48:35 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 Deewiant, Yep you can. Both with and without NX. 22:48:55 Your point? 22:49:12 My point is you don't need mprotect, which you said one does. 22:50:04 Hmm. 22:50:16 How do you switch DOS into the highest video mode? 22:50:20 Presumably writing to some address. 22:50:25 vga or svga? 22:50:27 Deewiant, well you need either mprotect() or change the section flags in the executable. Right 22:50:34 SCREEN 12 is the traditional method in QBasic 22:50:48 mad: SVGA, since it's higher resolution. 22:50:54 Hm I wonder. Does WXSVGA exist? 22:50:54 hmm 22:51:01 Also, hi mad. haven't seen you before. 22:51:07 Mode 13h! 22:51:10 ehird: then the easiest method is a library 22:51:14 ehird, duh. He joined half a screen back. 22:51:18 AnMaster: o :P 22:51:23 yeah I'm new :D 22:51:34 mad: ah, to hell with that, QBasic and libraries is like... like... like QBasic and libraries. 22:51:49 mad: what brings you here? 22:51:52 in qbasic? heh 22:52:05 mad: Yeah, I'm playing with dosbox 22:52:07 -!- Mony has quit (Nick collision from services.). 22:52:10 Sb 22:52:12 mad, we usually don't do DOS stuff. We do things in Brainf*ck, Befunge, INTERCAL and such usually. 22:52:22 just so you don't get the wrong impression. 22:52:24 yeah I know 22:52:29 -!- M0ny has joined. 22:52:42 AnMaster: I think that's blatantly obvious. 22:52:43 I did a couple attempts at esoteric languages 22:52:49 Also, we're more offtopic than on... 22:52:53 ehird, well not from topic, Not from the convo right no 22:52:56 now* 22:53:03 Yes, but, the name is #esoteric, see. :P 22:53:05 but yeah with qbasic your best luck is probably 640x480 22:53:09 Mm 22:53:19 actually, we spend most of our time offtopic 22:53:20 ehird, well, what about those persons wondering about new age stuff or whatever it is 22:53:23 but ontopic is better IMO 22:53:25 Maybe you can hack it a bit to get it to 720x512 but probably not much more :D 22:53:29 because they misunderstood what type of esoteric 22:53:33 There's a .bas file for doing svga graphics, though. 22:53:35 CallForJudgement: that's what I said 22:53:37 more offtopic than on 22:53:41 AnMaster: he said programming, so. :P 22:53:46 well right 22:53:51 actually, most of the time is taken up with ehird and AnMaster arguing 22:53:55 Heh. 22:53:58 hah 22:54:06 ■ activepage% The screen page that text or graphics output writes to. 22:54:06 ■ visualpage% The screen page that is currently displayed on your 22:54:07 screen. 22:54:11 Fun fun. 22:54:20 you can have great fun double-buffering with those 22:54:25 but most of the good video modes don't support it 22:54:27 fizzie, didn't your stats show ehird was the most active one? 22:54:31 and was I number two or? 22:54:43 if you remove arguments between you too, though, you're about #102 and #105 22:54:48 *you two 22:54:50 AnMaster: Right. 22:54:54 mhm 22:55:02 Or maybe the SVGA library was for quickbasic 4.5 only. Hmm. 22:55:04 CallForJudgement: Actually, it's mostly my pastes and multiline stuff that make me high 22:55:06 yeah a lot of those modes are kinda blah 22:55:08 Err, higher. Not, you know, high. 22:55:13 Because, drugs are bad, mmkay. 22:55:40 cga? more like suck g a :D 22:56:12 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 I'm going for vga for simplicity 22:56:31 I would, too. 22:56:34 heh WQUXGA 22:56:39 that exists it seems 22:56:50 "Wide Quad Ultra Extended Graphics Array" 22:56:53 WQXGA is often found in 30" displays like the Dell 3008WFP and the Apple Cinema Display. 22:56:54 But I distinctly remember seeing a rather featureful svga library for either qbasic or quickbasic. 22:56:56 http://en.wikipedia.org/wiki/QXGA#WQUXGA 22:56:58 that's just 2560x1600 22:57:01 not insanely large 22:57:07 ehird, WQXGA != WQUXGA 22:57:11 o 22:57:12 ha 22:57:24 svga is doable in djgpp 22:57:35 WQUXGA: 3840 x 2400 22:57:35 Yikes, colour attributes are scary 22:57:38 and doable as in practical 22:57:43 and is 16:10 22:57:50 color attributes? 22:57:52 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 mad: http://zem.fi/~fis/qb.html#QEw4MDUw 22:58:20 there's a trick for that 22:58:34 you can just overwrite the palette 22:58:55 cute 22:59:17 hmm 22:59:20 mode 13 seems the best 22:59:21 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 since you get 256 colours 22:59:33 yeah mode 13 is the best for games 22:59:35 although the res is tiny on this screen ofc 22:59:50 Admittedly "a EQV b" is just "NOT (a XOR b)" and so on, but it's there. 23:00:15 though with some palette editing you can make 16 color modes look good, which is nice 23:00:25 mad: you still only get 16 cols :-) 23:00:40 well, yeah :D 23:00:54 but some games do well with that 23:01:11 duke nukem 2, metal gear 2, hmm 23:01:11 On Real Computers, you could just do palette reprogramming during the hblank period and get 16 different colors for each line. 23:01:31 fizzie: except the ibm PC isn't a real computer :D 23:01:42 Right, it's a business machine. 23:02:05 PCs aren't for doing hdma tricks 23:02:11 that's what amigas are for 23:03:28 PLAY "T255P64" <-- shortest pause you can get without silly timer hax 23:03:38 hdma? 23:03:48 what does the extra h on DMA mean there? 23:04:05 horizontal blank dma 23:04:24 I see. And what does that actually mean? 23:04:27 I still need to figure out how to terminate this program 23:04:31 no break key :( 23:04:32 I think it's specific to snes technically but in general it refers to effects where you alter registers between lines 23:04:46 ehird, where did you find qbasic btw? 23:04:50 AnMaster: logs. 23:05:00 greh 23:05:01 ehird, well I mean, download url? 23:05:03 It's common on 16 bit platforms except PC and mac 23:05:07 lolqbasic 23:05:12 -!- tombom has quit ("Peace and Protection 4.22.2"). 23:05:14 AnMaster: It's possibly from my dos 6.21 installation floppy. 23:05:19 hm 23:05:19 no 23:05:27 Oh, just the help file was? 23:05:30 ya 23:06:55 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 Although I'm quite sure my qbasic.exe has pretty much the same bits. 23:07:22 fizzie, mhm 23:07:35 and yeah I tend to be careful. 23:07:43 -!- M0ny has quit (Read error: 60 (Operation timed out)). 23:07:46 I think that should expand to various "old DOS utilities". 23:08:06 anyone here good at perl? Need to test something for the PERL fingerprint in cfunge... 23:08:12 I'm pretty good at Perl 23:08:16 what in particular do you need? 23:08:39 CallForJudgement, I don't know perl at all. Something like a for loop. To output 5932 bytes 23:08:39 I'm reasonably good at writing messy Perl. 23:08:44 just use x or whatever 23:09:11 The expression "x" x 5932 evalutes to a 5932-byte string. 23:09:21 the perl equivalent of: for (i=0;i<5932;i++) putchar('x'); 23:09:24 is what I need basically 23:09:27 hm 23:09:33 Well, that's print "x" x 5932; 23:09:48 right 23:09:49 x = 5932; print "x" x x; 23:10:00 D'oh, sigils 23:10:09 It's also print "x" foreach (0 .. 5931); if you want to be more form-conformant. 23:10:11 well that would be less confusing with something else than x I guess 23:10:17 $x=5932;$X="x";print $X x $x 23:10:24 in python it's print "x" * 5932 23:10:27 $x=5932;$X=x;print $X x $x 23:10:28 but that's just because python is sane 23:10:36 ■ STATIC Specifies that the values of the SUB procedure's 23:10:36 local variables are saved between function calls. 23:10:40 that's a modifier ON THE FUNCTION 23:10:41 CallForJudgement: WTF. 23:10:51 hm 23:10:54 ehird: heh 23:11:02 Hey, just be happy it actually has functions, and local variables. 23:11:04 ehird: Use ẋ or something instead of X 23:11:10 That's quite a fancy-schmanzy schnitzel. 23:11:13 -!- CallForJudgement has changed nick to ais523. 23:11:17 and in an eval() context. So eval returns that many x. 23:11:21 what would it be then? 23:11:27 "x" x 5932 23:11:28 'x' x 5932 23:11:30 right 23:11:35 SUB count STATIC 23:11:37 count = 0 23:11:39 count = count + 1 23:11:40 RETURN count 23:11:40 I don't think GW-BASIC did local variables. It might've done GOSUB, though. 23:11:41 END SUB 23:12:06 um 23:12:11 err, wait 23:12:15 RETURN isn't a valuey thingy 23:12:16 so why doesn't this work: perl -e 'print eval("x" x 5932)' 23:12:17 I need a function 23:12:17 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 AnMaster: because that evaluates 23:12:23 xxxxxxxxxxxxxxxxxxxxxx 23:12:26 instead of returning xxxxxxxxxxxxxx 23:12:28 you should do 23:12:32 eval('"x" x 5932') 23:12:33 I think the stone age basics had gosub yeah 23:12:34 ehird, right 23:12:35 and now I doubt your coding ability... 23:12:39 /flamebait 23:12:51 ehird, well I don't know perl indeed. 23:13:25 why do you need eval in order to print lots of xs? 23:13:25 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 ais523, look at PERL spec 23:14:25 oh dear 23:14:28 http://catseye.tc/projects/funge98/library/PERL.html 23:14:30 But seriously, why can't qbasic do a simple "GOTO $var"? (Alternatively: how can it do that?) 23:14:32 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 fizzie: you can use SELECT CASE 23:14:43 fizzie: GOTO var? 23:14:46 which is basically switch() from C 23:15:02 also, you can GOTO label 23:15:04 Oh, I mean GOTO var$. Or is it var%? I don't remember them sigils either. 23:15:09 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 Yes, but I want a computed goto. 23:15:15 fizzie: QBasic sigils are weird 23:15:17 Yeah, use a switch 23:15:18 AnMaster: fizzie 23:15:23 was it him? ok 23:15:26 also, $ = string, % = integer 23:15:30 nothing = same as % 23:15:36 AnMaster: that looks about right 23:15:40 does it have some float too? 23:15:52 think so 23:15:58 ais523, anyway I found a bug in my handling of reading back really long results. 23:15:59 data-type suffix (%, &, !, #, or $). 23:16:09 +-------------------------Data-Type Suffixes--------------------------+ 23:16:09 │ ! Single-precision % Integer │ 23:16:10 │ # Double-precision & Long-integer │ 23:16:12 │ $ String │ 23:16:14 +---------------------------------------------------------------------+ 23:16:17 So, #. 23:16:30 & is a whopping THIRTY TWO BITS 23:16:55 what's the point of ! :D 23:17:03 -!- M0ny has joined. 23:17:36 ais523: Do you mean "use SELECT CASE" as in "write your whole program as "SELECT CASE a% CASE 1 ..." and use "a% = 42; " for control flow"? 23:17:45 mad: stores 7 digits after the decimal point 23:17:47 fizzie: well, why are you doing control flow like that, anyway? 23:17:54 I was assuming you'd only be jumping to one of a set few lines anyway 23:18:03 ehird: yeah but you can use # instead :D 23:18:10 ais523: I was just thinking of ehird's "Objective QBasic" thing. 23:18:12 mad: Think of the RAM! 23:18:24 wait, i know 23:18:24 We have like 1MB. 23:18:24 right 23:18:24 ais523: I'm not actually doing anything. 23:18:24 :D 23:18:24 fizzie: eek :D 23:18:24 well, conventional ram :D 23:25:09 And more like 64k often :D 23:25:09 hee 23:25:09 -!- M0ny has quit (Client Quit). 23:25:09 who needs C when you have qbasic 23:25:09 :P 23:25:09 Deewiant, do you remember off the top of your head which value to y returns stack size? 23:25:09 (int*)1234=5; 23:25:09 POKE1234,5 23:25:09 ehird: but you can have TURBO C :D 23:25:09 WINNER: QBASIC 23:25:09 mad: I HAD A TURBO BUTTON ON MY PC! It didn't do a thing. 23:25:09 AnMaster: nope 23:25:09 ehird: What a crap PC 23:25:09 Deewiant: :< 23:25:09 from like some 386s on it did like nothing :D 23:25:09 Turbo buttons should always do something 23:25:09 y u insult my pc 23:25:09 ehird: course it did, it slowed down the PC when you turned it off 23:25:09 haha 23:25:09 Yeah, exactly 23:25:09 they were designed so you could play old games which used loops for delays 23:25:09 Yeah 23:25:09 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 And they worked well 23:25:09 but why have a slow down button when you can have a speed up button? 23:25:09 I always thought it was a go faster button 23:25:09 As in 23:25:09 Well, it is 23:25:09 You can only use half your CPU and RAM 23:25:09 until you press TURBO 23:25:09 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 Hmm, I'ma write a sierpinski drawer. Should be trivial. 23:25:10 not to mention a pentium which is probably going to be able to stuff the whole program in its CACHE 23:25:10 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 Hmm 23:25:10 QBasic has no bitwise operators? :-S 23:25:10 oh wait 23:25:10 they're its boolean operators 23:25:10 XD 23:25:10 what happened if you pressed turbo while the computer was running? 23:25:10 AnMaster: it crashed 23:25:10 Yes. And there's even EQV and IMP there. 23:25:10 ah 23:25:10 I know, I've done that once 23:25:10 AnMaster: You became a COOL DUDE. 23:25:11 Huh? My turbo button worked when the machine was on 23:25:28 Or alternatively it did nothing, it's been a long time 23:25:32 But it certainly didn't crash anything 23:25:45 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 On-the-fly, even. 23:26:01 heh 23:26:43 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 PICs can be switched from their default 4 MHz (= 1 MIPS) down to about 75 kHz 23:27:01 as a sort of power-saving mode 23:27:26 Modern CPUs can change freq too 23:27:30 for power saving 23:27:44 like my sempron, 1 GHz, 1.5 GHz or 2 GHz 23:27:52 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 s/,/:/ 23:27:59 DIM A(640,480) gives me subscript out of bounds 23:28:08 why? ais523? 23:28:15 because qbasic can't allocate a lot of memory 23:28:22 that's not a lot ... 23:28:23 fizzie: heh, that's... not nice 23:28:52 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 :D 23:29:02 But it fits in video memory! 23:29:23 Not really, you only have four bits per pixel there. 23:29:28 Ah. True da.t 23:29:33 actually, 307200 is almost half of memory 23:29:37 It's just, using LINE on the fly was really slow. 23:29:39 DOS only supports 640K, remember 23:29:40 As in one pixel per second. 23:29:53 You can POKE in the video memory, though. 23:30:03 ehird, allocate it in hi memory? extended memory? or whatever 23:30:11 in BASIC? 23:30:17 you can POKE anywhere in BASIC 23:30:20 ehird, well can't you POKE to do that? 23:30:21 fizzie: Yeah, 'cept I don't know the format of the values 23:30:23 ais523: that was @AnMaster 23:30:24 yeah but qbasic probably can't handle >16bit pointers 23:30:37 hm 23:30:39 ehird: It's just "two nybbles in each byte give two adjacent pixels". 23:30:45 that's why people usually switch to djgpp :D 23:30:49 mad: it can 23:30:50 fizzie: and what is a pixel in that case? 23:30:51 DEF SEG 23:30:56 use one of those "memory optimizer" to move stuff out of the memory you can use then 23:31:07 stuff = malloc(20000000); 23:31:11 What's the address of video memory, anyhoo? 23:31:13 Actually WORKS in djgpp :D 23:31:15 You do need to DEF SEG = &HA000. 23:31:15 I remember some tool that messed with config.sys and autoexec.bad 23:31:17 0xa0000 23:31:19 bat* 23:31:21 -!- psygnisfive has joined. 23:31:29 to free low low memory 23:31:58 -!- kar8nga has quit (Remote closed the connection). 23:31:58 Then you can just POKE in there, and the address given in POKE is directly an offset to the screen buffer. 23:32:03 video mem address depends on video mode 23:32:04 fizzie: Still slow; as in it's taking many many seconds. I wonder if I have a bug. 23:32:12 Or maybe it crashed. 23:32:18 but in 256 color mode it's 0xa0000 23:32:28 Ah. 23:32:30 I was using SCREEN 1. 23:32:42 12 always used to be my favourite 23:32:49 ehird, how many FPS? 23:32:51 Yes, but I'm just doing a b/w sierpinski :P 23:32:55 AnMaster: I don't know 23:33:26 heh 23:33:34 ehird, tell me when/if you find out 23:33:42 Oh, it terminated. 23:33:49 Anyway, I'm just looping over the 320,200 display. 23:33:53 I don't see how I can get any faster. 23:34:24 I remember doing some comprehensive qbasic putpixel benchmarking, and there were at least five methods. 23:34:27 I guess sierpinski is just way beyond DOS's ability. 23:35:05 ehird: unless it's 3d bit dos 23:35:12 3 DIMENSIONAL BIT DOS?! 23:35:17 haha 23:35:21 yay, voxel bits 23:35:28 voxbits 23:35:30 you could almost call it voxel-perfect 23:35:30 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 use putpixel + recursive function? 23:36:11 Text mode sierpinski works :P 23:36:26 -!- neldoreth has joined. 23:36:55 Still, I think POKE 320*y+x was a lot faster than any LINE (x, y)-(x, y) style thing. 23:37:02 Or PSET. 23:37:13 Although PSET at least wasn't many magnitudes slower. 23:37:16 you could almost call it voxel-perfect <-- that does sound strangely familiar..... But I can't identify it 23:37:29 ;_; AnMasterrrrrrrrrrr 23:37:36 AnMaster: esolangs.org = esoteric.voxelperfect.net 23:37:40 oh right 23:37:42 duh 23:37:50 ais523, I use the first url to access 23:37:58 Hm. There seems to be some algorithmic problem. 23:38:06 just explaining where the reference came from 23:38:29 ehird, also you could do sierpinski in dos. Ever seen some of those DOS demos? 23:38:40 AnMaster: And what are they written in? 23:38:41 Assembly. 23:38:43 And what am I using? 23:38:45 QBasic. 23:38:48 And what is QBasic? 23:38:51 oh right true 23:38:52 bloated 23:38:52 Oh, there are QBasic demos. 23:38:53 An interpreter, probably written in C. 23:38:56 Totally unoptimized, to boot. 23:39:01 ehird, can't you compile qbasic? 23:39:09 using QuickBASIC. 23:39:11 I heard there was a compiler 23:39:11 Which I don't have. 23:39:12 ah 23:39:18 QuickBasic is commercial, non-free. 23:39:26 then you can switch to the next bigger thing 23:39:27 I see 23:39:27 And it doesn't really generate very fast code. 23:39:31 TURBO PASCAL :D 23:39:42 mad, I think I have a copy of that 23:39:43 in fact 23:39:54 not sure where 23:40:08 and I think it was TURBO PASCAL for windows or something even. 23:40:25 or maybe not 23:40:37 Or you can switch to the next smaller thing, debug.com. 23:40:38 don't remember. Too long ago 23:40:52 I've written a short game for dos 23:40:55 Hmmm. 23:41:00 but it was with libraries 23:41:07 ehird, anyway, when you find out frame rate: tell me 23:41:09 Question. 23:41:12 A bunch of PRINT "x"; 23:41:14 in succession 23:41:17 will output nothing but xs 23:41:18 right? 23:41:24 who knows 23:41:43 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 I think basic probably tacks on a line end and you have to supress it or something 23:41:50 Yes, as long as you don't forget the ; there. 23:41:55 mad: thus the ; 23:41:56 That's the line-suppression thing. 23:42:01 AnMaster: frame rate of what 23:42:19 ehird, just drawing a single colour over the screen in a loop? 23:42:19 A , would start at the "next print zone", and "print zones are 14 characters wide". That's very out-of-nowhere. 23:42:32 AnMaster: 10FPS 23:42:33 Or so 23:42:36 ehird, heh 23:42:40 Well 23:42:49 It takes about 7 seconds to display 256 colour bands 23:42:59 I dunno 23:43:00 wow that is slow 23:43:07 anyway 23:43:18 ehird, for dosbox it should be possible to tune the speed iirc 23:43:32 Look, it's a lot faster than the TI-BASIC in my calculator, so just stop complaining about the speed. 23:43:36 CLS 23:43:36 FOR Y = 0 TO 15 23:43:37 FOR X = 0 TO 15 23:43:39 Y1 = 15 - Y 23:43:41 IF (X AND Y1) = 0 THEN PRINT "*"; ELSE PRINT " "; 23:43:43 NEXT X 23:43:45 PRINT 23:43:47 NEXT Y 23:43:55 Renders a sierpinski triangle of 16x16 in about 0.7 seconds. 23:44:04 You can watch it draw. 23:44:21 Now to try and center it. 23:45:44 fizzie: this 23:45:50 TI-Basic is so ridiculously slow 23:45:51 -!- jc has changed nick to comex. 23:46:02 yeah well your butt is ridiculously slow if you know what i mean. 23:46:13 someone show http://www.newscientist.com/blogs/shortsharpscience/2009/03/how-moores-law-saved-the-web.html to zzo38 23:46:14 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 all good TI-Basic programs start with AsmPrgm 23:47:08 comex, how does that work. I don't remember? 23:47:20 you have to type in z80 opcodes as hex 23:47:23 CLS 23:47:23 FOR Y = 0 TO 15 23:47:24 Y1 = 15 - Y 23:47:26 FOR I = 1 TO Y1 23:47:27 (thus 'asm' is somwhat misleading...) 23:47:28 PRINT " "; 23:47:30 NEXT I 23:47:32 comex, oh I see 23:47:32 FOR X = 0 TO 15 23:47:34 IF (X AND Y1) = 0 THEN PRINT "**"; ELSE PRINT " "; 23:47:36 NEXT X 23:47:38 PRINT 23:47:39 so you could hand type it on the calculator? 23:47:40 NEXT Y 23:47:42 centered. 23:47:44 Also optimmized. 23:47:46 Now it takes 0.3s 23:47:53 I have a packet with a list of z80 opcodes 23:47:55 ehird, I think there was a faster way than = 0 23:48:08 sometimes when I'm feeling masochistic I make programs 23:48:09 in IF that is 23:48:41 not() should be faster. At least on TI-83+ 23:48:44 which is what I have 23:49:03 This is on DOS :P 23:49:06 this 23:49:06 ah 23:49:07 But, I need to check 0 23:49:10 NOT() checks for -1 or something 23:49:14 It doesn't output right in any case 23:49:23 ehird, well I meant on TI-83+ 23:49:29 right 23:49:37 Anyway, now to make it do it SEXTUALLY 23:49:41 By which I mean graphically 23:49:44 .. 23:50:09 fizzie: what was your POKE gfx magick? 23:50:19 -!- KingOfKarlsruhe has joined. 23:50:29 ehird, scrollback? 23:50:33 ah POKE 320*y+x 23:51:08 fizzie: what mode was that for? 23:51:09 which DEF SEG is that in? 23:51:53 I'll just use pset 23:51:54 probably 23:52:57 wtf 23:53:00 illegal function call on an if 23:53:03 I guess it is complaining ab- 23:53:04 oh 23:53:13 pset without screen 23:53:30 -!- BeholdMyGlory has quit (Read error: 104 (Connection reset by peer)). 23:53:33 Erm, or not. 23:53:52 * AnMaster wonders 23:53:56 IF (X AND Y1) = 0 THEN PSET (X, Y) 23:53:58 that's invalid? 23:54:26 6145 output chars vs 5932 23:54:31 that doesn't match at all 23:55:25 oh right indeed. 23:55:28 a bug 23:55:31 Yes, as I said you need a DEF SEG = &HA000 in order for the poke to work. 23:55:41 And it's for mode 13h, the 320x200 VGA 256-color mode. 23:55:43 I'm using PSET. 23:55:46 Not DEF SEG> 23:56:09 If you like. It might even be faster with PSET if you need to do the y*320+x operation. 23:56:30 agh 23:56:33 my program is running in step mode 23:56:35 Since concievably it might be written in C or whatever then, not done with QBasic code. 23:56:35 how do I undo that : 23:56:37 :\ 23:56:48 I don't remember anything about the UI. 23:57:04 ehird, read docs? 23:57:09 AnMaster: I did. 23:57:13 Woo, my sierpinskigfx work 23:57:25 nice 23:57:34 Albeit sloooowly. 23:57:40 ehird, screenshot? 23:57:52 also for dosbox you can increase simulation speed 23:57:57 some option somewhere 23:58:10 The slowness is AUTHENTIC. 23:58:15 btw, what is the difference between dosbox and doxemu? 23:58:16 yes 23:58:22 dosbox emulates DOS, not a cpu 23:58:23 dosemu* 23:58:27 ah 23:58:32 * kerlo memorizes all of pi in binary 23:58:32 er oh 23:58:34 thought you said qemu 23:58:40 Pretty easy. 23:58:43 so why is the second called dosemu? 23:58:46 1100111110000000 23:58:49 it emulates dos 23:59:04 then what is the difference? Which is best? 23:59:09 dosbox or dosemu? 23:59:09 fizzie: so, what IS it that makes BASIC so damn slow? 23:59:13 dosemu only runs on linux 23:59:19 but iirc its emulation is more "authentic" 23:59:25 oh? 23:59:27 and dosemu lets you copy/paste from-to dos 23:59:29 apparently 23:59:35 sounds useful 23:59:41 dosemu uses the vm86 syscall to run DOS "natively" on linux. 23:59:43 and the linux requirement is hardly an issue 23:59:55 unless you use something else. 23:59:57 like me