1
0
mirror of https://github.com/simh/simh.git synced 2026-04-27 12:28:49 +00:00

Notes For V3.2-3

RESTRICTION: The PDP-15 FPP is only partially debugged.  Do NOT
enable this feature for normal operations.
RESTRICTION: The HP DS disk is not debugged.  DO NOT enable this
feature for normal operations.

1. New Features in 3.2-3

1.1 SCP

- Added ECHO command (from Dave Bryan)

2. Bugs Fixed in 3.2-2

2.1 SCP

- Qualified RESTORE detach with SIM_SW_REST
- Fixed OS/2 issues in sim_console.c and sim_sock.h

2.2 HP2100 (all from Dave Bryan)

- Changed CPU error stops to report PC not PC + 1

- Fixed CLC to DR to stop operation in progress

- Functional and timing fixes to DP
  > controller sets ATN for all commands except read status
  > controller resumes polling for ATN interrupts after read status
  > check status on unattached drive set busy and not ready
  > check status tests wrong unit for write protect status
  > drive on line sets ATN, will set FLG if polling

- Functional and timing fixes to MS
  > fixed erroneous execution of rejected command
  > fixed erroneous execution of select-only command
  > fixed erroneous execution of clear command
  > fixed odd byte handling for read
  > fixed spurious odd byte status on 13183A EOF
  > modified handling of end of medium
  > added detailed timing, with fast and realistic modes
  > added reel sizes to simulate end of tape
  > added debug printouts

- Modified MT handling of end of medium

- Added tab to TTY control char set

2.3 VAX

- VAX RQ controllers start LUNs at 0 (from Andreas Cejna)
- Added compatibility mode definitions
- Fixed EMODD, EMODG to probe second longword of quadword destination
This commit is contained in:
Bob Supnik
2004-09-03 15:31:00 -07:00
committed by Mark Pizzolato
parent 2688f2d26e
commit 2e00e1122f
26 changed files with 1701 additions and 368 deletions

View File

@@ -25,6 +25,7 @@
cpu GRI-909 CPU
18-Jul-04 RMS Fixed missing ao_update calls in AX, AY write
17-Jul-04 RMS Revised MSR, EAO based on additional documentation
14-Mar-03 RMS Fixed bug in SC queue tracking
@@ -381,7 +382,7 @@ extern UNIT rtc_unit;
SC = SC & AMASK; /* load local PC */
reason = 0;
AO = ao_update (); /* update AO */
ao_update (); /* update AO */
sim_rtc_init (rtc_unit.wait); /* init calibration */
/* Main instruction fetch/decode loop */
@@ -517,7 +518,7 @@ else { SC = (SC + 1) & AMASK; /* incr SC */
/* Simulation halted */
AO = ao_update (); /* update AO */
ao_update (); /* update AO */
scq_r->qptr = scq_p; /* update sc q ptr */
return reason;
}
@@ -700,12 +701,12 @@ return SWR;
uint32 msr_rd (uint32 src)
{
return MSR;
return MSR & MSR_RW;
}
t_stat msr_wr (uint32 src, uint32 dat)
{
MSR = dat; /* new MSR */
MSR = dat & MSR_RW; /* new MSR */
ao_update (); /* update AOV */
return SCPE_OK;
}
@@ -714,28 +715,27 @@ return SCPE_OK;
uint32 ao_update (void)
{
int32 t;
int32 af = MSR_GET_FOA (MSR);
uint32 af = MSR_GET_FOA (MSR);
switch (af) {
case AO_ADD:
t = (AX + AY) & DMASK; /* add */
AO = (AX + AY) & DMASK; /* add */
break;
case AO_AND:
t = AX & AY; /* and */
AO = AX & AY; /* and */
break;
case AO_XOR: /* xor */
t = AX ^ AY;
AO = AX ^ AY;
break;
case AO_IOR:
t = AX | AY; /* or */
AO = AX | AY; /* or */
break; }
if ((AX + AY) & CBIT) MSR = MSR | MSR_AOV; /* always calc AOV */
else MSR = MSR & ~MSR_AOV;
if (SIGN & ((AX ^ (AX + AY)) & (~AX ^ AY))) /* always calc SOV */
MSR = MSR | MSR_SOV;
else MSR = MSR & ~MSR_SOV;
return t;
return AO;
}
uint32 ax_rd (uint32 src)
@@ -746,6 +746,7 @@ return AX;
t_stat ax_wr (uint32 dst, uint32 dat)
{
AX = dat;
ao_update ();
return SCPE_OK;
}
@@ -757,18 +758,19 @@ return AY;
t_stat ay_wr (uint32 dst, uint32 dat)
{
AY = dat;
ao_update ();
return SCPE_OK;
}
uint32 ao_rd (uint32 src)
{
AO = ao_update ();
return AO;
return ao_update ();
}
t_stat ao_fo (uint32 op)
{
uint32 t = OP_GET_FOA (op); /* get func */
MSR = MSR_PUT_FOA (MSR, t); /* store in MSR */
ao_update (); /* update AOV */
return SCPE_OK;

View File

@@ -43,13 +43,10 @@
overflow is handled. Answer: EAO is a package of ROM subroutines
with just four functions: multiply, divide, arithmetic right shift,
and normalize.
Outstanding issues:
1. Is there any interaction between the byte swapper and the byte packer?
2. Is SOV testable even if the FOA is not ADD?
3. How does the EAO handle divide overflow? Answer: set link.
4. What are the other EAO functions beside multiply and divide?
4. Is SOV testable even if the FOA is not ADD? Answer: AOV and SOV are
calculated regardless of the function.
5. How does the EAO handle divide overflow? Answer: set link.
6. What are the other EAO functions beside multiply and divide?
Answer: arithmetic right shift, normalize.
*/
@@ -172,11 +169,13 @@ struct gdev {
#define MSR_V_AOV 0 /* arith carry */
#define MSR_BOV (1u << MSR_V_BOV)
#define MSR_L (1u << MSR_V_L)
#define MSR_FOA (MSR_M_FOA << MSR_V_FOA)
#define MSR_SOV (1u << MSR_V_SOV)
#define MSR_AOV (1u << MSR_V_AOV)
#define MSR_GET_FOA(x) (((x) >> MSR_V_FOA) & MSR_M_FOA)
#define MSR_PUT_FOA(x,n) (((x) & ~(MSR_M_FOA << MSR_V_FOA)) | \
(((n) & MSR_M_FOA) << MSR_V_FOA))
#define MSR_RW (MSR_BOV|MSR_L|MSR_FOA|MSR_SOV|MSR_AOV)
/* Real time clock */