After some gentle prodding I've renewed development of my old "Ophis" assembler[1]. Part of this work is building up some basic "header files" for the platforms I want to support. This, of course, includes the NES.
I've got two main questions as I work up the NES supporting materials:
First, is UNIF dead? I don't see much reference to it and the sample board lists in the UNIF standard don't directly match the board names in the text file that lists board names. It'd be neat to have a PRG-ROM/CHR-ROM pair and show how that can be wrapped in UNIF and headed by iNES without changing the "real code", but it would be kind of dumb to have a demo that does that wrong.
Second, when I was picking through the Atari 2600 technical data, I noticed heavily standardized names for all the IO registers ($02 is never called $02, but always WSYNC, for instance). The NEStech document and its followups don't seem to have those, just long names, and the source code snippets I'm used to seeing seem to all just hardcode $2002 and $2006 and friends directly. Is this still the way things are done or is there a decent set of mnemonics?
(I tried to come up with some decent mnemonics on my own, but good luck naming $4017 in a way that clearly captures what it's for )
[1] It's not quite stable enough to start pushing on its own, and it's very volatile right now, and I've gotten the impression that pretty much everyone's using ca65 these days, but if you're the sort of person who likes kibitzing about assemblers I welcome input.
I've got two main questions as I work up the NES supporting materials:
First, is UNIF dead? I don't see much reference to it and the sample board lists in the UNIF standard don't directly match the board names in the text file that lists board names. It'd be neat to have a PRG-ROM/CHR-ROM pair and show how that can be wrapped in UNIF and headed by iNES without changing the "real code", but it would be kind of dumb to have a demo that does that wrong.
Second, when I was picking through the Atari 2600 technical data, I noticed heavily standardized names for all the IO registers ($02 is never called $02, but always WSYNC, for instance). The NEStech document and its followups don't seem to have those, just long names, and the source code snippets I'm used to seeing seem to all just hardcode $2002 and $2006 and friends directly. Is this still the way things are done or is there a decent set of mnemonics?
(I tried to come up with some decent mnemonics on my own, but good luck naming $4017 in a way that clearly captures what it's for )
[1] It's not quite stable enough to start pushing on its own, and it's very volatile right now, and I've gotten the impression that pretty much everyone's using ca65 these days, but if you're the sort of person who likes kibitzing about assemblers I welcome input.