From d54b7d2a6bb9ede5fd9ac4172e956b519b6e2fdf Mon Sep 17 00:00:00 2001 From: Richard Cornwell Date: Fri, 14 Jun 2024 11:32:33 -0400 Subject: [PATCH] IBM360: Fixed 3270 support for MVS. --- IBM360/ibm360_scom.c | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/IBM360/ibm360_scom.c b/IBM360/ibm360_scom.c index e8ff612..3c98451 100644 --- a/IBM360/ibm360_scom.c +++ b/IBM360/ibm360_scom.c @@ -175,7 +175,7 @@ UNIT scoml_unit[] = { {UDATA(&scoml_srv, UNIT_COM, 0), 0, UNIT_ADDR(0x05F)}, /* F */ }; -struct dib scom_dib = { 0xF0, NUM_UNITS_SCOM, NULL, scoml_startcmd, +struct dib scom_dib = { 0xF8, NUM_UNITS_SCOM, NULL, scoml_startcmd, scoml_haltio, scoml_unit, NULL}; DEVICE scom_dev = { @@ -206,13 +206,14 @@ uint8 scoml_startcmd(UNIT *uptr, uint8 cmd) { return SNS_BSY; } - if (cmd == 0) - return 0; if (scom_ldsc[unit].conn == 0 && cmd != CMD_SENSE) { uptr->SNS = SNS_INTVENT; return SNS_UNITCHK; } + if (cmd == 0) + return 0; + switch (cmd) { case CMD_WR: /* Write data to com line */ case CMD_RD: /* Read buffer */ @@ -226,14 +227,15 @@ uint8 scoml_startcmd(UNIT *uptr, uint8 cmd) { sim_activate(uptr, 200); return 0; - case CMD_SENSE: - uptr->CMD |= cmd; - sim_activate(uptr, 200); - return 0; - case CMD_NOP: /* Nop scommand */ break; + case CMD_SENSE: + uptr->CMD |= cmd; + sim_activate(uptr, 20); + return 0; + + case CMD_SEL: /* Select */ case CMD_EAU: /* Erase all un protected */ uptr->SNS = 0; @@ -299,6 +301,11 @@ t_stat scoml_srv(UNIT * uptr) int cmd = uptr->CMD & 0xff; uint8 ch; + if (scom_ldsc[unit].conn == 0 && cmd != CMD_SENSE) { + uptr->SNS = SNS_INTVENT; + set_devattn(addr, SNS_UNITCHK); + return SCPE_OK; + } if ((uptr->STATUS & (RECV|DATA|INIT1)) != 0) { sim_activate(uptr, 200); @@ -306,7 +313,9 @@ t_stat scoml_srv(UNIT * uptr) } switch (cmd) { - case 0: + case CMD_NOP: + uptr->CMD &= ~0xff; + chan_end(addr, SNS_CHNEND|SNS_DEVEND); break; case CMD_SENSE: @@ -414,8 +423,8 @@ write: } break; - case CMD_NOP: /* Nop scommand */ - break; +// case CMD_NOP: /* Nop scommand */ +// break; case CMD_SEL: /* Select */ uptr->CMD &= ~0xff;