mirror of
https://github.com/open-simh/simh.git
synced 2026-04-28 12:57:40 +00:00
Notes For V3.0-2
RESTRICTION: The FP15 and XVM features of the PDP-15 are only partially debugged. Do NOT enable these features for normal operations. 1. New Features in 3.0-2 1.1 PDP-1 - The LOAD command takes an optional argument specifying the memory field to be loaded. - The PTR BOOT command takes its starting memory field from the TA (address switch) register. 2. Bugs Fixed in 3.0-2 2.1 SCP and libraries - Fixed end of file problem in dep, idep. - Fixed handling of trailing spaces in dep, idep. 2.2 PDP-1 - Fixed system hang if continue after PTR error. - Fixed PTR to start/stop on successive rpa instructions. 2.3 PDP 18b family - Fixed priorities in PDP-15 API (differs from PDP-9). - Fixed sign handling in PDP-15 EAE unsigned mul/div (differs from PDP-9). - Fixed bug in CAF, clears API subsystem. 2.4 1401 - Fixed tape read end-of-record handling based on real 1401. - Added diagnostic read (space forward). 2.5 1620 - Fixed bug in immediate index add (found by Michael Short). 3. New Features in 3.0 vs prior releases 3.1 SCP and Libraries - Added ASSIGN/DEASSIGN (logical name) commands. - Changed RESTORE to unconditionally detach files. - Added E11 and TPC format support to magtape library. - Fixed bug in SHOW CONNECTIONS. - Added USE_ADDR64 support 3.2 All magtapes - Magtapes support SIMH format, E11 format, and TPC format (read only). - SET <tape_unit> FORMAT=format sets the specified tape unit's format. - SHOW <tape_unit> FORMAT displays the specified tape unit's format. - Tape format can also be set as part of the ATTACH command, using the -F switch. 3.3 VAX - VAX can be compiled without USE_INT64. - If compiled with USE_INT64 and USE_ADDR64, RQ and TQ controllers support files > 2GB. - VAX ROM has speed control (SET ROM DELAY/NODELAY). 3.4 PDP-1 - Added block loader format support to LOAD. - Changed BOOT PTR to allow loading of all of the first bank of memory. 3.5 PDP-18b Family - Added PDP-4 EAE support. - Added PDP-15 FP15 support. - Added PDP-15 XVM support. - Added PDP-15 "re-entrancy ECO". - Added PDP-7, PDP-9, PDP-15 hardware RIM loader support in BOOT PTR. 4. Bugs Fixed in 3.0 vs prior releases 4.1 VAX - Fixed CVTfi bug: integer overflow not set if exponent out of range - Fixed EMODx bugs: o First and second operands reversed o Separated fraction received wrong exponent o Overflow calculation on separated integer incorrect o Fraction not set to zero if exponent out of range - Fixed interval timer and ROM access to pass power-up self-test even on very fast host processors (fixes from Mark Pizzolato). - Fixed bug in user disk size (found by Chaskiel M Grundman). 4.2 1401 - Fixed mnemonic, instruction lengths, and reverse scan length check bug for MCS. - Fixed MCE bug, BS off by 1 if zero suppress. - Fixed chaining bug, D lost if return to SCP. - Fixed H branch, branch occurs after continue. - Added check for invalid 8 character MCW, LCA. - Fixed magtape load-mode end of record response. - Revised fetch to model hardware more closely. 4.3 Nova - Fixed DSK variable size interaction with restore. - Fixed bug in DSK set size routine. 4.4 PDP-1 - Fixed DT variable size interaction with restore. - Updated CPU, line printer, standard devices to detect indefinite I/O wait. - Fixed incorrect logical, missing activate, break in drum simulator. - Fixed bugs in instruction decoding, overprinting for line printer. 4.5 PDP-11 - Fixed DT variable size interaction with restore. - Fixed bug in MMR1 update (found by Tim Stark). - Added XQ features and fixed bugs: o Corrected XQ interrupts on IE state transition (code by Tom Evans). o Added XQ interrupt clear on soft reset. o Removed XQ interrupt when setting XL or RL (multiple people). o Added SET/SHOW XQ STATS. o Added SHOW XQ FILTERS. o Added ability to split received packet into multiple buffers. o Added explicit runt and giant packet processing. - Fixed bug in user disk size (found by Chaskiel M Grundman). 4.6 PDP-18B - Fixed DT, RF variable size interaction with restore. - Fixed MT bug in MTTR. - Fixed bug in PDP-4 line printer overprinting. - Fixed bug in PDP-15 memory protect/skip interaction. - Fixed bug in RF set size routine. - Increased PTP TIME for PDP-15 operating systems. 4.7 PDP-8 - Fixed DT, DF, RF, RX variable size interaction with restore. - Fixed MT bug in SKTR. - Fixed bug in DF, RF set size routine. 4.8 HP2100 - Fixed bug in DP (13210A controller only), DQ read status. - Fixed bug in DP, DQ seek complete. - Fixed DR drum sizes. - Fixed DR variable capacity interaction with SAVE/RESTORE. 4.9 GRI - Fixed bug in SC queue pointer management. 4.10 PDP-10 - Fixed bug in RP read header. 4.11 Ibm1130 - Fixed bugs found by APL 1130. 4.12 Altairz80 - Fixed bug in real-time clock on Windows host.
This commit is contained in:
committed by
Mark Pizzolato
parent
f9564b81b9
commit
b2101ecdd4
30
scp.c
30
scp.c
@@ -23,6 +23,8 @@
|
||||
be used in advertising or otherwise to promote the sale, use or other dealings
|
||||
in this Software without prior written authorization from Robert M Supnik.
|
||||
|
||||
01-Sep-03 RMS Fixed end-of-file problem in dep, idep
|
||||
Fixed error on trailing spaces in dep, idep
|
||||
15-Jul-03 RMS Removed unnecessary test in reset_all
|
||||
15-Jun-03 RMS Added register flag REG_VMIO
|
||||
25-Apr-03 RMS Added extended address support (V3.0)
|
||||
@@ -58,7 +60,7 @@
|
||||
02-May-02 RMS Added VT emulation interface, changed {NO}LOG to SET {NO}LOG
|
||||
22-Apr-02 RMS Fixed laptop sleep problem in clock calibration, added
|
||||
magtape record length error (found by Jonathan Engdahl)
|
||||
26-Feb-02 RMS Fixed initialization bugs in do_cmd, get_avail
|
||||
26-Feb-02 RMS Fixed initialization bugs in do_cmd, get_aval
|
||||
(found by Brian Knittel)
|
||||
10-Feb-02 RMS Fixed problem in clock calibration
|
||||
06-Jan-02 RMS Moved device enable/disable to simulators
|
||||
@@ -2177,9 +2179,10 @@ if (uptr->flags & UNIT_DIS) return SCPE_UDIS; /* disabled? */
|
||||
mask = (t_addr) width_mask[dptr->awidth];
|
||||
if ((low > mask) || (high > mask) || (low > high)) return SCPE_ARG;
|
||||
for (i = low; i <= high; i = i + (dptr->aincr)) {
|
||||
reason = get_aval (i, dptr, uptr); /* get data */
|
||||
if (reason != SCPE_OK) return reason; /* return if error */
|
||||
if (schptr && !test_search (sim_eval[0], schptr)) continue;
|
||||
if ((flag & EX_E) || schptr) { /* examine or search? */
|
||||
reason = get_aval (i, dptr, uptr); /* get data */
|
||||
if (reason != SCPE_OK) return reason; /* return if error */
|
||||
if (schptr && !test_search (sim_eval[0], schptr)) continue; }
|
||||
if (flag != EX_D) {
|
||||
reason = ex_addr (ofile, flag, i, dptr, uptr);
|
||||
if (reason > SCPE_OK) return reason;
|
||||
@@ -2630,9 +2633,11 @@ t_value get_uint (char *cptr, uint32 radix, t_value max, t_stat *status)
|
||||
t_value val;
|
||||
char *tptr;
|
||||
|
||||
*status = SCPE_OK;
|
||||
val = strtotv (cptr, &tptr, radix);
|
||||
if ((cptr == tptr) || (val > max) || (*tptr != 0)) *status = SCPE_ARG;
|
||||
else *status = SCPE_OK;
|
||||
if ((cptr == tptr) || (val > max)) *status = SCPE_ARG;
|
||||
else { while (isspace (*tptr)) tptr++;
|
||||
if (*tptr != 0) *status = SCPE_ARG; }
|
||||
return val;
|
||||
}
|
||||
|
||||
@@ -2654,20 +2659,23 @@ char *get_range (char *cptr, t_addr *lo, t_addr *hi, uint32 rdx,
|
||||
t_addr max, char term)
|
||||
{
|
||||
char *tptr;
|
||||
t_addr hb;
|
||||
|
||||
*lo = *hi = hb = 0;
|
||||
if (max && strncmp (cptr, "ALL", strlen ("ALL")) == 0) { /* ALL? */
|
||||
tptr = cptr + strlen ("ALL");
|
||||
*lo = 0;
|
||||
*hi = max; }
|
||||
else { *lo = (t_addr) strtotv (cptr, &tptr, rdx); /* get low */
|
||||
if (cptr == tptr) return NULL; /* error? */
|
||||
if ((*tptr == '-') || (*tptr == ':') || (*tptr == '/')) {
|
||||
if (*tptr == '/') hb = *lo; /* relative? */
|
||||
if ((*tptr == '-') || (*tptr == ':')) { /* range? */
|
||||
cptr = tptr + 1;
|
||||
*hi = hb + (t_addr) strtotv (cptr, &tptr, rdx); /* get high */
|
||||
*hi = (t_addr) strtotv (cptr, &tptr, rdx); /* get high */
|
||||
if (cptr == tptr) return NULL;
|
||||
if (*lo > *hi) return NULL; }
|
||||
else if (*tptr == '/') { /* relative? */
|
||||
cptr = tptr + 1;
|
||||
*hi = (t_addr) strtotv (cptr, &tptr, rdx); /* get high */
|
||||
if ((cptr == tptr) || (*hi == 0)) return NULL;
|
||||
*hi = *lo + *hi - 1; }
|
||||
else *hi = *lo; }
|
||||
if (term && (*tptr++ != term)) return NULL;
|
||||
return tptr;
|
||||
|
||||
Reference in New Issue
Block a user