| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Refactor 28-series EEPROM code
Refactor 28-series EEPROM code:
- Separate out a generic `eeprom28_device` template
- Create Xicor x28 instantiations with appropriate template parameters.
Add functionality to the `eeprom28_device` template to implement Atmel-style
- Identification Page
- Hardware Chip Erase
- Software Chip Erase
Add a templated `eeprom28_nvram_device` subclass that adds an `device_nvram_interface` implementation.
Add `at28.{h,cpp}` specializations implementing known Atmel AT28 devices.
Both X28 and AT28 devices are made available both with and without nvram support.
This also replaces the existing `at28c64b` implementation. This has two current users in the codebase, both of which are Apple II cards. I have very little experience with that, sadly. But with many thanks to @rb6502 I was able to test this in the `booti` device, which helped me identify and fix something I had missed in the ee28 implementation: while the EEPROM is buffering data, reads from the page being buffered will be sourced from the buffer, so will include whatever is currently being buffered. I've gathered more detailed results of testing and am happy to share those on request.
I'm using C++20 concepts to elide some member functions from the templates; and macros to simplify declaring device classes and types both with and without NVRAM.
All of this works, and adds what I think is quite complete support for a number of similar real-world devices in a way that I hope is reasonable documented and maintainable. I've tried to keep this in line with MAME's guidelines and coding standards and what I've observed as existing practices, but I'm sure there are things I've missed or got wrong. So any feedback or guidance would be greatly appreciated.
* ee28.* -> eeprom28.*
improve logging macros
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* x28: make timings configurable.
Also:
- remove the fake device.
- allow clients access to the writable / write protected state.
- save state.
- move short function bodies from x28.ipp to x28.h.
Having these short member function definitions inline
removes a lot of template-parameter noise, leaving
only the long `read()` and `write()` member function
definitions out-of-line in `x28.ipp`.
vfxcart:
- use the real X28C256 device.
- add a configuration setting to vfxcart to allow adjusting the
timings of the X28C256 device.
- configure EEPROM to be write protected.
* x28.{h,ipp}: All the datasheets seem to refer to the write protection as "software data protection"
Update the terminology here to align with that:
`m_write_enabled` -> `!m_software_data_protection_enabled`.
Update the sole client (vfxcart.cpp) as well.
|
|
|
-vfx: [CBrunschen]
* Added a timer to complete the write cycle.
* X27C256 -> X28C256
* Added a generic implementation for Xicor X28 series EEPROMs, and use it in vfxcart.
* Added license and copyright holder comments.
* Improved some indentation, braces, and comments.
* Improved comments documenting the different devices.
|