00:18:02 -!- poiuy_qwert has quit (Read error: 110 (Connection timed out)). 00:30:08 :t properFraction 00:38:25 man, i like haskell, but it tries pretty hard to make me hate it 00:40:27 heh 00:43:09 i want to write my program, not implement basic math functions :( 00:44:46 Haskell's making you implement basic math functions? 00:44:51 i think modding with doubles is a somewhat imprecise operation 00:49:46 it won't get any more precise from me implementing it 00:50:49 You could import it from a C thing. 00:51:09 And then eventually, somebody could extend GHC with it... 00:52:01 yes, exactly, like i said, i'd rather just write foo % bar like i would in Python. 00:54:44 * ihope nods 00:55:14 ~exec sys.stdout([pi % e, pi - e]) 00:55:15 NameError: name 'pi' is not defined 00:55:36 Um... 00:57:58 math.pi 00:58:20 ~exec sys.stdout([math.pi % e, math.pi - e]) 00:58:21 NameError: name 'e' is not defined 00:58:24 ~exec sys.stdout([math.pi % math.exp(1), math.pi - math.exp(1)) 00:58:25 SyntaxError: unexpected EOF while parsing 00:58:31 ~exec sys.stdout([math.pi % math.exp(1), math.pi - math.exp(1]) 00:58:40 SyntaxError: invalid syntax 00:59:57 ... 01:00:29 ~exec sys.stdout((math.pi % math.e, math.pi - math.e)) 01:00:29 (0.42331082513074803, 0.42331082513074803) 01:01:06 lament: are you making fun of the world? 01:01:13 why did i say that? 01:01:31 gotta go -.> 01:02:13 ~exec sys.stdout(math.exp(math.pi)-math.pi) 01:02:13 19.9990999792 01:02:25 aaaw, your floating point arithmetic is bugged 01:02:38 -!- pikhq has quit (Read error: 110 (Connection timed out)). 01:08:41 like if i'm face to face with someone, which face is mine? 01:08:49 the latter or the former? 01:10:07 (|the latter> + |the former>)/sqrt(2) 01:10:27 See? I told you WHICH quantum superposition it is. 01:11:17 can i... check the value? 01:11:38 or is it like uncheckalbbebvevr 01:11:44 Sure. 01:12:00 i need a transform of some sort or? 01:12:04 But it's different every time you say "face to face". 01:12:13 hmm... true 01:12:33 the face is both yours and not yours at the same time 01:12:35 Oh, actually, the + is a - if you're female. 01:12:38 SCHRÖDINGER'S FACE 01:12:43 sp3tt: exactly what I just said. 01:12:51 Apart from the Schroedinger. 01:13:02 but I can type it with the umlaut! 01:13:05 the word "face" and the word "phase" are originally the same, i think 01:14:28 the latter coming from the "face" of the moon 01:14:51 you just thought that up? 01:14:59 Who what? 01:15:05 i vaguely recall it 01:15:25 i wish i vaguely recalled every bit of information that exists 01:15:30 like you do. 01:15:42 I vaguely recall that P = NP. 01:15:51 ihope: your mum... 01:15:52 I don't remember the details. 01:16:01 I vaguely recall that the cat is dead. 01:16:19 I vaguely recall that that proton is blue right now. 01:16:31 No, it's ultraviolt 01:16:50 That's not a color. 01:16:59 ultraviolent 01:17:07 THE PROTON DECAPITATES YOU 01:17:07 The only colors are red, green and blue. 01:17:17 Unless you count antired, antigreen and antiblue. 01:17:25 that's only one colorspace 01:17:26 Those are the colors of antiprotons, among other things. 01:17:39 hmm... should i sleep in my armchair or my bed 01:18:01 sleep is for the WEAK 01:18:29 Sleep gives you special powers. 01:18:37 i can either sleep or stay awake doing nothing. 01:18:48 oklopol: go for the special powers. 01:19:05 hmm... does sound intriguing 01:19:08 eh, irc? 01:19:15 I need food 01:19:17 brb 01:19:29 i was, though, actually requesting where i should be doing my sleep 01:19:35 Special powers like the ability to avoid sleepiness and the ability to not be bored. 01:19:43 And the ability to shoot people ethically and legally. 01:19:50 sp3tt: irc is pretty much nothing 01:20:34 Staying awake doing nothing, however, gives one the ability to utilize paper and computers. 01:20:35 boredom doesn't exist 01:20:50 really? 01:20:51 how? 01:21:08 Apart from the fact that you have to do something while doing nothing in order to do that. 01:21:23 Minor setback. 01:21:38 doing nothing = doing nothing productive 01:21:53 doing nothing i can "show for my day" 01:22:09 Well, paper and computers can be non-productive. 01:22:14 really? 01:22:16 hm, my vague recollection is still a bit vague, the terms are apparently from latin and greek respectively, but had the same meaning so i _still_ think they were related 01:22:19 how exactly? 01:23:12 oerjan: where are there vague articles located that you've been memorizing your whole life, btw? 01:23:19 i might enjoy reading them 01:23:39 i shoud start writing vague articles 01:23:49 *should 01:24:27 unless there actually exist ones 01:24:30 i'd read them all. 01:27:48 i might endoy flying to istambul or something 01:27:54 i might get cold though 01:28:09 guess that would depend on how high i'd fly 01:28:21 now "sleep" -> 01:30:03 ihope: you forgot to tell me how to do something unproductive with the computer 01:30:06 (aside irc) 01:30:21 Study... er, wait. 01:30:25 Play games! 01:30:40 hmm 01:30:47 Or study pointless things! 01:30:54 Things that have been proven pointless! 01:31:00 anything i get better at is productive. 01:31:44 Not if they don't produce! 01:31:53 hmm... well, okay, since that is actually quite exactly the definition i use, it's pretty easy coming up with non productive stuff 01:31:56 Study something that mathematicians already know everything about! 01:32:10 improving my brain is productive. 01:32:32 since it's pretty much all that exists from my point of view. 01:34:19 I guess you'll have to do something destructive, then. 01:34:41 You can fail to revert vandalism on a wiki! 01:35:00 i could, in theory, just like throw dice all night... the only problem is i'd remember that and list it as the cool feat "throwing dice for 10 hours in a row" 01:37:43 Python fits my brain :) 01:37:52 And with that, I go to do me daily Japanese work. 01:39:42 and i go to sleep 01:39:46 reaaaally -> 01:44:52 * sp3tt goes to sleep 02:07:00 -!- meatmanek has left (?). 02:18:32 Now, are there any optimizing Unlambda compilers/interpreters out there? >:-) 02:27:14 there is a guy in #haskell writing a compiler, i don't know how optimised it will be 02:28:40 also mandelson's interpreter is supposedly much faster than others, although i (vaguely :) ) recall it has some incompatibilities 02:30:09 *is = was, hard to say if it still is fastest when the unlambda homepage hasn't been updated in years 02:42:51 Incompatibilities... 02:43:23 i again vaguely recall the d function didn't quite follow the spec, or something like that 02:43:58 possibly he memoized it, or something like that 02:44:34 anyway some program broke when i tested it (my interpreter? i don't recall) 02:59:15 -!- GregorR has quit (Remote closed the connection). 02:59:45 -!- oerjan has quit ("Good night"). 03:00:18 -!- GregorR has joined. 03:12:27 -!- cherez has joined. 03:14:36 THE CHALLENGE: Create a joke with the punchline "Baroque Obama" 03:15:03 YOUR MOM is BAROQUE OBAMA. 03:18:05 8-O 03:18:09 It's TRUE 03:31:10 -!- ihope has quit (Read error: 110 (Connection timed out)). 04:11:41 -!- puzzlet_ has joined. 04:11:41 -!- puzzlet has quit (Remote closed the connection). 04:26:02 -!- Sgeo has quit ("Ex-Chat"). 04:38:19 -!- GreaseMonkey has joined. 05:54:18 -!- poiuy_qwert has joined. 05:57:19 -!- jix has quit (Nick collision from services.). 05:57:33 -!- jix has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:03:37 -!- olsner has joined. 08:09:50 -!- cherez has quit ("Leaving."). 08:46:29 -!- poiuy_qwert has quit. 10:22:32 -!- jix has quit ("CommandQ"). 10:26:04 night all 10:26:52 -!- GreaseMonkey has quit ("Remember kids, be careful with explosives, they might be interesting!"). 10:28:27 -!- asiekierka has joined. 10:28:33 My friend did something for me! 10:28:39 a BF loader that fits in a bootsector! 10:28:57 interperter is NASM 155 bytes (binary compiled) 10:29:09 whole thing 194 bytes 10:29:31 510 - 194 = approx. space for BF code :) 10:29:39 cool? 10:29:50 AWESOME! 10:30:09 I don't know enough about bootcodes, but I wanna read the ASM :) 10:30:34 ok 10:30:36 wait 10:30:48 stdin - keyboard 10:30:55 BF code is compiled in the binary :D 10:31:15 :) 10:31:28 my friend did it 10:31:29 not me 10:31:30 but wait 10:31:36 i'll try to compile it and test 1st 10:33:07 -!- Darktemplar has joined. 10:33:22 it's my polish friend 10:33:22 he did it 10:33:25 CONGRATS! 10:33:35 heh 10:34:11 Waiting for JumpF**k, keyboard BF code typing and RAW BF store (to make max size up to 1,4MB) 10:34:20 i'd like to first see the first two 10:34:25 then a option to add the third :) 10:35:00 okay 10:35:03 i'll put the code 10:36:10 if I make a BF-CommandLineInterface that's gonna be dead :) 10:36:24 why? 10:36:57 I don't think I'd fit it in bootloader still 10:37:05 perhaps I can fit the CLI, but FS support... 10:37:11 it's unneeded 10:37:17 you'll make FS support (RAW) 10:37:17 okay.. 10:37:22 Heya. 10:37:23 then you will put rest of code in RAW 10:37:27 Awesome stuffs my friend. 10:37:32 AND the BF codefiles in raw 10:37:38 sure... 10:37:43 ok 10:37:50 sending the code with ,[.,] and binaries 10:37:52 but first testing 10:38:07 I haven't tested it with multiple loops 10:38:19 but frequent stack operating around'em should do 10:38:26 i'll test 10:38:48 10:39:06 okay 10:39:13 then try and do JumpF**k ok? 10:39:31 if you want 10:40:57 You can do what Forth does, blocks for the FS. 10:42:08 you mean like filename:SECTOR3-6? 10:42:38 Each block is a fixed size. 10:43:11 So block 21 is just data at address (21 * block-size) + block-offset. 10:44:16 But look, we want to sometimes store multiple files - oh wait, this can be done with SysLinux+MemDisk+GZip combo :) 10:44:41 you mean RAW is no fun ? 10:44:51 multiple files in RAW is perfectly OK 10:45:36 Well, I guess. 10:45:52 512 bytes per block 10:46:03 oh 10:46:11 LBA->CHS is about 25-30 bytes 10:46:24 we need also like a file: 10:46:41 blah 10:46:47 that stores filename you want (8.0 :D) and amount of blocks it takes 10:46:58 or 5.0 for that matter 10:46:59 it is easier for me to parse hex than dec 10:47:04 so use hex 10:50:19 -!- ehird` has joined. 10:50:31 hi! 10:50:41 My friend did a BF reader in a bootsector! 10:50:49 with 300-400 bytes left for code 10:50:51 he is here 10:50:53 Darktemplar. 10:51:19 ummm so what 10:51:26 of course you can fit BF into a bootsector 10:51:29 BF is friggin tiny 10:51:40 but he will add many stuff to it 10:51:45 then it isn't BF any more 10:51:48 and it's smaller than AmigaOS interperter 10:51:54 he will add not stuff to language 10:51:54 many stuff 10:51:59 like a CLI 10:52:01 :D 10:52:03 (except JumpF**k of course :D) 10:52:12 and a command right? 10:52:15 to read from files 10:52:23 @(filename.txt) i mean 10:52:23 but kinda debug-like one 10:52:48 why is jumpfuck "of course"? 10:52:53 i wrote jumpfuck mainly for compiler writers 10:52:59 ... oh. But i wi--- 10:53:03 YOU WROTE IT? 10:53:16 this jump fuck? http://esolangs.org/wiki/JumpFuck 10:53:18 if so, yes 10:53:21 yes 10:53:45 i wanted to add just the commands 10:53:48 the 2 jump commands 10:53:49 adding jumpfuck shouldn't be hard.. 10:53:59 and one my command (if you implement RAW, it shouldn't be hard) 10:54:06 another segment register, like FS... yet limiting that stuff to run on 286+ 10:54:24 how do people suggest i make this TC? http://pastie.caboo.se/86457 i was thinking maybe a "computed ld/st" which takes its address from a register as well 10:54:40 but i'm not sure which opcodes i'd remove to do it 10:55:11 and my command... @, Read (actual cell) char from (cell after actual) block to (cell before actual) 10:55:52 ehird, ur making a binary EL? 10:55:58 or it may use @(200|3) that will read 200th char from 3rd block (512 bytes/block right?) and save it to actual cell :) 10:56:03 it's better for me 10:56:12 Darktemplar: binary what? 10:56:18 esoteric language 10:56:22 Darktemplar: yes. that's a spec for a computer architechture 10:56:35 but it isn't really meant to be mainly esoteric 10:56:36 but look, ehird, you'll have first JumpF**k implementation :D 10:56:37 more an experiment 10:56:41 asiekierka: true :) 10:57:04 i'm just trying to get an assembly language with the smallest instructions i can while still being relatively easy to use 10:57:10 If you'll make the new architecture, try and port Darktemplar's bootloader to it 10:57:24 ehird->make it objective-enforcing :D 10:57:44 something like a weird minimized Java 10:57:50 no way 10:57:56 why 10:58:03 and ehird`: Do you have any command ideas? 10:58:04 this is meant to be machine code that could feasably be put on a machine 10:58:13 except for a really simple computer where size of code is everythign :) 10:58:18 asiekierka: nope 10:58:18 since we have 3 more commands to BF, making it total of 11 commands 10:58:20 too bad 10:58:27 maybe BF machine's IO commands? 10:58:30 then you could do graphics :p 10:58:56 cool 10:59:07 1111 -> couldn't you make it SwitchToWeirdMode :? 10:59:19 Darktemplar: you need nop :) 10:59:26 what is weird mode anyway 10:59:43 theory... 10:59:46 or a joke 11:00:09 you could (but not need to) make a command like S(125) that will set current cell to 125 11:00:17 will save up to 20 lines! 11:00:23 i recommend it 11:00:36 or make it Add Number 11:00:41 like ! - read from port no. current cell and save it in n+1 cell 11:00:42 so it adds 125 to current cell 11:00:52 or direct memory access :D 11:00:58 OH! You may add it 11:01:13 yeah. Let's come up with another EL 11:01:31 it will be called "EsoOoS" 11:01:35 like ADD = CreateCommand("Add.Command","+",NOTPRIVILENGED); 11:01:40 nope 11:01:46 -!- sekhmet has quit (heinlein.freenode.net irc.freenode.net). 11:01:48 i'll make list of added commands 11:01:54 but that would be kinda freaky 11:01:56 ok 11:02:05 but asie, decide which cell size to use 11:02:06 -!- sekhmet has joined. 11:02:12 it's no problem for me to switch to words 11:02:26 gwar, why are there no decent binary editors 11:02:36 because you can't sell them 11:02:43 :p 11:03:15 hmm found one 11:03:19 OK. Got to go. Some work awaits.. 11:03:20 bye 11:03:21 -!- Darktemplar has left (?). 11:06:40 hehe, tiny infinite loop: 11:06:45 "à." 11:06:49 without quotes 11:06:55 why? 11:06:59 what à does 11:07:01 of course that's just the machine code i need headers 11:07:11 asiekierka: that is "111000000000" 11:07:25 look at the spec i posted to see why that loops 11:08:08 i see 11:08:16 1110 CCCCCCC Jump to C. 11:08:31 and at position 00000000, we have "111000000000" 11:08:40 which jumps to 00000000... 11:09:21 in reality, the shortest infinite loop will be a bit longer 11:09:33 you have to specify how long the code is (so the machine knows where the data section starts) 11:09:38 and that takes 32 bits 11:09:43 i might reduce it to 16. 11:10:56 i may send you the code 11:11:04 to Darktemplar's interpreter 11:11:08 if you want 11:12:12 so the shortest infinite loop is that code i posted 11:12:17 but the shortest infinite loop wrapped in a binary 11:12:32 is "...à." 11:12:56 aka "00000000000000000000000000001100111000000000" 11:13:24 aah, damnit my instruction set has no "halt" 11:13:53 somebody tell me what insutrctions they don't think would get much use in http://pastie.caboo.se/86457 :p 11:15:15 1111 :D 11:16:15 have you EVER coded low-level asm? 11:16:21 do you seriously think NOP is useless? 11:17:32 no 11:17:38 and maybe 11:17:48 http://en.wikipedia.org/wiki/NOP 11:17:56 there are quite a few examples of good use there 11:22:25 I guess for NOP you could do 11:22:35 AD A B 11:22:37 err 11:22:44 wait you couldn't do that 11:22:46 MV A A then 11:22:58 so 1111 is halt... 11:24:35 ok here's the newest spec: http://pastie.caboo.se/86570 11:24:46 if someone comes up with a nice way to make it TC :) 11:31:41 ehird`: Could you help me? 11:31:46 the Darktemplar code fails 11:31:48 oh wait 11:37:17 I'll go on and learn ASM later 11:40:10 how much chuck would a chuck wood wood if a chuck wood could wood chuck? 11:43:39 mörning 11:45:58 morning 11:48:51 got any ideas for how i can make http://pastie.caboo.se/86570 turing complete? :) 11:51:24 wait 11:52:56 make 1st bit of each memory slot be a swith that expands that memory slot to be as bit as the whole memory 11:53:02 and... there. 11:53:15 you have to have some infinity there 11:54:31 how to make a newline in low-level ASM (i'm learning it) 11:54:34 without a OS 11:54:40 i.e. booted from a bootsecotr 11:54:43 bootsector* 11:55:31 is it 13 and 10? 11:55:31 or 10? 11:55:33 or what? 11:56:23 ehird`! 11:56:27 oklokok! 11:56:28 do you know? 11:57:07 hmm 11:57:32 0D0A in windows, 0A in unix, 0D in mac iirc 11:57:34 i have no idea. 11:57:46 ???? in BIOS 11:57:54 i have no idea. 11:57:55 :P 11:59:21 i think 0D0A 11:59:23 but not sure 12:00:26 you can put that to be sure 12:00:49 not now 12:01:07 wait 12:01:13 i'll probably be back in 10-15 mins 12:01:25 iback 12:01:29 i'm back 12:01:34 anyway 12:01:36 all i really need 12:01:41 is some way to access memory relative to some other location 12:01:48 right now you can only specify an absolute 12:02:05 however i need to keep the instruction set at its current size 12:02:19 gotta go 12:02:31 -!- asiekierka has quit. 12:03:15 just make a relative jump 12:03:22 that'd make it tc as well 12:03:38 i just like nestable memory slots better : 12:03:40 :P 12:05:32 how would a relative jump make it tc 12:05:38 you still can't access infinite memory 12:05:58 i mean 12:06:05 a relative jump in memory 12:06:14 so that memory slot 0000 moves 12:06:17 back and forth 12:06:26 tc via trivial isomorphism to bf 12:06:47 oh 12:06:54 well it's not really typical then 12:07:00 right now it looks quite a lot like some other simple machine codes 12:07:05 that would make it.. less so 12:07:23 you can also do like 0000-7FFF always program spesific, and 8000-ffff move if relative jump used 12:07:42 and 8000-FFFF would have "infinite" memory for each program 12:07:50 or smth 12:08:17 millions of ways to do ittidy 12:08:25 i mean 12:08:32 i want it something like most machine codes 12:08:36 they don't use weird hacks like that 12:08:42 they're just... tc in a normal way 12:09:05 okay, then you will have to leave out the "every memory slot is n bits and every address is m bits" attitude. 12:09:32 it will then *look* more like asm in instruction descriptions, but it will inherently be less asm 12:09:48 have you checked an "asm" for a highlevel language? 12:09:57 like python bytecode or jvm 12:09:57 inherently less asm = :( 12:10:02 and yes 12:10:10 besides 12:10:16 i need that attitude 12:10:24 otherwise code can't be portable across amount of memory 12:10:26 i haven't looked at jvm tbh, but that isn't actually that high-level of course 12:10:30 huh 12:10:33 whut 12:10:38 yeah 12:10:42 so... my idea. 12:10:47 mem jump 12:10:53 hmm 12:11:05 you could have a way to jump to next "page" 12:11:09 and back again 12:11:15 but i have never seen machine code with "mem jump" 12:11:16 :) 12:11:17 that'd make it tc as well, but it'd be cleaner 12:11:23 how DOES most machine code do it anyway? 12:11:31 to handle calculated memory positions? 12:11:32 do... what? 12:11:35 instead of just immediate values? 12:11:43 it's called addition 12:11:53 sure 12:11:57 do they have a computed store or something 12:11:58 like 12:12:23 cld r1 r2 - "access the memory whose position is in r1 and store it in r2" 12:12:42 as well as ld r1 addr - "access the memory at addr and store it in r1"? 12:12:48 or something like that? 12:13:41 usually asm has something like thta 12:13:43 *hathtat 12:13:56 i see, that makes sense 12:14:02 you have that too 12:14:05 no i do not 12:14:10 I have ld, but not cld 12:14:19 cld would make it turing complete 12:14:27 but i can't add any instructions 12:14:30 i've reached my limit 12:14:32 then i have misunderstood you... wait a bit 12:14:38 so i need to remove 2 instructions that won't be used much 12:14:40 pick two? :) 12:15:34 nop can be hacked in using the others... same goes for many of the calculations, but it might be ugly if you'd just have a random subset of the logicals 12:15:53 (ehird`) cld r1 r2 - "access the memory whose position is in r1 and store it in r2" 12:15:57 why does this make it tc? 12:16:04 and how is that different from ld? 12:16:38 "access the memory whose position is in r1" != "access the memory at addr" ? 12:18:32 brb 12:19:07 and 12:19:10 it makes it turing complete because 12:19:13 r1 is a register 12:19:33 Ah, wait, I'm going to tweak the code a bit 12:19:59 are registers infinite? 12:20:03 bignumzz 12:20:55 ok: 12:20:56 http://pastie.caboo.se/86579 12:20:57 i'm sorry, but i don't see the tucrity. 12:21:13 everything but the first two AAAAAAAAs are register ids 12:21:26 that pastie hates me a lot 12:21:37 now, if i had a version of the first two instructions which instead of the immediate AAAAAAAA took a register AAA, you could do computed memory access 12:21:45 only problem is, i'm out of instructions... 12:21:55 so what two instructions can i get rid of without too much effect? 12:24:28 whell, s/xor and or not/nand nor ;) 12:24:57 i don't want to get rid of not 12:25:07 or xor 12:25:12 or or, or and 12:25:20 those are pretty much essential for non-hellish programming 12:27:50 memory management, arithmetic, binary logic, conditional jump, unconditional jump, halt... you pretty much need those if you don't want to do anything far-fetched 12:28:04 exactly 12:28:09 but i need two mor memory management instructions 12:28:34 hmm, can you please try to explain how those are different from the ones you have now? 12:29:02 honestly i have no idea how you are having trouble with it 12:29:04 http://pastie.caboo.se/86579 12:29:10 0000 AAAAAAAA BBB and 0001 AAAAAAAA BBB 12:29:19 AAAAAAAA is an immediate value. in the binary file 12:29:21 HOWEVER 12:29:34 EVERY other single argument for EVERY instruction apart from those two AAAAAAAAs, is a register ID 12:29:39 ah well, you can just replace those 12:29:46 SO 12:29:47 I need 12:29:52 a computed st/load 12:30:00 with AAA BBB arguments, which take the address from the register 12:30:01 you see? 12:30:17 HOWEVER i can't just replace those two 12:30:18 yes yes 12:30:25 as they supply the >only way to get values from memory< 12:30:33 really? 12:30:34 since, of course, you have to get something into the registers in the first place 12:30:36 before you can add to them 12:30:38 to use them as addresses 12:30:41 think about it 12:30:49 if everything is indirect to register values, and every register starts at zero 12:30:52 how do you get a value into a register? 12:31:07 so, i need those normal ST/LD 12:31:09 ah ture, but i'd prefer a way to set a value to a register over those .P 12:31:10 :P 12:31:12 but i also, for turing completeness, need a computed ST/LD 12:31:19 so, i need to replace two instructions 12:31:47 but i can tell you that will not make it tc 12:32:43 it >will< 12:32:54 well, maybe not completely TC 12:33:01 because of the size of the values 12:33:03 BUT 12:33:12 "turing complete" for all practical purposes 12:33:21 oh, if that's all you want, then it already is tc 12:33:24 as in you can write real useful programs in it 12:33:25 and no 12:33:34 except for that stuff you haven't gotten in yet 12:33:37 because accessing relative memory positions and other pointer arithmetic is pretty much mandatory 12:34:02 Hmm - what is the bitshifts in most programming languages? Arithmetic shift or logic shift 12:34:14 i do know that, but as i said, you can just replace those first two with cld and ld and have a way to set a register to a valua 12:34:16 *value 12:34:27 what do you mean? 12:34:35 what do you mean what do i mean 12:34:49 arithmetic shift == takes sign into account 12:34:49 ? 12:35:12 http://en.wikipedia.org/wiki/Logical_shift 12:35:18 http://en.wikipedia.org/wiki/Arithmetic_shift 12:35:18 you usually have two shifts in an asm, since asms are rarely typed 12:35:19 hmm 12:35:23 i'll check those out... 12:35:28 ok, well which one should i implement ;) 12:35:54 aha 12:35:59 i don't actually need bit shifts! 12:36:06 why? 12:36:10 >> N == / (2 ** N) 12:36:20 << N == * (2 ** N) 12:36:36 ...orly 12:36:40 yarly 12:36:45 and i have the irb session logs to prove it! 12:37:33 that is kinda given 12:37:56 that is a way to get a round the need for two different shifts, yes. 12:38:12 if you have multiplication always be signed 12:38:28 usually, you also have two multiplication instructions & division instructions 12:38:35 for signed / unsigned 12:38:53 everything is unsigned in this 12:38:55 so you may want to have everything just unsigned and let ppl get around that on their own 12:38:57 yes 12:39:08 hmm 12:39:14 that was my way to say you should naturally have logical shifts 12:39:16 i don't have an exponential oprator though 12:39:22 ...orly 12:39:29 so the 2 ** N bit might be... annoying to do 12:39:46 that really isn't the easiest way to use one of those operators to emulate another... 12:40:10 i guess though that people would just work out 2 ** N beforehand 12:41:52 >> and << are effectively quick 2**n div/mul... so it's pretty obvious they aren't exactly *needed* 12:42:12 *quick div/mul by 2**n 12:43:18 ok i've got a new spec 12:43:24 i'll just put it up now 12:43:59 http://pastie.caboo.se/86585 12:44:12 waitaminute 12:44:18 the first integer doesn't have to be 32-bit... 12:44:21 addresses only go up to 8 bits 12:44:35 wait... that means code will have to be hideously small 12:45:06 :s 255 bits max 12:45:09 err, wait, no 12:45:25 ~65536 bits max :p 12:45:29 that's rather less worrying, hehe 12:47:11 http://pastie.caboo.se/86585 there we go 12:47:26 a turing complete, slightly usable machine architechture 12:47:37 with tiny, tiny, tiny instruction size 12:48:05 now i'll design an asm spec for it! 12:49:02 speccidy spaccidy 12:50:32 of course it doesn't have IO... 12:50:37 what do you think i should do to rectify that? 12:50:42 replace two more instructions? :S 12:51:02 you could do the INT instrcution 12:51:05 *instrcution 12:51:07 *instruction 12:51:16 interrupts are evul 12:51:36 well yes, but they're nice if you want small instruction size 12:51:46 though... might be a bit cheatish 12:52:31 yes 12:52:38 i think i'll find two more instructions i can remove 12:52:54 and add in and out, both taking AAA BBB 12:53:09 well, arithmetic is used a lot more than binary stuff, and the jump/memory stuff has to be there for it to be an actual programming language 12:53:15 A is the register which contains the port, B is the register which contains what to send 12:53:21 and i'll define some standard ports 12:53:25 and 12:53:26 so... i'd say NAND! :P 12:53:28 in will take 12:53:33 AAA BBB 12:53:36 actually 12:53:38 in will just take AAA 12:53:47 A contains the port, A gets replaced with the read value 12:53:56 And, um, I don't have NAND. 12:54:02 read the spec :) 12:54:38 or you could just have 4 ports and have the first bit indicate whether it's an output or an input port 12:54:42 hmm... might be a bit ugly 12:54:44 ah 12:54:54 sorry, you're using the register value as the port of course 12:55:02 yeah that's just a sneaky way to add another instructiosn :p 12:55:06 so you'd still have like a million ports 12:55:12 no 12:55:14 values are 8 bits 12:55:17 256 ports :) 12:55:25 ehird`: i meant i'd say "do the nand" 12:55:29 do the do the nand 12:55:35 whut 12:55:42 i mean 12:55:49 s/xor and or not/nand 12:55:55 that makes no sense 12:55:57 do you mean 12:55:59 get rid of not and and 12:56:03 and replace them with nand? 12:56:06 yes 12:56:10 then not is nand a a? 12:56:12 and also remove or and xor 12:56:16 no 12:56:19 i don't like those 12:56:24 this is meant to be relatively easy 12:56:31 removing all those logic operations just makes it a turing tarpit 12:56:38 yeah... but you don't need binary stuff for most things 12:56:48 its meant to be a turing tarpit in internals, but externally it should be just about normal :) 12:58:13 but, glargh 12:58:16 there appears to be nothing i can remove 12:58:24 16 instructions are not enough :( 12:58:50 you can remove the first two and add a "set" 12:58:59 ? 12:58:59 and you have one spot open 12:59:03 i don't get it 12:59:12 set REG VALVALUE 12:59:26 no 12:59:29 VALUE = bad 12:59:32 ADDRESS = good 13:00:21 if you can set register values, you can do stuff like incrementation without having a memory cell that has the number "1" in it... 13:00:38 now you'd have to have a memory slot where you have the number "1" to be able to increment 13:00:52 yeah 13:00:53 that's simpler 13:00:57 so i like my way 13:01:11 so... "set" would make the first two unnecessary, make a lot of calculation easier and also make it more pure 13:01:28 because now you have really duplicate instructions 13:02:05 the first two and the ones where memory location is looked up from a register are pretty much the same, the first ones are just the unpure version of the latter 13:02:36 (purity == the nice INSTRUCTION AAA BBB pattern) 13:02:37 okay i guess 13:02:45 (then SET would be the only exception) 13:03:06 i'm feeling foodneedish 13:03:21 hmm 13:03:23 i don't like your idea 13:03:28 oh 13:03:28 because it makes setting memory locations harder 13:03:29 why ? 13:03:32 oh 13:03:35 you need a SET and then a STORE 13:03:39 well 13:03:41 you need: 13:03:43 SET, CSTORE 13:03:45 instead of just 13:03:46 STORE 13:04:21 haha 13:04:28 what :( 13:04:43 then why not make another set of arithmetic instrcutions as well that take memory slots as params? 13:05:01 well because i'm keeping it at 16 instructions :p 13:05:02 so you don't have to LOAD ADD STORE, but just ADD 13:05:13 i'm just saying my way is superior! 13:05:17 super über 13:05:18 okay, fine 13:05:23 :P 13:05:43 i'm really gonna go eat now 13:05:47 hf with your asm 13:06:00 i wish i was doing something... doing stuff is so much fun :< 13:06:04 but i ain't 13:06:09 okay: 13:06:13 because i'm reading swedish vicabulary. 13:06:14 http://pastie.caboo.se/86585 13:06:16 *vocabulary 13:06:19 i need to free up one more instruction 13:07:17 hmm 13:07:46 usually you *have* a condition for a jump and any 1100 AAA AAA CCC equals 1101 CCC 13:07:51 if you see what i mean 13:08:21 (two reasons to remove 1101 that way) 13:08:27 s/way/was 13:08:27 ok 13:08:37 also 1111 == nop? 13:08:47 or is that like implicit? 13:08:59 1111 is where i'm going to put the last added instruction 13:09:02 so "jump" is normally just asm sugar? 13:09:22 hmm... x86 has like 15 jumps... 13:09:35 i'm just thinking that, jumps are really really common 13:09:42 and, if it has to compare something every time.. 13:10:04 -!- olsner has quit. 13:10:52 true 13:11:03 if you don't wanna do any preprocessing for the code that is 13:11:10 (trivial optimization...) 13:11:43 (err... not really) 13:12:08 well yeah it is trivial 13:12:18 but 13:12:19 it's fake 13:12:24 since it'll use another instruction internally 13:13:40 hmm... 13:14:41 you could make a halt address. 13:14:44 11111111 13:15:03 SET 000 11111111 JUMP 000 13:15:26 yeah but, that's quite a lot of work to halt 13:15:28 that'd be like fast-forwarding to the end of the code 13:15:30 and halting is very common 13:15:44 anywa 13:15:49 it's feasable that some code would be that long 13:15:53 though. admittedly. not likely :) 13:15:59 but... 13:16:03 yeah. i'll get rid of halt 13:16:08 but wait 13:16:15 what if 11111111 was in the data section 13:16:21 then you'd jump into data 13:16:27 and, feasably, you might want to execute some data 13:16:39 yeah i don't think specializing jump is good 13:16:43 i'll just get rid of unconditional jump 13:16:44 well, you'd basically have one less space for code/data... 13:16:49 what 13:16:53 yeah 13:16:57 (i misread you) 13:17:46 00000000-11111111 ~ 00000000-11111110, so that'd really not be that big a sacrifice... the problem with removing halt is really the fact you may want to use it as a convenience for debugging 13:18:09 that'd make it quite verbose 13:18:33 yeah 13:18:38 i'll just get rid of unconditional jump 13:18:42 anyway i've almost finished the new spec 13:18:47 hmm 13:18:51 should i combine input and output? 13:18:57 READ 000 = input 13:18:59 WRITE 000 = output 13:19:01 that's the 3rd way i suggested 13:19:04 yeah 13:19:06 no i mean 13:19:07 the port 13:19:09 hmm 13:19:13 like, one port for "terminal" 13:20:25 you could have IO AAA BBB PPP, where AAA would be input register, BBB output and PPP port... millions of ways to cincumvent having to have both IN and OUT 13:20:35 (i guess that was a note-to-self more like) 13:20:48 i want both in and out 13:20:51 you do not understand 13:20:55 i am talking about port numbers 13:20:57 aaaaand now i realize what you said. 13:20:58 yes 13:21:21 takes me a while sometimes, no matter how simple a thing people say to me 13:21:22 hmm 13:21:39 that sounds like a good way 13:22:21 can't really come up with a good reason though 13:28:22 back 13:28:24 yes 13:28:44 ok 13:28:48 so if i have terminal as 0 13:28:49 what should port 1 be 13:31:23 :/ 13:32:35 you wanna include those in the spec? 13:32:43 well i guess you wanna assign a few 13:32:47 hmm 13:33:02 you could have stderr next 13:33:15 or have it be port 11111111 13:33:27 then you could have a nop port 13:33:35 nops are great 13:33:38 nopol <3 13:33:47 why.am.i.not.eating -> 13:49:35 decided not to eat today, bought 5 liters of juice 13:57:24 I have 13:57:26 0 - terminal 13:57:32 1 - ? 13:58:02 that's pretty... impressive :P 13:58:42 what should 1 be :p 13:59:47 you can have a sound port and a kinda raw pixel feed port or something 13:59:48 eh 13:59:52 i mean, graphic output 14:00:04 maybe 14:00:08 but.. something more useful..? 14:00:14 then, some kinda nethack. 14:00:20 nah 14:00:24 that'd be implementation defined ports 14:00:34 i want to define 3-5 ports and then have the rest implementation defined 14:00:42 then you could implement a web browser or something in it :D 14:00:57 heh, that'd be fun 14:02:15 sooooooooooo 14:02:19 what should port 1 be 14:05:26 :( 14:11:46 stdio, stderr are the only ones i can think of 14:12:01 nonononono 14:12:04 since you obviously don't want anything that esoteric and my ideas tend to be like that 14:12:05 i don't mean like keybaord input/output 14:12:06 hmm 14:12:07 oh 14:12:10 i mean ANY kind of IO 14:12:19 just, any sort of communication at all 14:12:23 stdio == keyboard? 14:12:32 stdio mostly == terminal 14:12:43 -!- RedDak has joined. 14:12:50 well, i was just thinking like standard io 14:13:30 you can have stuff like mouse and keyboard of course, but i don't know at what point it should be implementation defined 14:14:14 you are thinking too limited definition of IO 14:14:33 i realize that. 14:14:36 absolutely ANY operation that could be said to have some sort of link to "input" and "output" 8-bit values, that isn't covered by the instruction set 14:15:00 ah, true... you could have like additional instrcutions taht way 14:15:10 (i can't type that word for some reason) 14:16:21 kind of... 14:16:29 but... e.g. a computer speaker could be IO 14:16:39 and the value could be some sort of pitch/amplitude combination 14:16:42 you know, the little beeping speaker 14:16:58 i already said that 14:17:07 you said that's not very necessary 14:17:08 :| 14:18:10 no you didn't say that :| 14:18:25 (oklokok) you can have a sound port 14:18:29 i guess i didn't 14:18:38 but i tried to 14:18:42 sound port != computer speaker 14:18:55 sound port = general term 14:19:09 *more general term 14:20:53 yeah, but.. 14:21:10 anyway, yeah you can have one be a sound port 14:21:13 yes 14:21:17 ok, what about 2 14:21:22 just 2, and then i'll leave the rest undefined 14:21:39 and possible two separate ports for *raw* and *pitch+length* output 14:21:43 *possibly 14:22:25 making sounds is hell in like every goddamn platform 14:22:28 no matter what you use 14:22:31 i hate it 14:23:25 yeah; how do you do it in ruby? 14:23:28 computer speaker 14:23:36 eh 14:23:46 i have a feeling you know more ruby than me 14:24:00 since i vaguely recall you teaching me the basics of ruby 14:24:18 it was a question to everyone :P 14:24:53 ...eh... mine was too! 14:26:41 when i say computer speaker 14:26:43 i mean internal speaker 14:26:48 i do know 14:27:00 pc beeper is what i've thought it's called 14:27:09 ut... 14:27:10 *bit 14:27:12 *but 14:27:25 i guess that's just for pc. 14:27:30 *might* be 14:28:08 :) 14:28:13 maybe 14:30:00 the internal speaker is kinda boring 14:31:02 you have clearly never played old games 14:31:11 i've heard complex polyphonic tunes composed with internal speakers 14:31:53 it can't be strictly polyphonic... 14:31:54 with enough tricks you can get some nice lo-fi tunes 14:31:56 and, no 14:32:01 but if you alternate between two very short notes 14:32:05 you can get the illusion 14:32:08 of polyphony 14:32:21 yeah, okay you've convinced me 14:32:36 wonder if you could do that with python's beep... 14:32:45 no 14:33:20 also 14:33:21 you van't? 14:33:22 *cant 14:33:25 if i add something that controls the screen too 14:33:26 *can't 14:33:38 you could create a 99 bottles of beer program with colour graphics and sound :) 14:33:41 like an old dos app! 14:34:05 i'll make one that synthesizes a guy saying the lyrics. 14:34:19 with an internal speaker?! 14:34:22 that'd be impressive 14:34:46 depends on how strictly the movement of the cone is defined 14:34:52 i assume it's *very* 14:35:31 so... you could make a program to convert wav -> beeper 14:36:16 maybe 14:36:20 are you on windows? 14:36:28 yes, now 14:37:10 do you have ruby installed 14:37:13 or python 14:37:21 yes 14:37:23 python 14:37:25 which 14:37:28 version 14:37:37 2.2, 2.4 and 2.5 14:38:32 2.4 doesn't open iirc 14:38:40 and 2.5 i have to do some tricks to get open 14:45:55 ok 14:45:58 right: 14:46:08 import win32api 14:46:54 did that work? 14:47:07 huh? 14:47:19 i do know how to make the pc beeper sing in python 14:47:22 oh 14:47:42 http://vjn.fi/s/beepiano.py 14:48:03 wow, a three letter domain name 14:48:04 impressive 14:48:08 not many of those around 14:48:09 i made that a million years ago 14:48:20 there's a website with a link to each of them 14:48:31 that's not exactly my page 14:48:40 it's our group's... vjn's page 14:48:49 ah 14:49:27 the domain was easy to get, we were just lazy enough to get a web hotel system so it costed like hell 14:49:41 but it's fun wasting money 14:51:06 web hotel? 14:51:13 well okay it's my page in that most of the content is made by me 14:51:17 (about hald) 14:51:18 *half 14:51:55 web hotel == a public service for a server to maintain that 14:52:05 ah 14:52:08 by the way 14:52:22 some of the best pc speaker music is in old lucasarts graphical adventure games 14:52:27 start them with the pc speaker command line option 14:53:06 i don't feel like dl'ing any games now, you can record some for me and upload 14:53:07 :) 14:53:27 :p ok 15:00:05 are you actually gonna do that btw, because waiting for you to upload it is actually now my excuse for doing nothing at all 15:00:14 well, i'm actually picking at my toes 15:00:20 they seem to be... rotten 15:00:28 i'm gonna go... do some cleaning now -> 15:01:40 i am going to do it 15:01:52 i'm just finding my copy of the game 15:04:21 -!- RedDak has quit ("I'm quitting... Bye all"). 15:06:16 found it 15:06:18 ok, starting it 15:07:24 recording 15:12:14 i can hardly wait 15:13:50 oh no 15:13:51 i hit record 15:13:55 but it's recorded at insanely low volume 15:14:04 ah there 15:14:09 it can be amplified without much qualityloss 15:14:16 if it's square, you can easily amplify 15:14:17 yeah 15:14:26 it's prolly sine... but same thing 15:15:06 hmm not a good recording 15:15:27 i'll find a recording elsewhere 15:15:52 i don't really care about the quality that much 15:17:00 yeah but it skips parts 15:17:03 audacity is stupid 15:17:56 what? 15:18:09 audacity is stupid how? 15:18:39 it skips parts when recording 15:18:42 for no apparent reason 15:18:51 weird 15:19:00 (case in point of how quiet this recording is: i can amplify 36db and it doesn't even go to halfway full amplitude) 15:19:44 i think this might be ok 15:19:50 but be warned that the real thing sounds far more like music 15:19:52 and less like random bleeps 15:20:01 stupid skipping 15:20:28 k, making an mp3 15:20:38 note that there's periods of silence in between the three tunes 15:20:43 because i had to, you know, play the game up to that point 15:20:46 not too long though 15:20:58 ah okay 15:21:23 k uploading 15:23:43 http://rapidshare.com/files/48135293/monkeyisland.mp3.html 15:23:49 too lazy to upload it to a real host 15:27:05 i think that sounds great :) 15:27:15 but i don't think that's anything near what it should sound 15:28:47 yeah it skips in random places 15:29:13 so, that's an example of pc speaker polyphony 15:29:23 hmm.. either it skips all the time or i don't think many people would enjoy listening to that 15:29:30 it does skip all the time 15:29:42 seriously; download the game (monkey island 2) and run "monkey2 i" sometime 15:29:47 it sounds nothing like tha trecording :p 15:30:18 now i need to work out a consistant way to pack computer speaker values 15:30:19 an api 15:30:20 mahh 15:30:53 bear in mind that "2000, 100" in the windows library only produces a very short beep 15:30:56 we need to store... big values. 15:31:43 hmm 15:31:52 within 256 15:31:55 i guess, maybe 15:31:58 the register value could be a memory address 15:32:05 and then like 5 places after that is the values 15:32:47 whoa, a program that plays wavs to the pc speaker 15:32:48 crazy 15:33:34 no worky in xp :( 15:33:48 * ehird` gets updated one 15:34:07 huh 15:34:11 ah 15:34:25 yeah, it's prolly pretty easy to do, i just don't know the basics of the beeper 15:36:23 this driver isn't xp-confirmed-compatible :s 15:36:33 * ehird` is hopefully not suiciderating computer 15:37:53 how do you suggest we lay out the argument? 15:39:19 i think a 16-bit integer for both tone+amp will be enough 15:39:23 so, four slots of memory 15:39:28 so should the value be the first slot of memory's address? 15:40:14 ? 15:41:26 hmm 15:41:46 like 256 for duration and 256 for pitch 15:43:02 if you actually make tones (implicit 440*(2**(n/12)) conversion before output), composing will be easier and 256 will be enough 15:43:18 but ppl might find that a bit hmm... what's the word 15:43:45 restricting. 15:43:50 that was hard 15:44:01 yes 15:44:02 restricting 15:44:15 two 16-bit unsigned integers is just 4 slots of memory anyway 15:44:32 and goes beyond what most computer speakers can produce as far as tone goes, and into insane lengths of tones as length goes 15:45:11 16 bits will be enough if you do frequency pitch 15:45:32 also, i was supposed to leave an hour ago 15:46:05 its not frequency pitch 15:46:11 its SOME-WEIRD-NUMBER length 15:46:17 ? 15:46:43 i'm not talking about length 15:46:46 but pitch 15:48:06 ok 15:48:38 speaking of pc speakers, and i posted the monkey island 2 theme earlier, here's the monkey island 1 theme tune played live: http://www.youtube.com/watch?v=mYZXNVHVfhc it's awesome 15:48:45 it's really never useful having tone output by frequency 15:48:53 it melds tons of different parts 15:49:03 oklokok: i'm going based on win32's Beep function 15:49:17 i do know 15:54:24 http://www.youtube.com/watch?v=WjvD3C_nvBk&mode=related&search= <<< original version? 15:55:00 you have to do some serious hacking if that's actually done with a monophonic output 15:56:47 i know everything can be done with a monophonic output since that's all computers have, but still 15:57:11 you'd have to change note like 100 times a second 15:57:18 and still i think it'd sound wrong 15:57:26 so you'd have to add up the sines 15:57:39 and efficiently just emulate a raw output using the beeper 15:57:50 which is like 100 times harder than just making the output 16:05:21 wait 16:05:23 i'll check 16:05:32 and no 16:05:34 that is not the original 16:05:39 i showed you monkey island 2 16:05:50 http://www.youtube.com/watch?v=6lTz2nkPNXA 16:06:09 that's the adlib version, so, not the best 16:06:17 my recording starts with the monkeys dancing 16:06:26 but anyway, my recording skipped every 2 seconds 16:06:29 so of course it sounded nothing like that 16:08:11 however mine also includes largo's theme 16:08:18 and omits the Scabb Island theme 16:08:34 and also has the chapter change theme 16:11:11 i seem to remember this scene was the best-composed for the pc speaker: http://www.youtube.com/watch?v=wbTTyacCO5c 16:11:22 there's no recordings of it on the speaker though and i'm not playing half way through the game to get there 16:15:13 -!- Svenstaro has joined. 16:15:24 i'll be going now, cul! -> 16:15:30 bye 16:17:28 -!- sebbu has joined. 16:39:32 -!- jix has joined. 17:23:28 -!- lament has set topic: Esoteric programming language discussion | FORUM AND WIKI: esolangs.org | CHANNEL LOGS: http://ircbrowse.com/cdates.html?channel=esoteric | NOTE TO EHIRD DO NOT REMOVE: \instructionset. 17:29:30 -!- jix has quit (Nick collision from services.). 17:29:44 -!- jix has joined. 17:42:01 -!- lament has quit ("Lost terminal"). 17:42:57 -!- cherez has joined. 18:05:10 -!- lament has joined. 18:18:28 3.14 18:21:35 3.1489797239479878971073891723816378969086359782649786301276382935496123897 18:22:03 :D 18:22:10 seems rational 18:25:02 ehird`: you'll have to remove that note from the topic when you don't need it, nobody else is gonna do it 18:25:09 i know 18:25:13 i still need it right now :p 18:25:27 * ehird` is forgetful 19:10:41 -!- poiuy_qwert has joined. 19:33:04 -!- ihope_ has joined. 19:33:16 -!- ihope_ has changed nick to ihope. 19:33:28 -!- olsner has joined. 19:39:08 -!- ihope has quit (Nick collision from services.). 19:39:30 -!- ihope has joined. 19:39:34 -!- ihope_ has joined. 19:45:11 I hear the sound of either "All I Know" or an ice cream truck playing Popeye. 19:47:30 i see 19:47:38 ihope: i made that instruction set TC, i think 19:48:57 http://pastie.caboo.se/86663 19:49:07 i need to define some standard ports though 19:49:16 i think i'll define Terminal and PC speaker and leave the rest implementation-defined 19:49:27 i really don't like you calling it tc :\ 19:49:36 oklokok: please read http://pastie.caboo.se/86663 19:49:39 it >is< turing complete 19:49:39 oh 19:49:45 you changed it? 19:49:49 yes 19:49:52 the current spec should be TC 19:49:57 then sorry 19:49:58 i'll read 19:50:02 if you don't believe me... then i guess i'll write brainfuck rewriting rules for it 19:50:35 hmm... 19:50:59 ehird`: oh, and couldn't you use MemoServ or something for your notes-to-self? 19:51:05 so you can make a list of 1000000000 entries in it? 19:51:09 possibly, ihope_ 19:51:20 oklokok: if you had more than 8-bit addresses, yes 19:51:26 eh 19:51:45 (In this aspect, even C isn't turing complete. Pointers have maximum values.) 19:51:47 you think that's directly extendable to infinite size registers? 19:52:08 (And yes, I know C isn't TC. I think if mine is on the same computational level of C, nobody will ever need anything more :)) 19:52:11 ehird`: this is a common discussion, this one about C, but no, pointers do not have to be finite size. 19:52:18 in C 19:52:20 C isn't TC, anyway 19:52:27 it is if pointers are infinite. 19:52:35 the size of a pointer is not defined 19:52:38 they are 19:52:39 it can be bignum 19:52:44 no it can't 19:52:48 Why not? 19:52:50 or at least, it can't in C89# 19:53:24 ehird`: then i've been lied to, i haven't read the spec of c, since i don't like the lang that much anymore 19:53:24 Does that spec explicitly state that there must be a biggest pointer? 19:53:40 s/to/at 19:53:47 s/at/to 19:53:51 ihope_: iirc, it defines pointers pretty precisely 19:53:54 (doing some nop there) 19:54:06 eh 19:54:22 defining precisely != defining a maximum size 19:55:06 anyway, that isn't tc then, and you *did not* change it :\ 19:55:09 or did you? 19:55:12 i can't find it 19:55:14 http://pastie.caboo.se/86663 19:55:34 it may be non-TC, but if so it's only because it has the same restriction as C89 19:55:44 and, frankly, i'm not bothered. nobody stops using C because it isn't TC. 19:56:02 can you quote me the part making C pointers finite? 19:56:10 in the spec 19:56:55 you have to pay to get the spec 19:57:00 do you have it? 19:57:04 because iirc someone on this channel said nothing there says it 19:57:29 i do not have it, i'd've checked that like 4 times if i had it :P 19:57:29 oklokok: C types are guaranteed to have a size in bytes defined at compile-time 19:58:40 and bytes are afaik defined to be 8-bit quantities... 19:58:47 i doubt that 19:58:49 latter one 19:58:54 eh 19:59:22 i mean, i think they have a size defined in chunks, but those need not necessarily be bytes 19:59:33 just whatever is used for memory slots 20:00:10 anyway, i haven't read the spec, someone here just said something about something and i *vaguely recall*, so... 20:00:53 defined size at compile-time == you can't have an infinite size 20:00:59 == c is not turing complete 20:01:46 well, PC:s aren't turing complete either due to the finite size of memory 20:02:11 pc's aren't, C could still be 20:02:48 defined size in bytes, yes, but if the byte is a bignum, it's tc. 20:02:55 *if bytes can be bignum 20:06:42 but they can't 20:06:53 sizeof(X) must return a value that makes sense 20:06:58 and it must be >right< 20:06:59 so no -1 20:07:05 sizeof(void *)... 20:07:11 MUST be < infinity 20:07:15 thus, C is not turing complete 20:07:23 ehird`: sizeof(char) could be sizeof(pointer-to-bignum) 20:07:38 olsner: Sure.. So what? 20:07:47 It'd be the same size as a pointer to a bignum. 20:08:27 I mean, sizeof(void *) would be composed of bignums in such a way as to have constant size (but use hidden extra data to enable unbounded values) 20:08:55 thus, sizeof's would be bounded, but the values contained unbounded 20:09:17 So given a turing-complete C implementation, sizeof(void *) == ? 20:09:34 could be just 1, since a byte is a bignum 20:10:27 what 20:10:29 that makes no sense 20:10:39 if its a bignum then its size is not 1 20:10:53 also bytes are defined to be 8 bits 20:10:57 so a byte cannot be a bignum 20:11:50 ehird`: the spec defines a byte as 8 bits, and that sizeof() returns a number of bytes? 20:12:05 pretty much yes 20:12:25 there is contention as to whether that byte size actually is mandated by the standard ;-) 20:12:31 -!- Darktemplar has joined. 20:12:57 -!- Darktemplar has left (?). 20:13:43 still 20:13:48 sizeof() must return a number of bytes 20:13:53 and sizeof(void *) is no exception 20:13:57 thus pointer addresses are limited 20:14:01 thus C is not turing complete 20:16:58 so C is only as powerful as my machine spec there 20:17:00 -!- jix has quit (Read error: 104 (Connection reset by peer)). 20:17:05 so you can't complain about my machine not being tc! :p 20:17:43 -!- jix has joined. 20:20:41 olsner: there's contention as to... wha? 20:21:28 whether the size of a byte is defined by the C standard to be exactly 8 bits 20:22:06 ...how does it manage to not be clear on that? 20:23:10 it probably is clear on that... you just have to read that part of the standard ;-) 20:24:08 so, have we all agreed that yelling at my machine for not being "really" tc is pointless :) 20:26:25 I think the discussion did have the potential to bring forth a deeper understanding of C's turing in/completeness 20:26:37 ehird`: do you still need that thing in the topic? 20:26:45 -!- ehird` has set topic: Esoteric programming language discussion | FORUM AND WIKI: esolangs.org | CHANNEL LOGS: http://ircbrowse.com/cdates.html?channel=esoteric. 20:26:48 no :) 20:27:29 ok, now the machine arch needs a name 20:27:34 then i'll write some simple programs and an implementation 20:28:15 YAEL or YAEP? 20:28:22 ? 20:28:38 Yet Another Esoteric Language/Platform? 20:28:51 it isn't really that esoteric, though, is it? 20:28:54 well, would you call it esoteric? 20:28:59 it's just a minimal machine language is it not? 20:29:08 I dunno. 20:29:14 YAML or YAMP, then? 20:29:17 well, what would make it esoteric? 20:29:25 yaml is a data format :) 20:30:36 If it's not made with usability and ease of implementation in mind, it's esoteric :-) 20:30:39 MiniMaL (MINImal MAchine Language) :P 20:30:53 What does MiniMAX stand for? 20:31:02 it is designed with usability in mind :) 20:31:04 but anything above 1 instruction isn't really minimal anymore 20:31:18 the whole point was to be tiny, but usable if you know some sort of asm 20:31:32 and i can't see how it would be hard to implement 20:31:41 Well, why did you want it to be tiny? 20:32:02 because yesterday RodgerTheGreat was talking about a turing-complete network protocol 20:32:09 and i remarked that the packet format would have to be incredibly small 20:32:20 and that you could probably get away with 4-bit opcodes 20:32:23 giving you 16 commands 20:32:26 thus... 20:32:27 Sounds esoteric to me. 20:32:30 i took that idea with me 20:32:36 and made a tiny machine language that was still usable 20:32:43 it doesn't look really esoteric to me but maybe it does to you? 20:33:03 I guess tininess is... um... 20:33:08 A useful thing to strive for. 20:33:18 not really =p 20:33:20 Thus making it not an esoteric feature. 20:33:36 its tinyness really has no use 20:33:37 Nooooooooo! 20:33:55 i just wondered how small i could make an architechture while still having it relatively easy-to-use 20:34:07 plus, tininess isn't essential for esotericism 20:34:14 Sounds esoteric again, then. 20:34:24 not only did they close the wormhole that was keeping the Ori's ships out, but in destroying the Ori they removed most of the Ancients' motivation to help them! 20:34:30 (SG-1) 20:34:36 *Oris' 20:34:38 ihope_: Okay 20:34:43 * whatever 20:34:46 i might call it MiniMaL 20:34:50 I might call it Yael (no acronym) 20:34:56 Though are you sure MiniMAX or BCT doesn't sort of win? 20:35:04 MiniMAX means what? 20:35:05 BCT means what? 20:35:32 Bitwise Cyclic Tag. 20:35:35 ah, esoteric things 20:35:37 SimonRC stargate is good 20:35:43 bitwise cyclic tag -- easy to use? are you KIDDING? 20:35:45 Mini Mov-Add-Xchg. 20:35:57 I dunno. You might need to spend some time learning it, but after that... 20:36:01 yeah exactly 20:36:02 so, by winning the fight they lost their allies? 20:36:14 whereas here if you know something about low-level programming you can pick it up immediatly 20:37:39 Mm... 20:37:50 MiniMAX is hardly easy to use 20:38:05 don't forget the various SJM architectures 20:38:32 one uses CPP and a library of macros to make it quite usable 20:38:59 plus, SJMs always have the right O() 20:39:10 name time: MiniMaL or Yael? 20:39:17 I like Yael. 20:39:27 It's... likable. 20:39:35 :P 20:39:36 ok then 20:39:37 Yael it is 20:39:39 * ehird` puts it on the wiki 20:39:50 (SJM = subtract and jump if negative) 20:40:04 Yet Another Esoteric Language? 20:40:05 Like a circle of grass ten feet across with forest all around. 20:40:12 SimonRC: originally, I think. 20:40:40 I suggested YAEL, standing for that; he pondered Yael, supposedly not standing for anything at all. 20:40:40 SimonRC: "the right O()"? 20:40:56 I was going to suggest "subtract and branch unless positive". 20:41:25 An O(n) aalgorithm on normal architectures is O(n) in an SJM architecture, unlike (e.g.) Brainfuck 20:41:32 Is subtract-and-branch-unless-positive nicely isomorphic to subtract-and-jump-if-negative? 20:41:47 it can be Yet Another Esoteric Language if you think it should stand for that 20:41:51 but Yael is its official name :) 20:42:30 where is the spec? 20:44:02 it's on pastie, but i'm adding a bit to it and putting it on the wiki now 20:44:10 http://pastie.caboo.se/86663 20:46:39 ok: http://esolangs.org/wiki/Yael 20:46:41 spec version 1 20:47:17 an infinite loop is remarkably short :) "1100000000000" 20:47:26 it would be shorter if i still had an unconditional jump 20:47:26 +[] 20:47:36 ihope_: and that in binary? :) 20:47:36 ```sii``sii 20:47:51 if i had an unconditional jump it would be "000" 20:47:55 Both of them could be expressed as 0, but that would be a weird coding. 20:47:57 assuming jump is 1111, "1111000" 20:48:27 and "1111000" in a file is pretty much the shortest you're gonna get unless you have a language called Infinity Loop :P 20:48:30 *Infinite 20:49:37 * ehird` is writing hello world in it 20:53:59 spec updated with infinite loop and change to get-memory command 20:55:53 wow, without mnemonics this hurts my brain :) 20:57:03 Spec updated? 20:57:11 an interesting challenge would be to make the program speak "Hello world" through the speaker :P 20:57:14 the basic principle is "x = 0; while (x < 14) out(0, end_of_code + x); halt();Hello, world!" 20:57:19 ihope_: the wiki page 20:57:28 but in practice its a lot harder. 20:57:41 256 bytes of data + code makes that really really hard unfortunately 20:57:46 Oh. 20:58:08 no 20:58:11 not 256 bytes of data + code 20:58:21 256 bytes is the POINTER size 20:58:30 read the spec 20:58:48 oh, so the code size is unlimited, but only the first 256 bytes are read/writable? 20:58:51 with that definition, code+data max size is 65536 20:58:55 no... 20:58:58 think about it 20:59:03 oh, wait, yeah 20:59:06 256 bytes of code 20:59:12 but that >should< be enough to code hello world 20:59:16 if it isn't i'll update the spec 20:59:23 the instructions are small enough 20:59:34 (ihope_) I dunno. You might need to spend some time learning it, but after that... <<< i rather doubt a human could learn to write *anything* in bct 20:59:44 I'm talking text-to-speech (or a simple vocal model) hello world 20:59:59 oh 21:00:00 yes 21:00:08 computer speaker is hard to make speak in the first place, haha :p 21:01:29 but the spec doesn't say that the instruction pointer is limited to 0..255, so I guess you can get quite far with frivolous code generation ;-) i.e. generate an N-megbyte program that explicitly loads immmediate data into registers and never jumps 21:01:37 oklokok: {{x1|b=b|i=i}} 21:01:45 Something in BCT. 21:03:01 hmm... bct consists entirely of 1's and 0's, so i have a feeling that's some sort of abstraction i don't get? 21:03:16 oklokok: Wiki Cyclic Tag syntax. 21:03:42 well it wasn't exactly "something in bct" then 21:03:49 but i don't know wiki cyclic tag 21:03:55 i know it exists though 21:04:09 In BCT, program 11 starting with string 11 21:04:16 (Actually, program 1111.) 21:05:14 http://pastie.caboo.se/86687 this is the theory of the hello world program 21:05:21 i just have to work out the value of halt/mainloop_start :) 21:05:24 which can be done in a few seconds 21:07:09 Hmm. 21:09:06 i somehow have a feeling http://esolangs.org/wiki/Wiki_Cyclic_Tag somehow assumes i know what mediawiki software is 21:09:57 MediaWiki is the software behind Esolang, Wikipedia, and Wikia, among other things. 21:10:10 I FINISHED HELLO WORLD 21:10:13 WOOOOOOOOOOOOO 21:10:31 first of all i have no idea how there could be multiple lines 21:10:35 and wtf is an interpreter there 21:10:49 ihope_: i know that, of course 21:11:10 A program seems to go on only one line. 21:11:11 i mean i know it's the base of those 21:11:52 And the interpreter thing at the beginning is sort of like a shebang line. 21:11:55 okay... then i understand, assuming all d, a and b are used simultaneously for each of the data bits in one cycle 21:12:04 meaning what exactly? 21:12:12 d is 0, a is 10, b is 11. 21:12:17 o is 0, i is 1. 21:12:26 Oh, shebang line? 21:12:59 a shebang tells how to interpret what follows 21:13:00 Like how Python files occasionally begin with #!/usr/bin/env python, to denote that /usr/bin/env python is the interpreter. 21:13:00 right? 21:13:05 Yeah, pretty much. 21:13:05 yeah 21:13:13 so what exactly does it do there? 21:13:51 [edit] Semantics 21:13:51 The d, a, and b commands have been described above. The commands repeat in the order they are given forever. There is one special restriction: there must be at least 2 commands (a 1-command program may be simulated by giving the command twice), and the program must maintain at least 2 bits of data in the data queue at all times, or undefined behaviour will result. 21:13:56 i completely skipped that. 21:13:57 http://esolangs.org/wiki/Yael 21:14:01 see Hello world under programs 21:14:06 Well, if you put, say, x1 there, it denotes that Template:x1 is the interpreter. 21:14:09 the "without comments" one is, of course, the most interesting :D 21:14:11 how in the name of fuck can i always skip the important part. 21:14:23 it looks like line noise doesn't it :) 21:14:29 but i think it's nicely compact, for a machine language hello world 21:14:35 VERY compact, indeed 21:14:57 ihope_: i have no idea what that means 21:15:10 like... it checks the hd for an interpreter with that name? 21:15:24 and... then uses that? 21:15:33 It's template transclusion. 21:16:19 {{foo|blah|bleh|blih}} gets replaced with Template:foo with parameters blah, bleh and blih. 21:16:34 hey, anyone know an editor that will accept a binary 0/1 string and write it as binary to a file? 21:16:40 or will i have to write it myself :p 21:16:52 Any hex editor? :-P 21:17:21 some don't seem to do it properly :p 21:17:29 Oh? 21:17:29 ihope_: in bct i do not know what parameters are, exactly. 21:17:38 so... i have no idea how foo can have params 21:17:57 oklokok: the parameters the "interpreter" takes are the program and the data string. 21:18:13 xvi32 only does hexadecimal literals 21:18:15 no binary entry 21:18:32 ihope_: i still do not know what it means there 21:18:33 I guess writing one yourself... might not be hard. 21:18:38 you just put a random string there? 21:18:41 yes but i am lazy 21:18:56 oklokok: {{name of the template|program|data string}} 21:19:27 ihope_: template? 21:19:49 MediaWiki, when given that, passes program and data string to Template:name of the template and displays the result. 21:20:00 what 21:20:18 I probably should have used more hyphens or something :-P 21:20:18 i see no connection between that and the language described 21:20:35 The language at the "Wiki Cyclic Tag" wiki page? 21:21:45 The example given: {{x1|d=a=b|i=o=i=i}} 21:21:56 ah 21:22:00 now i see how that works 21:22:22 ok well 21:22:35 someone http://esolangs.org/wiki/Yael#Hello_world 21:22:40 put that binary code into a file 21:22:51 then put Hello, world! in ascii form - those exact characters - after it 21:22:51 the interpreter can be any interpreter that is of mediawiki syntax... and there is a mediawiki syntax program that works as an interpreter for wiki cyclic tag there 21:22:54 and upload it somewhere =P 21:23:00 and the interpreter name has to be the name of that 21:23:02 right? 21:23:22 oklokok: yeah, pretty much, I think. 21:23:38 okay, in theory, that might be nice to tell in the wiki. 21:23:50 ehird`: I'll see what I can do. 21:23:51 well.. i guess you can assume ppl know what mediawiki is 21:23:55 ihope_: thanks :P 21:24:13 oklokok: ...well, I don't really see what you just said. 21:25:36 i'm just saying the page assumes people understand what mediawiki does 21:25:42 Oh, indeed, it doesn't quite say that that example interpreter should be placed in a wiki page of the appropriate name. 21:25:45 i assumed mediawiki *is* the interpreter. 21:25:52 naturally 21:26:15 wiki page? 21:26:30 i don't still know the connection between actual wiki pages and that :P 21:26:56 why does everything assume the reader isn't an idiot. 21:26:57 The code in "MediaWiki Interpreter" is to be placed into a wiki page of the appropriate name. 21:27:23 has someone actually used that? 21:27:32 I think I have once. 21:28:05 Hmm, there happens to be some in the sandbox: http://esolangs.org/wiki/Esolang:Sandbox 21:28:09 got it: 21:28:14 "\000\034\004\000\020\0000\020\223!V\207\030\333\233\027\204L\002Hello, world!" 21:28:26 Aww. 21:28:51 does the mediawiki installation allow arbitary uploads? 21:28:55 like, can i upload a .bin 21:29:02 I think so. 21:29:05 or a .yae 21:29:07 or a .yal 21:29:08 or a .yel 21:29:11 Er, installation, did you say? 21:29:18 ? 21:29:26 Oh, try it: http://esolangs.org/wiki/Special:Upload 21:29:45 ihope_: what do i do with those if i wanna run them? 21:30:18 oklokok: just stick one in a wiki page. 21:30:28 It'll display as the "next step". 21:31:17 i never actually tried "sticking stuff" on a wiki page... but i see how that'd work 21:31:34 so... you can't actually make the server run a program? 21:32:01 Not the whole way through. Only one step at a time. 21:32:16 okay, wow, this hello world is the smallest ever 21:32:27 Hello, world! 21:32:31 Written in CAT. 21:32:33 heh 21:32:36 or... slashes! 21:32:38 i mean, metaphorically 21:32:44 also, "h" in hq9 21:32:50 it looks so tiny, in text editors 21:32:51 and everything 21:32:52 so compact. 21:32:57 And by CAT, I mean something else. 21:33:02 oklokok: that's /// :-) 21:33:19 ihope_: i'm not the only one who uses the remanized version of the name :P 21:33:23 but yeah 21:33:25 you're right 21:33:35 ok, yael file extension = ? 21:33:57 ehird`: implementation defined io stuff? 21:34:00 3 letters! :) 21:34:01 oklokok: no 21:34:02 i mean 21:34:06 file extension, as in 21:34:08 "binary.yael" 21:34:10 except, 3 letters 21:34:15 ah okay 21:34:25 ymc? 21:34:27 yael machine code 21:34:35 .yæl 21:34:37 :-P 21:34:40 heh 21:34:45 a.ymc 21:34:45 that's nicer than leaving out one of the letters 21:34:50 it's fun to stay at the a dot ymc 21:34:54 ihope's was the best idea though 21:35:02 [edit] Semantics 21:35:02 The d, a, and b commands have been described above. The commands repeat in the order they are given forever. There is one special restriction: there must be at least 2 commands (a 1-command program may be simulated by giving the command twice), and the program must maintain at least 2 bits of data in the data queue at all times, or undefined behaviour will result. 21:35:05 ... 21:35:11 that was not my intention 21:35:29 ok, ymc 21:37:16 ".ymc" is not a recommended image file format. 21:37:17 Retrieved from "http://esolangs.org/wiki/Special:Upload" 21:37:19 GRRR 21:37:35 nonlogic dump it goes 21:38:50 http://esolangs.org/wiki/Yael Now with hello world binary! 21:39:49 absolutely tiny. seriously. 21:40:21 somebody should write 99 bottles :p 21:40:25 my hello world already has a loop 21:40:31 and shows how to print strings 21:40:34 so it shouldn't be too hard 21:40:36 just tedious 21:41:22 * ehird` just realised that Yael has 8 registers, not 4 21:41:23 that's cool 21:41:26 * ehird` updated spec 21:41:58 it would probably be smaller if you null ended the string and just looped till null instead of having a counter 21:42:15 yeah i should probably do that... 21:42:44 alternatively someone else should modify my version to do that because i can't bear to write any more right now because that hello world made me tear out my hair : 21:42:45 *:p 21:43:08 UH OH PROBLEM. 21:43:16 my hello world won't work 21:43:20 it jumps to a bit, not a byte 21:43:32 so all jumps really need some padding to one byte :S 21:43:34 ugly, i guess 21:43:43 but, otherwise you'd run out of addresses to jump to fast 21:44:37 left a note on the hello world section 21:46:06 i dont understand what you mean, could you explain please? 21:46:20 # Set halt = halting instruction 21:46:20 0000 100 10011001 21:46:20 # Set mainloop_start = start of main loop 21:46:20 0000 101 01011010 21:46:33 those addresses are relative to the start of the program in >bits< 21:46:38 whereas, jumping uses bytes 21:46:46 so, i need to pad out the bits right before where i want to jump so they start on a byte 21:46:54 and update those addresses to reference the byte positions instead 21:47:14 ah i see 21:47:28 ah maybe i could make jump relative, but still in bits 21:47:42 and have bjmp/fjmp - backwards and forward jump 21:48:10 i can't think of what i would replace though 21:50:31 also, you used a list on the wiki which says "1. stdout and stdin", but in the hello world you set port to 00000000, not 00000001 21:50:46 im assuming the code is correct not the list? 21:52:51 and some commands dont use a multiple of 8 bits? 21:55:02 nvm i see 21:56:45 code, yes 21:56:51 and commands are variable sized 21:57:50 fixed the list in question 21:57:58 ok how about a challenge 21:58:10 first person to write some code to play a tune in yael wins a prize 21:58:20 but not just hardcoding loads of values into memory 21:58:21 do some tricks 21:58:22 or something 21:58:24 yeah. 21:58:38 like, if you're going for a slide from one note to another, do it algorithmically 21:58:49 don't just store all the notes in memory. 22:06:38 :D 22:06:45 i take it nobody thinks thats a good idea 22:06:45 :p 22:08:26 :-S 22:09:35 it might be pretty 22:09:38 hard mightn't it 22:11:13 Hmm... 22:11:34 Lemme look at the spec. 22:12:12 note that the jumping and memory access and everything is based on BYTES, not bits 22:12:17 so you might have to pad some stuff out with 0s 22:12:32 What's the length given in units of? 22:12:42 And how do you control the starting time? 22:15:10 ? 22:15:16 oh 22:15:19 welllllll 22:15:24 i guess ... i dunno 22:15:31 win32's Beep function? :P 22:15:41 yeah, that sounds like a good benchmkar 22:15:43 *benchmark 22:15:46 win32's Beep function. 22:24:42 -!- olsner has quit (Read error: 104 (Connection reset by peer)). 22:25:19 -!- olsner has joined. 22:28:00 if you can make a little algorithmic tune i'll be impressed :) 22:28:08 i'll make a little asm spec for it, later 22:28:10 to make it easier 22:28:34 algorithmic tune? 22:28:42 like, a regular computer speaker tune 22:28:45 but, if, you say 22:28:52 slided up from note A to B three times 22:29:01 then you'd code the sliding up and the three times algorithmically 22:29:09 instead of just hardcoding the sliding notes 3 times 22:29:36 Have some number of voices, each playing at a certain rate. 22:29:51 you can't do that, internal speakers are monophonic 22:30:02 Blah. 22:30:03 but, yes, that kind of thing 22:30:05 well 22:30:09 you can do polyphony with it 22:30:17 play extremely short sounds from each one after another 22:30:20 (use 1 as the length) 22:30:21 Monophonic? 22:30:26 yes 22:30:44 but if you get the length of the sound that you play before switching to the next one right 22:30:48 then you can create the illusion of polyphony 22:30:50 Just what's that mean? 22:31:00 monophonic? 22:31:04 Yes. 22:31:05 you can only produce one sound at a time 22:31:10 you can't play "dah" and "duh" at the same time 22:31:14 Okay. 22:31:16 but you can play "dah" and then "duh" 22:31:21 Have some number of voices, each playing at a certain rate. 22:31:29 so if you want more than one voice, you have to quickly play short sounds from each in succession 22:31:37 When a voice is told to play, it looks at the last note played by each other voice, and then plays the lowest note that isn't one of those. 22:31:57 is this a roundabout way of sliding up? 22:32:10 i was thinking more of going in a loop and incrementing a variable then playing that variable as the tone :) 22:32:10 I don't think so. 22:32:19 More of an entire music generation thing. 22:32:28 oh 22:32:32 well if you can code that in Yael 22:32:34 i'm impressed. 22:32:36 Mm, doing that would produce a simple tune :-) 22:32:44 ok :) 22:32:47 write it now :p 22:32:53 Yours, I mean. 22:32:58 ah 22:32:59 yes 22:33:00 :P 22:33:05 i was meaning as a >segment< 22:33:06 of a song. 22:33:11 Ah. 22:33:15 like, if at one point you want to slide up and down three times 22:33:17 don't hardcode it all 22:33:21 do it algorithmically 22:33:50 ah! i know the perfect song to do 22:33:59 slide from lowest note to highest note, and from highest note to lowest note 22:34:01 at the same time 22:34:04 emulating polyphony 22:34:14 repeat 3 or so times. 22:34:23 if someone does that, i'll give them a medal :p 22:34:29 shouldn't be too hard 22:35:02 in fact 22:35:05 nevermind repeating 3 times 22:35:06 loop forever 22:35:14 then you'll have an oscillating music program :) 22:35:48 that's like insanely easy 22:35:54 so do it :) 22:36:10 hmm... i'll make an interpreter for that first unless you do that 22:36:16 i'll write an interpreter 22:36:19 but anyway -- 22:36:32 remember you don't just want 22:36:36 (HI length 1) (LO length 1) 22:36:39 since length 1 is far too short 22:36:47 you want (HI length 1) (LO length 1) (HI length 1) (LO length 1) 22:36:48 or similar 22:36:53 to keep polyphony but have longer notes 22:37:29 actually i can't be bothered to write an interpreter right now 22:37:30 you do it :p 22:37:33 i'll write a c one later 22:37:36 but i don't have a c compiler on this machine 22:40:11 actually 22:40:13 don't write any programs yet 22:40:17 i want to change the jumping mechanism 22:40:22 i need to lose one instruction 22:40:28 which should i use? 22:40:32 *lose 22:41:21 i'm not doing anything yet, really, but perhaps later 22:43:30 which instruction should i lose? 22:44:12 input and output can be hacked together 22:44:31 not nicely though 22:44:32 and xor and or can emulate each other 22:44:47 i don't think you can remove anything nicely 22:44:49 how does xor emulate or? 22:45:22 2 of them can emulate the third 22:45:59 how does xor emulate or? 22:46:11 i mean, if i have (A xor B) and not (A or B), what is (A or B)? 22:46:44 hmm 22:46:57 (A xor (B and true))? 22:49:20 um, no 22:49:48 xor cannot "fold" things together, I think 22:50:18 actually, viewed as a SAT problem, xor does not distinguish inputs and outputs! 22:55:10 (A xor (B and true)) is (A or B) 22:56:15 er, wait no 22:56:37 there is surely a way to emulate or with xor 22:56:44 I know 22:56:50 now proove it! 22:56:57 =p 22:57:20 you can invert three signals with 2 not gates though 22:57:31 I forget how, but the circuit is rather complicated 23:05:55 nobody has written a tune i see :p 23:06:02 what was that about "insanely simple" 23:06:05 hmm 23:06:13 * ehird` continues wondering what instruction to ditch 23:09:41 1011? 23:10:02 Maybe 1010 while you're at it. 23:10:12 division and multiplication are useful :( 23:10:24 Isn't... what you want to add useful? 23:10:31 otherwise you can't have a short factorial! everyone knows how important factorials to be :P 23:10:39 and yes... but only slightly... 23:10:43 i mean... you can still do everything now 23:10:47 but i'm making it more elegant 23:10:50 Division helps with factorials? 23:10:56 no, multiplication 23:11:06 Then get rid of only division? 23:11:10 jmp ABSOLUTE_BYTES -> bjmp RELATIVE_BITS and fjmp RELATIVE_BITS 23:11:15 and no i like division :( 23:28:25 Division is weird! 23:29:23 -!- olsner has quit (Read error: 104 (Connection reset by peer)). 23:32:57 -!- oerjan has joined. 23:34:13 :p 23:34:24 for some reason i think i want to try learning base 57 23:34:30 Base 57? 23:34:38 That's silly. Learn base 59 instead. 23:35:14 why. base 57 is cooler 23:35:19 No it isn't. 23:35:21 Base 59 is prime. 23:35:38 Or you could go base 67, which is also prime. 23:35:56 Or 61, or any of the many other prime numbers... 23:36:36 base 43 23:36:45 no - base 31 23:37:53 3.4c25oe856s6... 23:37:55 not pretty enough 23:38:40 36 is good 23:38:56 No, 36 is bad bad bad! 23:38:57 very composite, yet typable 23:39:06 It's composite composite composite! 23:39:13 i hate base 36 23:39:17 base 43 might be nice 23:39:17 Unless you want a composite number, of course. 23:39:19 digits -> 0123456789abcefghijklmnopqrstuvwxyz 23:39:27 or base 62: 23:39:33 I think base 31 is nice. 23:39:38 digits -> 0123456789abcefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 23:39:52 mixed-base, like HP money? 23:39:56 Base 61 lets you use every alphanumeric character except "D". 23:40:00 what does pi look like in base 43 23:40:01 ? 23:40:09 ehird`: ask dc 23:40:15 i don't have dc, this is the windows box 23:41:02 you ask dc for me :p 23:41:51 not installed 23:42:34 Hmm. 23:42:43 I'll run up and run it. 23:44:12 What's the syntax? 23:44:43 for calculating pi in base 43? 23:44:50 Yeah. 23:44:51 probably P<[";d']43 knowing dc 23:44:59 -!- ihope__ has joined. 23:45:28 ihope__: um, "run up" 23:45:29 -!- cherez has quit ("Leaving."). 23:45:47 you don't have ssh on that box 23:45:47 SimonRC: yes? 23:45:50 ? 23:45:55 I probably do. 23:46:01 But I don't know its IP address. 23:46:33 gawd all i want is pi_43 :p 23:48:14 =p 23:49:02 ihope: ah, you need DNS then... :-) 23:50:10 "The symbol & (called an ampersand) is sometimes placed in front of a number to show that it is a hexadecimal number." http://www.cleavebooks.co.uk/scol/calnumba.htm 23:50:28 that's very interesting and all, but- 23:50:34 :p 23:50:34 Cool, a convention I've never heard of rather than the one that seems ubiquitous. 23:50:49 Heck, you do it :-P 23:50:52 i can't 23:50:52 :( 23:51:06 P<[";d"]43 gives a large number of error messages. 23:51:16 it was a joke- 23:51:20 Oh. 23:53:07 just - someone put it in the topic - pi in base 43 - if they calculate it :p i'll see it tomorrow 23:53:13 Oi. 23:53:20 MemoServ? 23:53:24 k 23:53:42 -!- ehird` has quit (Read error: 104 (Connection reset by peer)).