Mercurial > repos > blastem
changeset 1215:cf69a179aeaf
Basic implementation of serial IO registers, but without actual serial IO support. Needed to run a certain software check cartridge that is floating around.
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Wed, 01 Feb 2017 21:19:35 -0800 |
parents | afa3d0a227ae |
children | 0649cd8ca097 |
files | genesis.c io.h |
diffstat | 2 files changed, 53 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/genesis.c Wed Feb 01 19:33:11 2017 -0800 +++ b/genesis.c Wed Feb 01 21:19:35 2017 -0800 @@ -517,6 +517,29 @@ case 0x6: gen->io.ports[2].control = value; break; + case 0x7: + gen->io.ports[0].serial_out = value; + break; + case 0x8: + case 0xB: + case 0xE: + //serial input port is not writeable + break; + case 0x9: + gen->io.ports[0].serial_ctrl = value; + break; + case 0xA: + gen->io.ports[1].serial_out = value; + break; + case 0xC: + gen->io.ports[1].serial_ctrl = value; + break; + case 0xD: + gen->io.ports[2].serial_out = value; + break; + case 0xF: + gen->io.ports[2].serial_ctrl = value; + break; } } else { if (location == 0x1100) { @@ -628,6 +651,33 @@ case 0x6: value = gen->io.ports[2].control; break; + case 0x7: + value = gen->io.ports[0].serial_out; + break; + case 0x8: + value = gen->io.ports[0].serial_in; + break; + case 0x9: + value = gen->io.ports[0].serial_ctrl; + break; + case 0xA: + value = gen->io.ports[1].serial_out; + break; + case 0xB: + value = gen->io.ports[1].serial_in; + break; + case 0xC: + value = gen->io.ports[1].serial_ctrl; + break; + case 0xD: + value = gen->io.ports[2].serial_out; + break; + case 0xE: + value = gen->io.ports[2].serial_in; + break; + case 0xF: + value = gen->io.ports[2].serial_ctrl; + break; default: value = 0xFF; }