1
0
mirror of https://github.com/simh/simh.git synced 2026-01-11 23:52:58 +00:00

PDP11: Changes for Terak 8510/a simulator:

Accept devices mapped at IOPAGEBASE -- text buffer/character generator
memory on video board starts at 160000.

Clear invalid PSW bits in trap handler -- system acceptance test writes
PSW 113705 to vector 34 (TRAP instruction).
This commit is contained in:
Sergey Svishchev 2025-09-10 21:52:47 +03:00 committed by Mark Pizzolato
parent dd31ce6e75
commit 45fe20a34b
2 changed files with 3 additions and 2 deletions

View File

@ -929,6 +929,7 @@ while (reason == 0) {
}
src = ReadCW (trapea | calc_ds (MD_KER)); /* new PC */
src2 = ReadCW ((trapea + 2) | calc_ds (MD_KER));/* new PSW */
src2 = src2 & cpu_tab[cpu_model].psw; /* mask off invalid bits */
t = (src2 >> PSW_V_CM) & 03; /* new cm */
trapea = ~t; /* flag pushes */
WriteCW (PSW, ((STACKFILE[t] - 2) & 0177777) | calc_ds (t));

View File

@ -121,7 +121,7 @@ if (dibp == NULL)
newba = (uint32) get_uint (cptr, DEV_RDX, IOPAGEBASE+IOPAGEMASK, &r); /* get new */
if (r != SCPE_OK)
return r;
if ((newba <= IOPAGEBASE) || /* > IO page base? */
if ((newba < IOPAGEBASE) || /* > IO page base? */
(newba % ((uint32) val))) /* check modulus */
return sim_messagef (SCPE_ARG, "Invalid bus address value: %s\n", cptr);
if (dibp->ba != newba) { /* changed? */
@ -145,7 +145,7 @@ dptr = find_dev_from_unit (uptr);
if (dptr == NULL)
return SCPE_IERR;
dibp = (DIB *) dptr->ctxt;
if ((dibp == NULL) || (dibp->ba <= IOPAGEBASE))
if ((dibp == NULL) || (dibp->ba < IOPAGEBASE))
return SCPE_IERR;
if ((sim_switches & SWMASK('H')) || (sim_switch_number == 16))
radix = 16;