< 1087705318 0 :heatsink!cirodrig@adsl-67-125-224-138.dsl.snfc21.pacbell.net JOIN :#esoteric < 1087708423 0 :heatsink!unknown@unknown.invalid QUIT :Read error: 60 (Operation timed out) < 1087709008 0 :heatsink!cirodrig@adsl-63-203-76-226.dsl.snfc21.pacbell.net JOIN :#esoteric < 1087711095 0 :heatsink!unknown@unknown.invalid QUIT :"Leaving" < 1087718399 0 :clog!unknown@unknown.invalid QUIT :ended < 1087718400 0 :clog!unknown@unknown.invalid JOIN :#esoteric < 1087752010 0 :kosmikus|away!unknown@unknown.invalid NICK :kosmikus < 1087752716 0 :calamari_!JeffryJohn@as07-pho-az-205-186-110-152.rasserver.net JOIN :#esoteric < 1087752722 0 :calamari_!unknown@unknown.invalid PRIVMSG #esoteric :hi < 1087752765 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :'vening. < 1087753036 0 :calamari_!unknown@unknown.invalid PRIVMSG #esoteric :morning :) < 1087753245 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I must do a physical relocation; away 30 minutes. < 1087753360 0 :calamari_!unknown@unknown.invalid PRIVMSG #esoteric :ran into a small hiccup with call(gosub) & return.. it needs a place to return to (the next instruction). I've thought of 3 schemes to handle it. 1) start temp labels at -1 (problem: big number when 32-bit) 2) labels 2x, temp labels 2x+1 (problem: on-gosub,goto get messed up), 3) have user specify and create return label (problem: annoying) < 1087753522 0 :calamari_!unknown@unknown.invalid PRIVMSG #esoteric :I'm leaning toward 3, because it is the easiest to implement, but it doesn't remove the main problem: there is no IP (instuction pointer) < 1087753992 0 :calamari_!unknown@unknown.invalid PRIVMSG #esoteric :hrm.. I think I'm going with 3.. seems like it gives the most power (don't have to return to where you came from) and least problems < 1087754428 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :returned. < 1087754471 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :still doing the assembly language? < 1087754655 0 :calamari_!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1087754686 0 :calamari_!unknown@unknown.invalid PRIVMSG #esoteric :I realized I don't really need a call/gosub if I'm going to do it this way.. return is nice tho < 1087754696 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :do call/cc. < 1087754699 0 :calamari_!unknown@unknown.invalid PRIVMSG #esoteric :(call = push, jmp) < 1087754767 0 :calamari_!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: call would have been jsr.. return is ret < 1087754779 0 :calamari_!unknown@unknown.invalid PRIVMSG #esoteric :unless I misunderstood what you were saying < 1087754841 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :no, I mean I want a "call/cc" instruction in your assembly language, the call-with-current-continuation from scheme. < 1087754863 0 :calamari_!unknown@unknown.invalid PRIVMSG #esoteric :I don't know what that is < 1087754880 0 :calamari_!unknown@unknown.invalid PRIVMSG #esoteric :(never used scheme) < 1087754890 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :it probably doesn't make much sense in a language without closures. < 1087754921 0 :calamari_!unknown@unknown.invalid PRIVMSG #esoteric :I have the major stuff done, just a few things remain now < 1087754927 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :it's a bit like setjmp/longjmp in C. < 1087754985 0 :calamari_!unknown@unknown.invalid PRIVMSG #esoteric :jmp's are all register based, so an ongoto is simple < 1087755029 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :then you "just" need a c compiler which creates code for your assembler. < 1087755037 0 :calamari_!unknown@unknown.invalid PRIVMSG #esoteric :right < 1087755087 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :does your assembly language look like a 'normal' computer? I mean registers, labels you can use as storage and such? < 1087755088 0 :calamari_!unknown@unknown.invalid PRIVMSG #esoteric :I haven't finished implementing the STK command (to set the stack size).. also need to understand/use a few of dbc's compare and divide/mod routines < 1087755099 0 :calamari_!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: yes & no.. < 1087755114 0 :calamari_!unknown@unknown.invalid PRIVMSG #esoteric :there are 4 registers < 1087755132 0 :calamari_!unknown@unknown.invalid PRIVMSG #esoteric :stack (accessible via push & pop only) < 1087755152 0 :calamari_!unknown@unknown.invalid PRIVMSG #esoteric :memory (random access) < 1087755187 0 :calamari_!unknown@unknown.invalid PRIVMSG #esoteric :labels are made with code < 1087755235 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :mhm-well, it doesn't sound too strange. < 1087755273 0 :calamari_!unknown@unknown.invalid PRIVMSG #esoteric :jmp's are made up an "endless" loop and of a bunch of tests, i.e.: this is line 4, you wanted 13, keep going, etc, until a match is found < 1087755296 0 :calamari_!unknown@unknown.invalid PRIVMSG #esoteric :(same way as bfbasic) < 1087755336 0 :calamari_!unknown@unknown.invalid PRIVMSG #esoteric :yeah, I tried to make it as nmormal as possible, except this gosub thing was being a pain < 1087755336 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :sounds that any non-trivial C programs will compile to rather big blobs of brainfuck. < 1087755343 0 :calamari_!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1087755362 0 :calamari_!unknown@unknown.invalid PRIVMSG #esoteric :the code will be huge < 1087755392 0 :calamari_!unknown@unknown.invalid PRIVMSG #esoteric :I need to write a new bf interpreter that can handle large code and data < 1087755399 0 :calamari_!unknown@unknown.invalid PRIVMSG #esoteric :(unless you know of one) < 1087755512 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :nnope. but you can write a brainf*ck->befunge translator, probably some funge98 interpreters handle pretty big source files since the spec defines an infinite playfield. < 1087755516 0 :calamari_!unknown@unknown.invalid PRIVMSG #esoteric :oh.. also need to put in some kind of automated text -> bf at the beginning, because I use a lot of strings for bfasm < 1087755527 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :plus that would get you a nice constant-ish "times n" increase to the "binary" size. < 1087755566 0 :calamari_!unknown@unknown.invalid PRIVMSG #esoteric :lol < 1087756109 0 :Toreun!~Toreun@ool-45738c44.dyn.optonline.net JOIN :#esoteric < 1087756570 0 :calamari_!unknown@unknown.invalid PRIVMSG #esoteric :bbl < 1087756572 0 :calamari_!unknown@unknown.invalid QUIT :"Leaving" < 1087772170 0 :kosmikus!unknown@unknown.invalid NICK :kosmikus|away