Fix for Unibus word DMA from Rob Jarratt

This commit is contained in:
Mark Pizzolato 2013-05-31 04:16:42 -07:00
parent 1c7bf98610
commit bc49f6b78a

View file

@ -512,7 +512,7 @@ d10 val;
ba = ba & ~01; /* align start */
lim = ba + (bc & ~01);
for ( ; ba < lim; ba++) { /* by bytes */
for ( ; ba < lim; ba += 2) { /* by bytes */
pa10 = Map_Addr10 (ba, 1); /* map addr */
if ((pa10 < 0) || MEM_ADDR_NXM (pa10)) { /* inv map or NXM? */
ubcs[1] = ubcs[1] | UBCS_TMO; /* UBA times out */
@ -520,8 +520,8 @@ for ( ; ba < lim; ba++) { /* by bytes */
}
val = *buf++; /* get data */
if (ba & 2)
M[pa10] = (M[pa10] & INT64_C(0777777600000)) | val;
else M[pa10] = (M[pa10] & INT64_C(0600000777777)) | (val << 18);
M[pa10] = (M[pa10] & INT64_C(0777777000000)) | val;
else M[pa10] = (M[pa10] & INT64_C(0000000777777)) | (val << 18);
}
return 0;
}
@ -961,8 +961,6 @@ AUTO_CON auto_tab[] = {/*c #v am vm fxa fxv */
{0017550}, {0070} }, /* PC11 reader - fx CSR, fx VEC */
{ { "PTP" }, 1, 1, 0, 0,
{0017554}, {0074} }, /* PC11 punch - fx CSR, fx VEC */
{ { "DUP" }, 1, 2, 0, 0,
{0000100}, {0300} }, /* DUP11 sync lines - fx CSR, fx VEC */
#else
{ { "QBA" }, 1, 0, 0, 0,
{017500} }, /* doorbell - fx CSR, no VEC */