1
0
mirror of https://github.com/rcornwell/sims.git synced 2026-01-13 23:35:30 +00:00

KA10: Fixed KL10B to pass diags.

This commit is contained in:
Richard Cornwell 2019-12-12 08:53:54 -05:00
parent 1b86b6802a
commit 99fc84f9fd

View File

@ -2309,7 +2309,12 @@ int page_lookup(t_addr addr, int flag, t_addr *loc, int wr, int cur_context, int
((xct_flag & 1) != 0 && !cur_context && BYF5 )) {
uf = (FLAGS & USERIO) != 0;
pub = (FLAGS & PRV_PUB) != 0;
if (QKLB && (!glb_sect /*|| ((xct_flag & 4) != 0 && prev_sect == 0)*/) && !extend)
if ((xct_flag & 014) == 04 && !ptr_flg && glb_sect == 0)
// if (QKLB && (!glb_sect /*|| ((xct_flag & 4) != 0 && prev_sect == 0)*/) && !extend)
sect = prev_sect;
if ((xct_flag & 03) == 01 && BYF5 && glb_sect == 0)
// if (QKLB && (!glb_sect /*|| ((xct_flag & 4) != 0 && prev_sect == 0)*/) && !extend)
sect = prev_sect;
//fprintf(stderr, " ps=%o os%o", prev_sect, sect);
}
@ -4107,9 +4112,10 @@ no_fetch:
if (QKLB && t20_page) {
if (xct_flag != 0 && (FLAGS & USER) == 0) {
if (((xct_flag & 8) != 0 && !ptr_flg) ||
((xct_flag & 2) != 0 && ptr_flg) ||
(prev_sect == 0 && (xct_flag & 014) == 04 && !BYF5/* && !ptr_flg*/) ||
(prev_sect == 0 && (xct_flag & 03) == 01 && BYF5))
((xct_flag & 2) != 0 && ptr_flg) //||
//// (/*prev_sect == 0 && */(xct_flag & 014) == 04 && !BYF5/* && !ptr_flg*/) ||
// // (/*prev_sect == 0 && */(xct_flag & 03) == 01 && BYF5)
)
sect = cur_sect = prev_sect;
}
/* Short cut for extended pointer address */
@ -4135,7 +4141,7 @@ no_fetch:
ix = GET_XR(MB);
if (ix) {
#if KL
if (((xct_flag & 8) != 0 && (FLAGS & USER) == 0) ||
if (((xct_flag & 8) != 0 && (FLAGS & USER) == 0 && !ptr_flg) ||
((xct_flag & 2) != 0 && (FLAGS & USER) == 0 && ptr_flg))
AR = FM[prev_ctx|ix];
else
@ -4177,7 +4183,7 @@ in_loop:
ix = GET_XR(MB);
AB = MB & RMASK;
if (ix) {
if (((xct_flag & 8) != 0 && (FLAGS & USER) == 0) ||
if (((xct_flag & 8) != 0 && (FLAGS & USER) == 0 && !ptr_flg) ||
((xct_flag & 2) != 0 && (FLAGS & USER) == 0 && ptr_flg))
AR = FM[prev_ctx|ix];
else
@ -4194,8 +4200,8 @@ in_loop:
}
MB = AR;
} else {
if (((xct_flag & 014) != 014 || (FLAGS & USER) != 0))
glb_sect = 0;
// if (((xct_flag & 014) != 014 || (FLAGS & USER) != 0))
glb_sect = 0;
if ((MB & RMASK) < 020)
sect = cur_sect = 1;
AR = MB;
@ -4207,7 +4213,7 @@ in_loop:
ix = (MB >> 30) & 017;
AB = MB & (SECTM|RMASK);
if (ix) {
if (((xct_flag & 8) != 0 && (FLAGS & USER) == 0) ||
if (((xct_flag & 8) != 0 && (FLAGS & USER) == 0 && !ptr_flg) ||
((xct_flag & 2) != 0 && (FLAGS & USER) == 0 && ptr_flg))
AR = FM[prev_ctx|ix];
else
@ -7352,10 +7358,8 @@ jrstf:
}
#endif
PC = AR & RMASK;
#if KLB
if (QKLB && t20_page && glb_sect)
pc_sect = (AR >> 18) & 07777;
#endif
#else
if (uuo_cycle | pi_cycle) {
FLAGS &= ~USER; /* Clear USER */
@ -7676,7 +7680,6 @@ jrstf:
#endif
AR = AOB(AR);
AB = AR & RMASK;
MB = BR;
if (AR & C1) {
#if KI | KL
if (!pi_cycle)
@ -7689,6 +7692,7 @@ jrstf:
#if KL
}
#endif
MB = BR;
if (hst_lnt)
hst[hst_p].mb = MB;
if (Mem_write(0, 0))