This change sees the introduction of a tiny FIFO buffer implementation
in util.rs, in lieu of a dependency on the ringbuffer library. The
reason for this change is largely because the ringbuffer library was
unnecessarily complicated and generic, and could only work with sizes
that were a power of 2.
The DMD library now keeps track of when writes to video RAM occur, and
sets a dirty bit. This dirty bit is reset when the video RAM is
requested by the library user, and can be used to avoid repainting when
video ram has not changed.
TX Enable should only set the TxRDY bit if there is no character
currently in the TX holding register. Likewise, the TxEMT bit should
only be set if there is no character in the shift register.
This change adds version 8;7;3 along side version 8;7;5 firmware, so
that the simulated DMD 5620 can run either Version 1.1 or Version 2 DMD
software. keeping 8;7;5 firmware.
- Fixed incorrect addresses in instruction Display impl
- Tracing now includes raw byte stream of each instruction
- Bus alignment errors now include offending address
- Effective address is now stored off onto operands
- MOVTRW support (non-MMU) added
It appears that the Clippy cleanup change introduced a fairly nasty
bug, which I currently don't understand. I'm going to revert this
change and handle Clippy suggestions on a case-by-case basis.
This reverts commit 848d9c18c5.
NOTE: This is a breaking change.
Previously, callers of rx_char and rx_keyboard would have to check
output to see if the UART was actually ready to receive a character.
This change adds a receive queue to the DUART implementation that will
accept characters regardless of whether the DUART is ready to receive
or not. The service routine will then read fromn the queue if and only
if the DUART is ready to transmit.