mirror of
https://github.com/open-simh/simh.git
synced 2026-04-29 21:27:07 +00:00
Notes For V3.3
RESTRICTION: The HP DS disk is not debugged. DO NOT enable this feature for normal operations. WARNING: Massive changes in the PDP-11 make all previous SAVEd file obsolete. Do not attempt to use a PDP-11 SAVE file from a prior release with V3.3! 1. New Features in 3.3 1.1 SCP - Added -p (powerup) qualifier to RESET - Changed SET <unit> ONLINE/OFFLINE to SET <unit> ENABLED/DISABLED - Moved SET DEBUG under SET CONSOLE hierarchy - Added optional parameter value to SHOW command - Added output file option to SHOW command 1.2 PDP-11 - Separated RH Massbus adapter from RP controller - Added TU tape support - Added model emulation framework - Added model details 1.3 VAX - Separated out CVAX-specific features from core instruction simulator - Implemented capability for CIS, octaword, compatibility mode instructions - Added instruction display and parse for compatibility mode - Changed SET CPU VIRTUAL=n to SHOW CPU VIRTUAL=n - Added =n optional parameter to SHOW CPU HISTORY 1.4 Unibus/Qbus simulators (PDP-11, VAX, PDP-10) - Simplified DMA API's - Modified DMA peripherals to use simplified API's 1.5 HP2100 (all changes from Dave Bryan) CPU - moved MP into its own device; added MP option jumpers - modified DMA to allow disabling - modified SET CPU 2100/2116 to truncate memory > 32K - added -F switch to SET CPU to force memory truncation - modified WRU to be REG_HRO - added BRK and DEL to save console settings DR - provided protected tracks and "Writing Enabled" status bit - added "parity error" status return on writes for 12606 - added track origin test for 12606 - added SCP test for 12606 - added "Sector Flag" status bit - added "Read Inhibit" status bit for 12606 - added TRACKPROT modifier LPS - added SET OFFLINE/ONLINE, POWEROFF/POWERON - added fast/realistic timing - added debug printouts LPT - added SET OFFLINE/ONLINE, POWEROFF/POWERON PTR - added paper tape loop mode, DIAG/READER modifiers to PTR - added PV_LEFT to PTR TRLLIM register CLK - modified CLK to permit disable 1.6 IBM 1401, IBM 1620, Interdata 16b, SDS 940, PDP-10 - Added instruction history 1.7 H316, PDP-15, PDP-8 - Added =n optional value to SHOW CPU HISTORY 2. Bugs Fixed in 3.3 2.1 SCP - Fixed comma-separated SET options (from Dave Bryan) - Fixed duplicate HELP displays with user-specified commands 2.2 PDP-10 - Replicated RP register state per drive - Fixed TU to set FCE on short record - Fixed TU to return bit<15> in drive type - Fixed TU format specification, 1:0 are don't cares - Fixed TU handling of TMK status - Fixed TU handling of DONE, ATA at end of operation - Implemented TU write check 2.3 PDP-11 - Replicated RP register state per drive - Fixed RQ, TQ to report correct controller type and stage 1 configuration flags on a Unibus system - Fixed HK CS2<output_ready> flag 2.4 VAX - Fixed parsing of indirect displacement modes in instruction input 2.5 HP2100 (all fixes from Dave Bryan) CPU - fixed S-register behavior on 2116 - fixed LIx/MIx behavior for DMA on 2116 and 2100 - fixed LIx/MIx behavior for empty I/O card slots DP - fixed enable/disable from either device - fixed ANY ERROR status for 12557A interface - fixed unattached drive status for 12557A interface - status cmd without prior STC DC now completes (12557A) - OTA/OTB CC on 13210A interface also does CLC CC - fixed RAR model - fixed seek check on 13210 if sector out of range DQ - fixed enable/disable from either device - shortened xtime from 5 to 3 (drive avg 156KW/second) - fixed not ready/any error status - fixed RAR model DR - fixed enable/disable from either device - fixed sector return in status word - fixed DMA last word write, incomplete sector fill value - fixed 12610 SFC operation - fixed current-sector determination IPL - fixed enable/disable from either device LPS - fixed status returns for error conditions - fixed handling of non-printing characters - fixed handling of characters after column 80 - improved timing model accuracy for RTE LPT - fixed status returns for error conditions - fixed TOF handling so form remains on line 0 SYS - fixed display of CCA/CCB/CCE instructions 2.5 PDP-15 FPP - fixed URFST to mask low 9b of fraction - fixed exception PC setting
This commit is contained in:
committed by
Mark Pizzolato
parent
2e00e1122f
commit
b6393b36b4
@@ -344,7 +344,7 @@
|
||||
#define UNIT_UP (1 << UNIT_V_UP)
|
||||
#define UNIT_MSIZE (1 << UNIT_V_MSIZE)
|
||||
|
||||
unsigned int16 M[MAXMEMSIZE] = { 0 }; /* memory */
|
||||
uint16 M[MAXMEMSIZE] = { 0 }; /* memory */
|
||||
int32 AC[4] = { 0 }; /* accumulators */
|
||||
int32 C = 0; /* carry flag */
|
||||
int32 saved_PC = 0; /* program counter */
|
||||
@@ -375,13 +375,13 @@ struct ndev dev_table[64]; /* dispatch table */
|
||||
int32 hnext = 0; /* # of current entry */
|
||||
int32 hwrap = 0; /* 1 if wrapped */
|
||||
int32 hmax = HISTMAX; /* Maximum entries b4 wrap */
|
||||
unsigned int16 hpc[HISTMAX];
|
||||
unsigned int16 hinst[HISTMAX];
|
||||
unsigned int16 hinst2[HISTMAX];
|
||||
unsigned int16 hac0[HISTMAX];
|
||||
unsigned int16 hac1[HISTMAX];
|
||||
unsigned int16 hac2[HISTMAX];
|
||||
unsigned int16 hac3[HISTMAX];
|
||||
uint16 hpc[HISTMAX];
|
||||
uint16 hinst[HISTMAX];
|
||||
uint16 hinst2[HISTMAX];
|
||||
uint16 hac0[HISTMAX];
|
||||
uint16 hac1[HISTMAX];
|
||||
uint16 hac2[HISTMAX];
|
||||
uint16 hac3[HISTMAX];
|
||||
unsigned short hflags[HISTMAX];
|
||||
|
||||
/* Flags: 0x01 - carry bit
|
||||
@@ -689,7 +689,7 @@ t_stat sim_instr (void)
|
||||
{
|
||||
extern int32 sim_interval;
|
||||
register int32 PC, IR, i, t, MA, j, k, tac;
|
||||
register unsigned int32 mddata, uAC0, uAC1, uAC2, uAC3;
|
||||
register uint32 mddata, uAC0, uAC1, uAC2, uAC3;
|
||||
int16 sAC0, sAC1, sAC2;
|
||||
int32 sddata, mi1, mi2, fpnum32;
|
||||
t_int64 fpnum, expon;
|
||||
@@ -1623,9 +1623,9 @@ if ((IR & 0100017) == 0100010) { /* This pattern for all */
|
||||
/* Multiply / Divide */
|
||||
|
||||
if (IR == 0143710) { /* MUL: Unsigned Multiply */
|
||||
uAC0 = (unsigned int32) AC[0];
|
||||
uAC1 = (unsigned int32) AC[1];
|
||||
uAC2 = (unsigned int32) AC[2];
|
||||
uAC0 = (uint32) AC[0];
|
||||
uAC1 = (uint32) AC[1];
|
||||
uAC2 = (uint32) AC[2];
|
||||
|
||||
mddata = (uAC1 * uAC2) + uAC0;
|
||||
AC[0] = (mddata >> 16) & 0177777;
|
||||
@@ -1643,9 +1643,9 @@ if ((IR & 0100017) == 0100010) { /* This pattern for all */
|
||||
continue;
|
||||
}
|
||||
if (IR == 0153710) { /* DIV: Unsigned Divide */
|
||||
uAC0 = (unsigned int32) AC[0];
|
||||
uAC1 = (unsigned int32) AC[1];
|
||||
uAC2 = (unsigned int32) AC[2];
|
||||
uAC0 = (uint32) AC[0];
|
||||
uAC1 = (uint32) AC[1];
|
||||
uAC2 = (uint32) AC[2];
|
||||
|
||||
if (uAC0 >= uAC2) C = 0200000;
|
||||
else { C = 0;
|
||||
@@ -5930,7 +5930,6 @@ int32 Dump_History (FILE *st, UNIT *uptr, int32 val, void *desc)
|
||||
char debmap[4], debion[4];
|
||||
t_value simeval[20];
|
||||
int debcar;
|
||||
FILE *Dumpf;
|
||||
int start, end, ctr;
|
||||
int count = 0;
|
||||
|
||||
@@ -5939,7 +5938,6 @@ int32 Dump_History (FILE *st, UNIT *uptr, int32 val, void *desc)
|
||||
printf("in DEBUG with bit 0 being 1 to build history.\n");
|
||||
return SCPE_OK;
|
||||
}
|
||||
Dumpf = fopen("history.log", "w");
|
||||
if (!hwrap) {
|
||||
start = 0;
|
||||
end = hnext;
|
||||
@@ -5957,7 +5955,7 @@ int32 Dump_History (FILE *st, UNIT *uptr, int32 val, void *desc)
|
||||
strcpy(debmap, " ");
|
||||
debcar = 0;
|
||||
if (hflags[ctr] & 0x80) {
|
||||
fprintf(Dumpf, "--------- Interrupt %o (%o) to %6o ---------\n",
|
||||
fprintf(st, "--------- Interrupt %o (%o) to %6o ---------\n",
|
||||
hinst[ctr], hac0[ctr], hac1[ctr]);
|
||||
} else {
|
||||
if (hflags[ctr] & 0x01) debcar = 1;
|
||||
@@ -5966,20 +5964,18 @@ int32 Dump_History (FILE *st, UNIT *uptr, int32 val, void *desc)
|
||||
if (hflags[ctr] & 0x08) strcpy(debmap, "B");
|
||||
if (hflags[ctr] & 0x10) strcpy(debmap, "C");
|
||||
if (hflags[ctr] & 0x20) strcpy(debmap, "D");
|
||||
fprintf(Dumpf, "%s%s%06o acs: %06o %06o %06o %06o %01o ",
|
||||
fprintf(st, "%s%s%06o acs: %06o %06o %06o %06o %01o ",
|
||||
debion, debmap, hpc[ctr], hac0[ctr], hac1[ctr], hac2[ctr],
|
||||
hac3[ctr], debcar);
|
||||
simeval[0] = hinst[ctr];
|
||||
simeval[1] = hinst2[ctr];
|
||||
fprint_sym (Dumpf, hpc[ctr], simeval, NULL, SWMASK('M'));
|
||||
fprintf(Dumpf, "\n");
|
||||
fprint_sym (st, hpc[ctr], simeval, NULL, SWMASK('M'));
|
||||
fprintf(st, "\n");
|
||||
}
|
||||
ctr++;
|
||||
if (ctr > hmax)
|
||||
ctr = 0;
|
||||
}
|
||||
fclose(Dumpf);
|
||||
printf("\n%d records dumped to history.log\n", count);
|
||||
return SCPE_OK;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user