I'm using the W65C134 in my design for three reasons:
- As a microcontroller, it saves board space and cost by essentially combining (at minimum) the actual CPU core, a VIA and a UART and some glue logic into one package.
- The built-in monitor ROM solves the issue of how to initially program my boot ROMs, given that I can't get non-SMD ROMs that work at 3.3V at the moment in the UK (thanks a bunch, chip shortage!)
- As versus other common microcontrollers, it is very simple for me to enable the device to load and execute arbitrary programs without the user actually having to reflash the whole device - something I consider a 'no-no' for my use case as it would be too technical a process
The downside is that there are some, in my opinion, braindead decisions that make it much harder to work with and/or necessitate a certain design as versus the flexibility of discrete CPU and peripheral chips.
For example: Bypassing the monitor ROM
requires that you're either (1) willing and able to put your boot ROM at 0x0200 or 0x8000 (or can otherwise manuveure your ROM to those locations temporarily during boot), or (2) that you are willing and able to add complexity to your hardware design so that it can cope with the quirks of booting into Emulation mode (even if you subsequently switch out of emulation mode, you have to be able to deal with it initially as it changes the behaviour of key control signals).
Example 2: The built-in chip select decode circuitry is nice, but it is relatively inflexible in that using it forces you to make certain choices - e.g. CS7 covers the whole of the upper 32K of the address space: so if you want to have a smaller 8K ROM and fill the rest with RAM, you'd better be prepared to add extra decoding logic, which defeats the point of having the built-in chip selects. Plus you can't totally ignore the chip selects, because you need to know when the '134 is trying to access external memory or not and the only way to know that for certain is by looking at the chip selects (often you could figure this out from the address bus alone, but in emulation mode or certain CS configurations this is not true) .
Example 3: I appreciate its an old design but, as others have mentioned, the absence of SPI and I2C in hardware is unfortunate. Or even a simple hardware shift register like the one in the VIA would at least help in software implementation of SPI. The UART not having any FIFOs is also a pity.
The W65C256S is even scarier than the '134; it has many of the same problems and a whole bunch of extra stuff that makes it even more complicated to use, and like the '134 most of it is poorly documented.
For my use case, the MyMENSCHs are irrelevant. I can't use them in my product because they're not actual chips, they're FPGAs on a huge PCB. Now, if I could get the VHDL code and load it into my own FPGA then maybe that'd be better, as then I could tweak it to suit my needs and add extra peripherals as needed, but I doubt they'll give me the VHDL without a lot of money passing hands.
_________________
Want to design a PCB for your project? I strongly recommend
KiCad. Its free, its multiplatform, and its easy to learn!
Also, I maintain KiCad libraries of
Retro Computing and
Arduino components you might find useful.