tschak909 #1 Posted February 26, 2007 I am curious to see if there is a list of the undocumented 6507 opcodes supported by DASM, and their function.. I see in a couple of homebrew listings, some interesting opcodes like DCP, and do not know what they do. am trying to learn them so that I can wrap my head around 2600 display kernels (Which I am getting for the most part.) -Thom Quote Share this post Link to post Share on other sites
vdub_bobby #2 Posted February 26, 2007 I am curious to see if there is a list of the undocumented 6507 opcodes supported by DASM, and their function.. I see in a couple of homebrew listings, some interesting opcodes like DCP, and do not know what they do. am trying to learn them so that I can wrap my head around 2600 display kernels (Which I am getting for the most part.) -Thom As far as I know every useful undocumented opcode is supported by DASM. And if they aren't, you can always just directly put the hex bytes in. Here's a list of undocumented opcodes: http://members.chello.nl/taf.offenga/illopc31.txt There are lots of other lists floating around the net. The most useful for a 2600 kernel will probably be 3-cycle NOP LAX DCP Tricksy folks have made use of others as well... Quote Share this post Link to post Share on other sites
supercat #3 Posted February 26, 2007 Here's a list of undocumented opcodes:http://members.chello.nl/taf.offenga/illopc31.txt Not a terribly good list, though. I like the list at http://www.oxyron.de/html/opcodes02.html better. Note that while the latter list shows an immediate-mode version of LAX which it describes as unstable, DASM doesn't support that one. Just as well, since the opcode is pretty much useless. The most useful opcodes are probably: nop zp nop #imm dcp [any mode but imm] isc [any mode but imm] lax [any mode but imm] sax [any mode but imm] sbx #imm (shown on this table as asx) Quote Share this post Link to post Share on other sites
Nukey Shay #4 Posted February 27, 2007 (edited) And ASR (tho docs usually refer to it as ALR). I use that one frequently. It eliminates an LSR when AND is going to be used (it does the AND first...so be sure to keep it set one bit higher than what you need). ex: ;old LSR AND #$03 ;new ASR #$06 ;...or 7, if you need the carry status. Keeping bit 0 clear in the argument ;would eliminate a following CLC if you've got one (for addition, etc). Edited February 27, 2007 by Nukey Shay Quote Share this post Link to post Share on other sites
Nukey Shay #5 Posted March 2, 2007 (edited) BTW here's a list I put together that lists the undocumented opcodes with the Dasm-compatable format (and also what you would see using Distella). One of the things that makes working between the 2 programs a pain is that Distella never uses arguments when listing these codes (so the argument will be interpreted as code). This sometimes works fine, if the opcode is being used to skip instructions (as in double or triple NOP's). I preferred to just hack Distella itself and removed the periods in the opcode names (renaming them in some cases)...to make Dasm-compatable lists automatically. I'll post it if anybody else wants a copy. DISCLAIMER: Use at your own risk. You will be damned by following my example. Nothing is sacred to hackers like me. No deposit, no return. Etc. Etc. Opcodes.zip Edited March 2, 2007 by Nukey Shay Quote Share this post Link to post Share on other sites