1
0
mirror of https://github.com/simh/simh.git synced 2026-03-02 17:55:17 +00:00

sigma: Invalid address must set a TDV-visible error flag on DP Device

This commit is contained in:
Ken Rector
2022-12-12 09:27:51 -10:00
committed by Mark Pizzolato
parent b86c5360a9
commit d6fad5d975
2 changed files with 8 additions and 1 deletions

View File

@@ -127,6 +127,7 @@
121. COC: Transmit long space is 0x6, and stop transmit is 0xE.
122. COC: Received break generates a data-in channel transaction with a flag bit set
in the line number.
123. DP: dp_inv_adr error must set a TDV visible flag (i.e., PGE) before UEND.
Diagnostic Notes
----------------

View File

@@ -25,6 +25,7 @@
dp moving head disk pack controller
09-Dec-22 RMS Invalid address must set a TDV-visible error flag (Ken Rector)
23-Jul-22 RMS SEEK(I), RECAL(I) should be fast operations (Ken Rector)
02-Jul-22 RMS Fixed bugs in multi-unit operation
28-Jun-22 RMS Fixed off-by-1 error in DP_SEEK definition (Ken Rector)
@@ -771,6 +772,7 @@ switch (uptr->UCMD) {
return SCPE_OK;
}
if (dp_inv_ad (uptr, &da)) { /* invalid addr? */
ctx->dp_flags |= DPF_PGE;
chan_uen (dva); /* uend */
return SCPE_OK;
}
@@ -800,6 +802,7 @@ switch (uptr->UCMD) {
return SCPE_OK;
}
if (dp_inv_ad (uptr, &da)) { /* invalid addr? */
ctx->dp_flags |= DPF_PGE;
chan_uen (dva); /* uend */
return SCPE_OK;
}
@@ -824,6 +827,7 @@ switch (uptr->UCMD) {
case DPS_CHECK: /* write check */
if (dp_inv_ad (uptr, &da)) { /* invalid addr? */
ctx->dp_flags |= DPF_PGE;
chan_uen (dva); /* uend */
return SCPE_OK;
}
@@ -849,6 +853,7 @@ switch (uptr->UCMD) {
case DPS_READ: /* read */
if (dp_inv_ad (uptr, &da)) { /* invalid addr? */
ctx->dp_flags |= DPF_PGE;
chan_uen (dva); /* uend */
return SCPE_OK;
}
@@ -869,6 +874,7 @@ switch (uptr->UCMD) {
case DPS_RHDR: /* read header */
if (dp_inv_ad (uptr, &da)) { /* invalid addr? */
ctx->dp_flags |= DPF_PGE;
chan_uen (dva); /* uend */
return SCPE_OK;
}
@@ -994,7 +1000,7 @@ st = 0;
on_cyl = !sim_is_active (&dp_unit[un + DP_SEEK]) ||
(dp_unit[un + DP_SEEK].UCMD == DSC_SEEKW);
if (DP_Q10B (dp_ctx[cidx].dp_ctype))
st = ((dp_ctx[cidx].dp_flags & DPF_IVA)? 0x20: 0) |
st = ((dp_ctx[cidx].dp_flags & (DPF_IVA|DPF_PGE))? 0x20: 0) |
(on_cyl? 0x04: 0);
else st = ((dp_ctx[cidx].dp_flags & DPF_PGE)? 0x20: 0) |
((dp_ctx[cidx].dp_flags & DPF_WPE)? 0x08: 0);