< 1134086912 0 :Sgep!unknown@unknown.invalid PRIVMSG #esoteric :re ihope < 1134087179 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :? < 1134088509 0 :GregorR!n=chatzill@198.107.20.174 JOIN :#esoteric < 1134088622 0 :Arrogant!unknown@unknown.invalid QUIT :Read error: 113 (No route to host) < 1134090955 0 :puzzlet!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1134091131 0 :ihope!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1134095288 0 :ihope!n=ihope@c-67-172-99-160.hsd1.mi.comcast.net JOIN :#esoteric < 1134095714 0 :CXII!n=Sanity@dialup-217.89.221.203.acc50-kent-syd.comindico.com.au JOIN :#esoteric < 1134096434 0 :ihope!unknown@unknown.invalid QUIT :"Chatzilla 0.9.69 [Firefox 1.0.7/20050915]" < 1134097028 0 :CXI!unknown@unknown.invalid QUIT :Connection timed out < 1134097745 0 :Sgep!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is leaving in less than 2min < 1134097780 0 :Sgep!unknown@unknown.invalid PRIVMSG #esoteric :ACTION executed sudo shutdown -h 5 < 1134097838 0 :Sgep!unknown@unknown.invalid QUIT :Remote closed the connection < 1134098551 0 :pgimeno!unknown@unknown.invalid QUIT :brown.freenode.net irc.freenode.net < 1134098578 0 :pgimeno!n=pgimeno@124.Red-80-59-211.staticIP.rima-tde.net JOIN :#esoteric < 1134098614 0 :pgimeno!unknown@unknown.invalid QUIT :brown.freenode.net irc.freenode.net < 1134098640 0 :pgimeno!n=pgimeno@124.Red-80-59-211.staticIP.rima-tde.net JOIN :#esoteric < 1134101090 0 :CXI!n=Sanity@dialup-71.88.221.203.acc50-kent-syd.comindico.com.au JOIN :#esoteric < 1134102475 0 :CXII!unknown@unknown.invalid QUIT :Connection timed out < 1134105475 0 :puzzlet!n=puzzlet@61.247.129.20 JOIN :#esoteric < 1134108758 0 :sekhmet_!n=pez@ppp-70-226-134-230.dsl.mdsnwi.ameritech.net JOIN :#esoteric < 1134109539 0 :sekhmet!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1134110115 0 :sekhmet_!unknown@unknown.invalid NICK :sekhmet < 1134115199 0 :clog!unknown@unknown.invalid QUIT :ended < 1134115200 0 :clog!unknown@unknown.invalid JOIN :#esoteric < 1134120032 0 :kipple!n=kipple@168.80-202-98.nextgentel.com JOIN :#esoteric < 1134136775 0 :jix!i=jix@F368f.f.strato-dslnet.de JOIN :#esoteric < 1134144579 0 :puzzlet!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1134150767 0 :Keymaker!n=nobody@wire74.adsl.netsonic.fi JOIN :#esoteric < 1134150827 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :hello < 1134150858 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :hmmm, anyone familiar with reading binary files in c in windows/dos? < 1134150888 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :what about it? < 1134150894 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :could you help a bit? < 1134151013 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :? < 1134151056 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :help in what? ;) < 1134151102 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :reading the files :) could you write a simple program that'd open something file and read a byte from it to variable and then close the file? < 1134151160 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :and show how to read a word and a double word? < 1134151179 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :(2-bytes and 4-bytes) < 1134151382 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :come on, i can get never started unlike someone shows me this simple thing :) < 1134151389 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :*unless < 1134152065 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :perhaps i should use python instead.. but can it compile? < 1134152120 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :although i have no idea how to do these things in python either < 1134152212 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :mh, no, c'd suit better < 1134152467 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :Keymaker: a sec < 1134152482 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :ok:) < 1134152575 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :Keymaker: int byte; FILE *fp; fp = open("somefile", "rb"); assert(fp); byte = fgetch(fp); assert(byte != EOF); // reads one byte < 1134152607 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :Keymaker: what endianess do you want to use with the words? < 1134152628 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :hmm, not sure which one is it.. it's the one used in windows/dos < 1134153431 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :oh this is so frustrating.. hopefully the last time ever i use c < 1134153478 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :you better check the byteorder somewhere :) < 1134153580 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :int byte1, byte2, word; byte1 = fgetch(fp); byte2=fgetch(fp); word = byte1+(byte2<<8) // reads one little-endian word < 1134153599 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :Keymaker: just make that a function and it's less painless < 1134153606 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1134153630 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :and remember checks for EOF < 1134153645 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :how? < 1134153655 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :depends on how you want to fail of course < 1134153663 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1134153666 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :assert(byte1 != EOF) will kill the whole program < 1134153750 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :thanks. i don't understand this stuff, so, do i need to close the file somehow? < 1134153760 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :and what assert does? < 1134153762 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :fclose(fp) < 1134153768 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1134153782 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :Keymaker: it's just a debugging aid which i tend to overuse :) < 1134153790 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :ah. < 1134153813 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :and the last question, is there any way to read from exact hex address? < 1134153824 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :Keymaker: from the file? < 1134153826 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1134153831 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :just seek() < 1134153839 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :or fseek() actually < 1134153854 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :how do i do that? < 1134153854 0 :nooga!n=nooga@ip-50.net-41.rev.inter-c.pl JOIN :#esoteric < 1134153858 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :http://www.99-bottles-of-beer.net/language-sadol-941.html < 1134153860 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :LOOK! < 1134153867 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :someone codes in sadol ! < 1134153877 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :Keymaker: check the manual ;) < 1134153880 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :yeah, i've seen that :) nice < 1134153883 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :and i dont know him (probably) < 1134153885 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :lindi-: ok < 1134153892 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :thanks for all the fish, < 1134153894 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :Keymaker: and ask if it's unclear < 1134153899 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1134153918 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :bbl.. < 1134154097 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :yay < 1134154101 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :success!!! < 1134154120 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :someone has written a program in my language < 1134154125 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :yay yay yay! < 1134155575 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1134155580 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :that's funny < 1134155703 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1134155706 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :(back) < 1134156206 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1134156214 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is writing SADOL2 interpreter < 1134157429 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :lindi-: what should i do to get the file-to-be-opened given as argument for the program? like, prog1 file.txt < 1134157592 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :int main(int argc, char ** argv) { FILE * fp; if(argc != 2) die(); fp = fopen(argv[1], "rb"); ... < 1134157609 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :thanks < 1134157708 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :And fseek(fp, offset, SEEK_SET); makes future fread()s (or fgetch()s) start at 'offset' bytes from the start of the file. < 1134157738 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :cool! :) < 1134158049 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :wo < 1134158051 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :f... ten errors in few lines already.. < 1134158055 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :Keymaker learns C ? < 1134158078 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :well, my purpose isn't try to learn it, just code one program :) < 1134158102 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :in what did you code until now? < 1134158111 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :brainfuck :) < 1134158117 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :and will code in the future as well.. < 1134158129 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :i've used c sometimes, but never these file things < 1134158148 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :but well, the programs i've written in c this far have been minimal. < 1134158192 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :ah, solved the probelm < 1134158203 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :*bl < 1134158260 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: those things require more than stdio.h? < 1134158277 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :They shouldn't. < 1134158281 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1134158300 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :then i guess i'm having some problem in my c compiler.. or in dev-c++ < 1134158308 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :probably the latte < 1134158310 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :*r < 1134158398 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :it doesn't complain errors but it complains "undefined reference to `die'" and doesn't create anything < 1134158530 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :Keymaker: by "die()" fizzie meant that you need to handle the error somehow < 1134158560 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :it isn't c function? < 1134158565 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :i guess no < 1134158578 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :its in perl en php though < 1134158597 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :hmm, i thought i've seen it in c before < 1134158621 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :but nevertheless, now it complains about "undefined reference to `fgetch'" < 1134158622 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :Keymaker: you can create the function yourself < 1134158637 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :Keymaker: sorry, it's fgetc() < 1134158653 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Heh, thought it was fgetc() but since lindi used fgetch... :p < 1134158665 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :void die(char* s) {printf("error: %s",s); exit(1);} < 1134158666 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric ::> < 1134158672 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1134158678 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :thanks, now it works < 1134158679 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :getch must be some ncurses stuff < 1134158720 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :argh, the functions.. i wouldn't like to use own functions but i guess it's rather necessary < 1134158748 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :or well, not necessary, but might ease the work < 1134158768 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1134158823 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :what this "argc != 2" means? < 1134158829 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :file doesn't exist or what? < 1134158849 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Tests that there are two arguments provided to the program. < 1134158854 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :(The first one is always the program name.) < 1134158876 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1134158883 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :then, how do i check the file is there? < 1134158893 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :If it isn't, fopen() fails. < 1134158899 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :(And returns NULL.) < 1134158955 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1134158967 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :this language has no logic :) < 1134159034 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :hmh, i can't use it < 1134159054 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :there's "fp = fopen(argv[1], "rb");" < 1134159063 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :how do i check if fopen returns null? < 1134159070 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :and what is that 'fp' < 1134159114 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :Keymaker: if (fp == NULL) { fprintf(stderr, "Failed to open file\n"); exit(1); } < 1134159126 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :Keymaker: how many languages did you invent? < 1134159130 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :or assert(fp); ;) < 1134159148 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :*have you invented? < 1134159181 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :nooga: unnecessary and trigger (partly) < 1134159192 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :and some unreleased, unfinished < 1134159205 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :and you have problems with C < 1134159210 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1134159213 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :omigosh < 1134159219 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric ::p < 1134159225 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :brainfuck makes sense, this does not < 1134159233 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :what about SADOL < 1134159234 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :? < 1134159246 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :i'm coding my emulator in c < 1134159248 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :nice, warm, lovely, functional paradigm < 1134159253 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1134159256 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :but i'm a c beginner... < 1134159256 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1134159266 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :(bbl) < 1134159279 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :you, a beginner?! and managed to write a kipple interpreter? < 1134159294 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :ACTION dies < 1134159297 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :jix: check out http://regedit.risp.pl/nosense/ < 1134159367 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :i'm coding next idea of that guy (a friend of mine) - sqr16, 8 bit machine emulator with only 256 bytes of memory :D < 1134159371 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :nooga: i did something like this before.. but i didn't took it to that level... < 1134159385 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :only simple terminal IO < 1134159393 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :simple instruction set < 1134159398 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :but now i'm writing a z80 emulator < 1134159401 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :i plan to use xanalogtv as a display < 1134159405 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :for a coleco vision emulator < 1134159419 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :like in the "apple][" screensaver for linux < 1134159536 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :http://images.opentopia.com/enc/3/2116/Apple2_BSOD.jpg < 1134159565 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :http://images.opentopia.com/enc/3/2116/Apple2_Screensaver.jpg < 1134159595 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :oh http://hactar.net/kzed/images/ircpower.jpg < 1134159600 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :it looks like this < 1134159620 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :xanalogtv emulates old, damaged tv display :D < 1134159623 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :where do i get xanalogtv? < 1134159630 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :(i know the apple][ screen saver) < 1134159641 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :would be cool for coleco vision emulator too < 1134159677 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :check out the sources of xscreensaver < 1134159705 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I've started to write two z80 emulators already. :p < 1134159727 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :http://www.die.net/doc/linux/man/man1/xanalogtv.1.html < 1134159730 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :(Neither one got very far - although I think both times I had the z80 cpu part semi-done.) < 1134159779 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :hah < 1134159785 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :i just hate kdevelop < 1134159789 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :it's horrible < 1134159803 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :all that mess with automake and autoconf < 1134159808 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :werid errors < 1134159816 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :blah < 1134159818 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: i implemented LD PUSH POP and EX .... < 1134159834 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :i'm implementing the decoding atm (i use code generation because i want to finish it...) < 1134159883 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :i see that z80 is quite popular < 1134160049 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :it is < 1134160076 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :simple < 1134160078 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :huh < 1134160265 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :i thought about a script for generating some opcodes' code < 1134160286 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :because there are many of almost equal < 1134160433 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :i do that... < 1134160441 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :it's like a specialized macro system < 1134160445 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :yea < 1134160760 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I used to have a Z80 datasheet/manual here, too. Although as I didn't bother emulating the timing issues, any old opcode list would've been as good. < 1134160804 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :i use z80-documentated.pdf < 1134160809 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :it's very complete... < 1134160907 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :mh, this program doesn't work correctly < 1134160935 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :int main(int argc, char ** argv){ < 1134160935 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric : FILE * fp; < 1134160935 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric : if (argc != 2){ die("An argument is missing (input file)."); }; < 1134160935 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric : if (fp == NULL){ die("Failed to open file."); } < 1134160935 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric : fp = fopen(argv[1], "rb"); < 1134160953 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Should you perhaps fopen first and check fp == NULL after? < 1134160977 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :i don't know :) < 1134160984 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I think it might make sense. < 1134161002 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Now I'd need to design a MIPS R3000 CPU and a MMU for it, and optionally a FPU too. Optionally with VHDL descriptions so it can be simulated. A bit too low-level for my tastes. < 1134161005 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :lool < 1134161048 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :yeah, it makes sense, but the behaviours stays as strange as before < 1134161092 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :it doesn't print the stuff in die() and quits strangely < 1134161141 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :hahm < 1134161203 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :mmh, now it works. < 1134161279 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :i have two files decode.table... does the opcode => instruction mapping... and instructions.in.c that contains the code for the instructions... i use ruby code to parse both and combine them into compilable c code < 1134161296 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :a line in decode.table looks like: ON 0xDD 0b01110aaa b DO LD_de1(`Rix`, a:r, b) T 19 # LD (IX+d),r < 1134161330 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :lol :D < 1134161341 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :and LD_de1 is defined in instructions.in.c < 1134161387 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :backticks can contain any c code... it's inserted into the template at instructions.in.c < 1134161406 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :a:r says look up the c code for every possible a in the enum table r < 1134161453 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :someone; how do i read a double word? < 1134161471 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :(lindi-: the code for reading word works perfectly) < 1134161514 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Just extrapolate on it. byte1, byte2, byte3, byte4 - fgetc four times - dword = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4. < 1134161539 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :or use read.. (check byte order!) < 1134161541 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :fread < 1134161556 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: that would read big-endian dword though < 1134161571 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Well, big-endian is what makes sense. :p < 1134161584 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :but this is needed in windows < 1134161587 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :;) < 1134161601 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :if you use fread on big-endian it reads big-endian if runs on little it reads little endian < 1134161615 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :jix: yeah, and that's very bad < 1134161628 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :You could use "unsigned int foo; fread(&foo, 4, 1, fp);" if you didn't care about portability. < 1134161646 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :thanks < 1134161653 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :things like int being 16-bits and so on... < 1134161657 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :well, i don't care about portability since it's a level editor for old dos game < 1134161668 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :please care about portability :) < 1134161677 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :as it's so easy in this case < 1134161684 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :then, what do i use?! < 1134161693 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :fizzie's first code or second? < 1134161702 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :Keymaker: fizzies code but reverse the order of bytes < 1134161748 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :like "dword = (byte4 << 24) | (byte3 << 16) | (byte2 << 8) | byte1"? < 1134161755 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1134161758 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1134161762 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :then i'll use that < 1134161805 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :well, i can't make functions of those < 1134161879 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :Keymaker: why not? < 1134161909 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :i don't have the skills < 1134161914 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :;) < 1134161951 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :would the fgetc work if i call it from some function? < 1134161961 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Uh. int read_word(FILE * fp) { int byte1, byte2; byte1 = fgetc(fp); byte2 = fgetc(fp); return byte1 | (byte2 << 16); } < 1134161968 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :(Without error-checking.) < 1134161974 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :thanks < 1134161986 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Why wouldn't it work when called from a function? < 1134162014 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :i don't know < 1134162021 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :i don't understand how it works < 1134162036 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :when i call it, do i need to have something inside ( ) ? < 1134162047 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :the read_word < 1134162057 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :The file pointer. < 1134162064 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :how do i write it there? < 1134162077 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :How would you write it when calling fgetc? < 1134162088 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :i have no idea :p < 1134162099 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Well, "fp". If that's what you call it. < 1134162110 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1134162114 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :thanks < 1134162119 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :fp = fopen(..); foo = read_word(fp); ... < 1134162212 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :and error checking for every other line ;) < 1134162249 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :i think i'll leave the error checking out, it's too annoying < 1134162282 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :you'll hit nasty bugs if you do that < 1134162625 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :is int two bytes or does that need to be defined somehow to keep portability? < 1134162656 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :int is somewhere between 8 and 64 bytes.. (most of the time.. there may be exceptions...) < 1134162678 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :it could be something different than a multiple of 8 bits... < 1134162683 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1134162684 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :if a byte != 8bits... < 1134162685 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :at least here it's 4 bytes < 1134162697 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :#include < 1134162712 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :jix; what does it do? < 1134162724 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :you get things like int32_t for a 32bit signed int < 1134162725 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :and in real mode dos system it's 2 bytes < 1134162733 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :or uint16_t < 1134162745 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :you can typedef to u16 and s16 and u32.... < 1134162756 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :typedef uint8_t u8; < 1134162756 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :typedef int8_t s8; < 1134162760 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :well, i don't understand any of those lines, but ok < 1134162771 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :then u8 is a 8bit unsigned < 1134162783 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :replace 8bit with the bit count you want.. < 1134162871 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Or just use "uint16_t foo" for a 16-bit word, and "uint32_t bar" for a 32-bit dword - they're not _that_ long that you'd need to abbreviate them to u16 or u32. < 1134162912 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :ok, thanks < 1134162912 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :i don't use uint16_t because i always type things liek int_16t or uint16t or t_uint16... < 1134162978 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :And then again, that's not the most portable solution. It might not work on, say, a Cray, where 16-bit integers don't exist. A more portable choice would be to use int_least16_t and int_least32_t from stdint.h. < 1134163020 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :if you need exactly that amount of bits that won't work... making it even worse because it compiles without errors... < 1134163038 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I don't think he needs exactly that amount of bits. < 1134163049 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :no < 1134163054 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :(i do) < 1134163073 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :You just think you do. :p < 1134163109 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :no < 1134163111 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :One can always add "&0xffff"s there. < 1134163111 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :i don't dare even think what kind of problems there will be with file saving.. < 1134163131 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: but i don't want to do that < 1134163307 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Then you'll probably need to do something like #ifdef UINT8_MAX typedef uint8_t u8; #define SET8(a,b) ((a) = (b)) #define GET8(a) (a) #else typedef uint_fast8_t u8; #define SET8(a,b) ((a) = ((b)&0xff)) #define GET8(a) ((a)&0xff) #endif, if you want your thing to work on platforms where no 8-bit integers exist. < 1134171152 0 :clog!unknown@unknown.invalid JOIN :#esoteric < 1134171152 0 :clog!i=nef@bespin.org JOIN :#esoteric < 1134171526 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :can't there be global arrays?