Tom-Cat Posted June 16, 2016 Share Posted June 16, 2016 Hi all. I am the author of Regenerator - an interactive disasembler for 6502 binaries. Currently I am trying to add support for multiple systems. Which means you can select the system from the drop-down list and the configuration specific for this system would be loaded that includes the files that define which addresses to exclude from auto-labelling (excludes.txt) - normally you would exclude absolute addresses for I/O, etc. , then names of the labels to auto-label (kernel functions, variables, etc.) and comments.txt which auto-comments certain addresses (for jumps and references). I would like to add those three files for Atari 8-bit (and any other system with 6502/6510 processor), if maybe you can point me to direction where I could get the content for those files I can generate them myself. If anyone would like to beta test the multi-system support please drop me an email ( tomcat AT sgn.net ) and I can send you the beta. Otherwise you can download the latest release 1.6 here: http://csdb.dk/release/?id=148862 Best regards,Tom-Cat 5 Quote Link to comment Share on other sites More sharing options...
pirx Posted June 16, 2016 Share Posted June 16, 2016 (edited) Altirra is our god hardware.inc system.inc Edited June 16, 2016 by pirx 3 Quote Link to comment Share on other sites More sharing options...
pirx Posted June 16, 2016 Share Posted June 16, 2016 I mean phaeron is our God and altirra is his angel. cio.inc kerneldb.inc 3 Quote Link to comment Share on other sites More sharing options...
Tom-Cat Posted June 16, 2016 Author Share Posted June 16, 2016 Hmm, these are mostly variables and hw registers which is good for labels (and some comments), what about kernel functions ? Should I include all of these as labels (especially Zero Page stuff)? Also - can you specifiy which addresses should be excluded from auto-label creation. I think $d000 - $d40f at least should be excluded. Quote Link to comment Share on other sites More sharing options...
pirx Posted June 16, 2016 Share Posted June 16, 2016 I've never been using much of kernel functions besides XITVBV and such, I am sure you will get a nice list here. Not sure either about ZP stuff, but labels may be beneficial for disassembling, especially some utility software. Certainly a lot of programmes use RTCLOK from ZP, I guess the address to be excluded from auto-label should be $d000 -- $d7ff. The rest is basically free to use when you turn off OS. Quote Link to comment Share on other sites More sharing options...
Rybags Posted June 16, 2016 Share Posted June 16, 2016 Cheers - I saw this release probably on Lemon64 in recent times. Great that you've chosen to expand it's capability to cover other old 6502 systems. One special note about Atari stuff. The hardware registers have different functions for read and write so you might want to include the ability to generate labels in context with what's being done. This is applicable to GTIA, Pokey and Antic. With PIA ($D3xx) generally the reference is the same whether reading or writing. 3 Quote Link to comment Share on other sites More sharing options...
Tom-Cat Posted June 16, 2016 Author Share Posted June 16, 2016 Cheers - I saw this release probably on Lemon64 in recent times. Great that you've chosen to expand it's capability to cover other old 6502 systems. One special note about Atari stuff. The hardware registers have different functions for read and write so you might want to include the ability to generate labels in context with what's being done. This is applicable to GTIA, Pokey and Antic. With PIA ($D3xx) generally the reference is the same whether reading or writing. Unfortunetly that is not doable with Regenerator... each address can have only one unique label, that's how it is coded. Currently I took the first label in the files I found, if needed they can be combined though, but not sure about that. Still searching for kernel function addresses though. For c64 this stuff is everywhere... for Atari 8bit it is very hard to find Also a file with one liners describing all those GTIA, Pokey and Antic addresses (for comments) would be nice. Quote Link to comment Share on other sites More sharing options...
Rybags Posted June 16, 2016 Share Posted June 16, 2016 (edited) OS function addresses are fairly simple. There is a jump table at $E450 - $E48F and they are the only "legal" calls that programs should make to the OS by direct JSR instruction. There are handler tables at 16 byte boundaries $E400 - $E440. Generally, well written programs will make no other program calls to the OS. Much of the OS functionality is via CIO which is called by JSR $E456. Compute! magazine published "Mapping the Atari", it can be found online http://www.atariarchives.org/mapping/ The memory map chapter http://www.atariarchives.org/mapping/memorymap.php Actually, best to refer to the XL revised chapter http://www.atariarchives.org/mapping/appendix12.php There is PDF version of this book though I can't find it online. Note the memory map has some direct call addresses but they're best ignored as they aren't valid for all revisions of the OS. Also note the Floating Point package residing at $D800 - $DFFF (2K) has various entry points for FP operations like add/subtract/multiply/convert FP to binary etc. These entry points aren't by jump table but spread around at various locations in the 2K area. There was only one official release of this part of the Rom but were 3rd party replacements available but all the call locations are the same. There's also Basic @ $A000 - $BFFF but Basic on Atari is regarded as an option and it's pretty rare for machine code games to even require that Rom present, let alone call routines within it. Re the hardware registers - if only one label is possible then it's probably best to use the ones that relate to write operations, though note that some register locations only have one or the other function. Edited June 16, 2016 by Rybags Quote Link to comment Share on other sites More sharing options...
Rybags Posted June 16, 2016 Share Posted June 16, 2016 (edited) Here's a list of OS entry points. First up the ones for the FP Rom present @ $D800 - $DFFF D800 AFP D8E6 FASC D9AA IFP D9D2 FPI DA44 ZFR0 DA46 ZF1 DA60 FSUB DA66 FADD DADB FMUL DB28 FDIV DD40 PLYEVL DD89 FLD0R DD8D FLD0P DD98 FLD1R DD9C FLD1P DDA7 FST0R DDAB FST0P DDB6 FMOVE DDC0 EXP DDCC EXP10 DECD LOG DED1 LOG10 Next up, the OS jump vector table which lives @ $E450 - $E48F DISKIV E450 DISKINV E453 CIOV E456 SIOV E459 SETBV E45C SYSBV E45F XITBV E462 SIOINV E465 SENDEV E468 INTINV E46B CIOINV E46E SELFSV E471 WARMSV E474 COLDSV E477 RBLOKV E47A CSOPIV E47D PUPDIV E480 SLFTSV E483 PENTV E486 PHUNLV E489 PHINIV E48C Inconsistent ordering of locations/labels as I just did copy and edit operations from the relevant manuals. Edited June 16, 2016 by Rybags Quote Link to comment Share on other sites More sharing options...
Tom-Cat Posted June 16, 2016 Author Share Posted June 16, 2016 Thank you... I will add these to the lists... Quote Link to comment Share on other sites More sharing options...
+JAC! Posted June 16, 2016 Share Posted June 16, 2016 "Hmm, these are mostly variables and hw registers which is good for labels (and some comments), what about kernel functions ? Should I include all of these as labels (especially Zero Page stuff)?" Yes you should When coding on the Atari you don't make much OS calls besides OI, because the IO system is very powerful. Yet you rely on the ZP and page 2/3 vectors and use them fin your own code. Quote Link to comment Share on other sites More sharing options...
Tom-Cat Posted July 13, 2016 Author Share Posted July 13, 2016 Hi all. Regenerator 1.7 is now released with Multi Systems support. One of the built-in systems is Atari 8-bit. You can of course make your own configurations, etc. Hope Atari community finds it usefull. Link: http://csdb.dk/release/?id=149429 Best regards! 7 Quote Link to comment Share on other sites More sharing options...
+JAC! Posted July 17, 2016 Share Posted July 17, 2016 Thanks Tom-Cat.Tried it today, so here some feedback: - I like the explicit comment feature. Added it to the list of cool things for DIS6502.- The Open File selector only offers the C64/standard file extensions and not "*.* All", so standard Atari executables (".COM", ".EXE", ".XEX") cannot be selected. In my tools I use platform specific set of file extension filers. Al least having "*.*" as option would be good- Would be cool, if the Atari Executable format (pendant to PRG on C64) would be recognized. It basically is a squence $FFFF, start, end, [$FFFF], start, end..... See https://youtu.be/sh26knEi0VM?t=282- I tried to set the header as bytes/words manuallly but somehow: - SET (Data) does not do anything if I mark several lines/bytes - works for single byes - SET (Word) does not seem to work at all Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.