RichCini wrote:
This is my first exposure to the '816 and the WDC tools which I find kind of clunky. Yours is a pleasure to use. I have a handful of suggestions, if that's ok.
Hi Rich, suggestions are always welcome. While I have been adding 65816 features to the program, I'd like to just say that this is Michal Kowalski's program. He did a great job in putting the IDE together. I initially found some errors in the opcode timing and needed to do some very accurate cycle counting, so I decided to attempt the fixes needed. That has morphed into fixing other bugs and adding a few simple features. I have left the basic look and feel of the program as original as I could. Given that, here are my thought on your suggestions
Quote:
* CPU mode 8/16 management. I guess this could be handled by macros, but I liked the WDC LONGA/LONGI thing, EXCEPT that you also had to put the REP/SEP instructions too. If there was a way to use a single obvious directive for this, that would be great.
I will look at adding some assembler directives that can accomplish this. Until then, you can use macros to accomplish this task.
Quote:
* Line numbers. Other IDEs I've used allow for showing line numbers on the left side of the editor. I know the line number is in the status bar, but my eye doesn't naturally gravitate there when editing and scrolling.
I would have to totally rewrite the editor to allow for line numbers, which is beyond the scope of what I set out to do.
Quote:
* Assembly. In moving the code over, there was a lot of tinkering I needed to do finding syntactical errors ("$" versus "h" for example). When you hit Assemble, it stops at the first error, but then you have to hit Assemble again to get to the next one. I find it easier to edit a file if I can see all of the errors at once so I can roll through the whole file and make corrections.
The way the assembler is written, it would be a major rewrite to incorporate this feature. While it is not hard to add logging, the code is written so that when an error is encountered, subroutines are exited with the error code, which then filters up through all subroutine before the error is processed. The program will highlight syntax errors as you type lines, which is great for new work. What I find when porting existing code is if I encounter a particular error that involves changing symbols, I do an global replace to eliminate repeated errors. I know that is not always possible.
Quote:
* Love the context.sensitive help.
I do too! Thank Michal for that - he did a great job with the editor, other than not allowing the DOS box-drawing characters to be displayed. I'm still trying to figure that out (Windows C++ coding really sucks)
Quote:
* Indication that the file hasn't been saved. Some IDEs I've used gray-out the SAVE icon when the file is "clean" (no changes) and then enable it when it's "dirty" and often put some other indicator somewhere (like a "*" after the file name in the title bar).
I like this idea and will try to add it for my next release.
Quote:
* Listing files. One of the options dialog tabs has a checkbox to allow generating listing files during the assembly. Rather than having to type in the file name of the listing file, I might suggest just a check box and then assume the list file base name is the same as the source file.
Some like the option, other do not. I have just entered "listing.lst" and I do not edit it for each project, and it seems to work that way.
Quote:
* Object output. To save the compiled output requires a separate "save code" operation. Similar to the listing file, I kind of feel that this should be automatic. Putting an option in the Assembler settings tab for a default assembler output would save a step.
If this was just an assembler, I would agree. But it was written as integrated editor, assembler, simulator/debugger and does not need an object file to operate. Also, there are many options for generating object files, including setting the target memory range. I think it's best to leave this as it is.
Quote:
* 65816 debugger. This is probably on the TODO list. Maybe there's a way you can suggest for me to eliminate the 16-bit LDA/STA so I can use the 6502 mode and debugger for the note values. Code grabs a 16-bit value and sends MSB,LSB separately BUT the value is changed/incremented in the code as a 16-bit unit. That would involve an INC/CMP/INC/XOR maybe.
Yes, once I get the assembler working on the 16MB address space, my next goal is to tackle the disassembler and debugger. That will be a major undertaking to get right and it will require a lot of testing. If you want to use the 65C02 simulator, then it would be possible to rewire the 16-bit operations as 8-bit. Post some code snippets and I or others can help with the translation.
Quote:
Thanks again for such a great tool. It's some awesome work and a well-executed IDE.
It is and you are welcome for my parts. I have to give most of the credit to Michal.
Daryl