65816: VDA/VPA Pins

I often use my blog as a reference of my previous work. Searching it today for VDA/VPA, I realized that I never wrote here about my findings regarding these 65816 pins. But I seem to recall having done so recently. Searching my social media more broadly I found that I had written a bit about them briefly in response to a question about my 65816 build over on reddit.

The question:

Don’t you have to use the VPA and VDA signals to gate the data lines even when in emulation mode, or is that unnecessary if you never plan to use it in native mode?

My response:

I’m definitely not an expert on VDA/VPA (see here for a good discussion). From the datasheet it appears that the invalid address problem exists in both emulation and native modes (see Table 5-7 footnote 4).

Purists will say that you should always qualify your chip selects with VDA and VPA but I think it’s overkill for simple designs (see VDA/VPA discussion towards the end of the page here for a similar assessment).

I haven’t had any problem ignoring them in my 65816 design. It really depends on if your design/code is susceptible to those instances where the problem exists (Table 5-7 helps here). Early on in my 65816 design I thought a memory corruption issue I was having could be due to this, but careful troubleshooting showed that nothing unusual was happening when both VDA and VPA were low. YMMV

I don’t like to get too preachy on social media, so I left out some commentary above. My takeaway from the links above is that you should consider using these pins if an I/O device in your build may inadvertently respond to a read on an invalid address. As I discussed in this post, after a fair amount of testing on my 65816 build, it appears my build isn’t very susceptible to this issue. I’ll update here with more as I move forward.