1
0
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:
Bob Supnik
2004-11-23 15:49:00 -08:00
committed by Mark Pizzolato
parent 2e00e1122f
commit b6393b36b4
131 changed files with 20920 additions and 4845 deletions

View File

@@ -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;
}