H316: Move the SMK/OTK to h316_cpu (where it belongs!) and Allow the CLK device to be disabled (from Bob Armstrong)
This commit is contained in:
parent
118ef33f19
commit
f0ca4de993
1 changed files with 21 additions and 23 deletions
|
@ -31,6 +31,8 @@
|
||||||
10-Sep-13 RMS Fixed several bugs in the TTY logic
|
10-Sep-13 RMS Fixed several bugs in the TTY logic
|
||||||
Added SET file type commands to PTR/PTP
|
Added SET file type commands to PTR/PTP
|
||||||
3-Jul-13 RLA compatibility changes for extended interrupts
|
3-Jul-13 RLA compatibility changes for extended interrupts
|
||||||
|
23-May-13 RLA Move the SMK/OTK to h316_cpu (where it belongs!)
|
||||||
|
Allow the CLK device to be disabled
|
||||||
09-Jun-07 RMS Fixed bug in clock increment (Theo Engel)
|
09-Jun-07 RMS Fixed bug in clock increment (Theo Engel)
|
||||||
30-Sep-06 RMS Fixed handling of non-printable characters in KSR mode
|
30-Sep-06 RMS Fixed handling of non-printable characters in KSR mode
|
||||||
03-Apr-06 RMS Fixed bugs in punch state handling (Theo Engel)
|
03-Apr-06 RMS Fixed bugs in punch state handling (Theo Engel)
|
||||||
|
@ -336,7 +338,7 @@ DEVICE clk_dev = {
|
||||||
1, 0, 0, 0, 0, 0,
|
1, 0, 0, 0, 0, 0,
|
||||||
NULL, NULL, &clk_reset,
|
NULL, NULL, &clk_reset,
|
||||||
NULL, NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
&clk_dib, 0
|
&clk_dib, /* [RLA] */ DEV_DISABLE
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Paper tape reader: IO routine */
|
/* Paper tape reader: IO routine */
|
||||||
|
@ -893,32 +895,28 @@ switch (inst) { /* case on opcode */
|
||||||
if (!TST_INTREQ (INT_CLK))
|
if (!TST_INTREQ (INT_CLK))
|
||||||
return IOSKIP (dat);
|
return IOSKIP (dat);
|
||||||
}
|
}
|
||||||
else if ((fnc & 007) == 002) { /* mem parity? */
|
// [RLA] I'm not sure where this comes from - I can't find any H316
|
||||||
if (((fnc == 002) && !TST_INT (INT_MPE)) ||
|
// [RLA] documentation that supports this. According to my manual,
|
||||||
((fnc == 012) && TST_INT (INT_MPE)))
|
// [RLA] skip on memory parity error (SPS) is opcode 101200 and skip
|
||||||
return IOSKIP (dat);
|
// [RLA] on no parity error (SPN) is 100200. Neither of these look
|
||||||
}
|
// [RLA] like an SKS to device 20.
|
||||||
|
//
|
||||||
|
// [RLA] In any case this code can't stay here since the clock can
|
||||||
|
// [RLA] now be disabled. It'll have to move to h316_cpu.c no matter
|
||||||
|
// [RLA] how it's supposed to work.
|
||||||
|
//
|
||||||
|
// [RLA] else if ((fnc & 007) == 002) { /* mem parity? */
|
||||||
|
// [RLA] if (((fnc == 002) && !TST_INT (INT_MPE)) ||
|
||||||
|
// [RLA] ((fnc == 012) && TST_INT (INT_MPE)))
|
||||||
|
// [RLA] return IOSKIP (dat);
|
||||||
|
// [RLA] }
|
||||||
else return IOBADFNC (dat); /* invalid fnc */
|
else return IOBADFNC (dat); /* invalid fnc */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ioOTA: /* OTA */
|
case ioOTA: /* OTA */
|
||||||
if (fnc == 000) /* SMK */
|
// [RLA] This case never gets here - OTA with device 20 is the SMK or
|
||||||
dev_enb = dat;
|
// [RLA] OTK instructions, and those are handled directly in h316_cpu.c
|
||||||
else if (fnc == 010) { /* OTK */
|
return IOBADFNC (dat);
|
||||||
C = (dat >> 15) & 1; /* set C */
|
|
||||||
if (cpu_unit.flags & UNIT_HSA) /* HSA included? */
|
|
||||||
dp = (dat >> 14) & 1; /* set dp */
|
|
||||||
if (cpu_unit.flags & UNIT_EXT) { /* ext opt? */
|
|
||||||
if (dat & 020000) { /* ext set? */
|
|
||||||
ext = 1; /* yes, set */
|
|
||||||
extoff_pending = 0;
|
|
||||||
}
|
|
||||||
else extoff_pending = 1; /* no, clr later */
|
|
||||||
}
|
|
||||||
sc = dat & 037; /* set sc */
|
|
||||||
}
|
|
||||||
else return IOBADFNC (dat);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return dat;
|
return dat;
|
||||||
|
|
Loading…
Add table
Reference in a new issue