I've been looking into the cpc_rs232 amstrad/pace interface and the COMMSTAR Rom software. It seems that the software won't run due to the ring indicator bit 4 of RR0 being high when it's expected to be 0. The software works if RR0 bit 4 is set low.
Line 55 in /devices/bus/cpc/cpc_rs232.cpp where channel a ring indicator handler is set is
Code: Select all
// m_rs232->ri_handler().set(m_dart, FUNC(z80dart_device::ria_w));
Reading between the lines of forum posts back in 2014. It seems that the z80 dart emulation has been improved since then and I think now's the time to reinstate that line.
I am new to Mamedev and haven't raised a pull request before. I can do so, but given that someone has already uncommented that line, I thought I'd post here to ask what was best.
Thanks
The lines in the cpc_ser/COMMSTAR1.ROM that read the z80 dart RR0 are:
Code: Select all
LD BC,&FADD ;;F102: ... 01 DD FA
LD A,&18 ;;F105: >. 3E 18
OUT (C),A ;;F107: .y ED 79
LD A,&10 ;;F109: >. 3E 10
OUT (C),A ;;F10B: .y ED 79
LD A,&00 ;;F10D: >. 3E 00
OUT (C),A ;;F10F: .y ED 79
IN E,(C) ;;F111: .X ED 58. --- READ REGISTER 0 Expecting 6C getting 7C
LD A,&56 ;;F113: >V 3E 56
AND E ;;F115: . A3
CP &44 ;;F116: .D FE 44 -- replace with &56 to work with &7C
LD A,E ;;F118: { 7B
SCF ;;F119: 7 37
CCF ;;F11A: ? 3F
RET NZ ;;F11B: . C0