mirror of
https://github.com/simh/simh.git
synced 2026-05-04 06:58:38 +00:00
Notes For V3.9
The makefile now works for Linux and most Unix's. However, for Solaris and MacOS, you must first export the OSTYPE environment variable: > export OSTYPE > make Otherwise, you will get build errors. 1. New Features 1.1 3.9-0 1.1.1 SCP and libraries - added *nix READLINE support (Mark Pizzolato) - added "SHOW SHOW" and "SHOW <dev> SHOW" commands (Mark Pizzolato) - added support for BREAK key on Windows (Mark Pizzolato) 1.1.2 PDP-8 - floating point processor is now enabled 2. Bugs Fixed Please see the revision history on http://simh.trailing-edge.com or in the source module sim_rev.h. 3. Status Report This is the last release of SimH for which I will be sole editor. After this release, the source is moving to a public repository: under the general editorship of Dave Hittner and Mark Pizzolato. The status of the individual simulators is as follows: 3.1 PDP-1 Stable and working; runs available software. 3.2 PDP-4/7/9/15 Stable and working; runs available software. 3.3 PDP-8 Stable and working; runs available software. 3.4 PDP-10 [KS-10 only] Stable and working; runs available software. 3.5 PDP-11 Stable and working; runs available system software. The emulation of individual models has numerous errors of detail, which prevents many diagnostics from running correctly. 3.6 VAX-11/780 Stable and working; runs available software. 3.7 MicroVAX 3900 (VAX) Stable and working; runs available software. Thanks to the kind generosity of Camiel Vanderhoeven, this simulator has been verified with AXE, the VAX architectural exerciser. 3.8 Nova Stable and working; runs available software. 3.9 Eclipse Stable and working, but not really supported. There is no Eclipse-specific software available under a hobbyist license. 3.10 Interdata 16b Stable and working, but no software for it has been found, other than diagnostics. 3.11 Interdata 32b Stable and working; runs 32b UNIX and diagnostics. 3.12 IBM 1401 Stable and working; runs available software. 3.13 IBM 1620 Hand debug only. No software for it has been found or tested. 3.14 IBM 7094 Stable and working as a stock system; runs IBSYS. The CTSS extensions have not been debugged. 3.15 IBM S/3 Stable and working, but not really supported. Runs available software. 3.16 IBM 1130 Stable and working; runs available software. Supported and edited by Brian Knittel. 3.17 HP 2100/1000 Stable and working; runs available software. Supported and edited by Dave Bryan. 3.18 Honeywell 316/516 Stable and working; runs available software. 3.19 GRI-909/99 Hand debug only. No software for it has been found or tested. 3.20 SDS-940 Hand debug only, and a few diagnostics. 3.21 LGP-30 Unfinished; hand debug only. Does not run available software, probably due to my misunderstanding of the LGP-30 operational procedures. 3.22 Altair (original 8080 version) Stable and working, but not really supported. Runs available software. 3.23 AltairZ80 (Z80 version) Stable and working; runs available software. Supported and edited by Peter Schorn. 3.24 SWTP 6800 Stable and working; runs available software. Supported and edited by Bill Beech 3.25 Sigma 32b Incomplete; more work is needed on the peripherals for accuracy. 3.26 Alpha Incomplete; essentially just an EV-5 (21164) chip emulator. 4. Suggestions for Future Work 4.1 General Structure - Multi-threading, to allow true concurrency between SCP and the simulator - Graphics device support, particularly for the PDP-1 and PDP-11 4.2 Current Simulators - PDP-1 graphics, to run Space War - PDP-11 GT40 graphics, to run Lunar Lander - PDP-15 MUMPS-15 - Interdata native OS debug, both 16b and 32b - SDS 940 timesharing operating system debug - IBM 7094 CTSS feature debug and operating system debug - IBM 1620 debug and software - GRI-909 software - Sigma 32b completion and debug - LGP-30 debug 4.3 Possible Future Simulators - Data General MV8000 (if a hobbyist license can be obtained for AOS) - Alpha simulator - HP 3000 (16b) simulator with MPE
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
/* vax_octa.c - VAX octaword and h_floating instructions
|
||||
|
||||
Copyright (c) 2004-2008, Robert M Supnik
|
||||
Copyright (c) 2004-2011, Robert M Supnik
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the "Software"),
|
||||
@@ -25,6 +25,9 @@
|
||||
|
||||
This module simulates the VAX h_floating instruction set.
|
||||
|
||||
15-Sep-11 RMS Fixed integer overflow bug in EMODH
|
||||
Fixed POLYH normalizing before add mask bug
|
||||
(both from Camiel Vanderhoeven)
|
||||
28-May-08 RMS Inlined physical memory routines
|
||||
10-May-06 RMS Fixed bug in reported VA on faulting cross-page write
|
||||
03-May-06 RMS Fixed MNEGH to test negated sign, clear C
|
||||
@@ -93,7 +96,7 @@ void h_write_w (int32 spec, int32 va, int32 val, int32 acc);
|
||||
void h_write_l (int32 spec, int32 va, int32 val, int32 acc);
|
||||
void h_write_q (int32 spec, int32 va, int32 vl, int32 vh, int32 acc);
|
||||
void h_write_o (int32 spec, int32 va, int32 *val, int32 acc);
|
||||
void vax_hadd (UFPH *a, UFPH *b);
|
||||
void vax_hadd (UFPH *a, UFPH *b, uint32 mlo);
|
||||
void vax_hmul (UFPH *a, UFPH *b, uint32 mlo);
|
||||
void vax_hmod (UFPH *a, int32 *intgr, int32 *flg);
|
||||
void vax_hdiv (UFPH *a, UFPH *b);
|
||||
@@ -581,7 +584,7 @@ h_unpackh (&opnd[0], &a); /* unpack s1, s2 */
|
||||
h_unpackh (&opnd[4], &b);
|
||||
if (sub) /* sub? -s1 */
|
||||
a.sign = a.sign ^ FPSIGN;
|
||||
vax_hadd (&a, &b); /* do add */
|
||||
vax_hadd (&a, &b, 0); /* do add */
|
||||
return h_rpackh (&a, hflt); /* round and pack */
|
||||
}
|
||||
|
||||
@@ -643,7 +646,7 @@ for (i = 0; i < deg; i++) { /* loop */
|
||||
wd[3] = Read (ptr + 12, L_LONG, RD);
|
||||
ptr = ptr + 16;
|
||||
h_unpackh (wd, &c); /* unpack Cnext */
|
||||
vax_hadd (&r, &c); /* r = r + Cnext */
|
||||
vax_hadd (&r, &c, 1); /* r = r + Cnext */
|
||||
h_rpackh (&r, res); /* round and pack */
|
||||
}
|
||||
R[0] = res[0]; /* result */
|
||||
@@ -678,7 +681,7 @@ return h_rpackh (&a, hflt); /* round and pack frac *
|
||||
|
||||
/* Floating add */
|
||||
|
||||
void vax_hadd (UFPH *a, UFPH *b)
|
||||
void vax_hadd (UFPH *a, UFPH *b, uint32 mlo)
|
||||
{
|
||||
int32 ediff;
|
||||
UFPH t;
|
||||
@@ -703,6 +706,7 @@ if (a->sign ^ b->sign) { /* eff sub? */
|
||||
if (ediff) /* denormalize */
|
||||
qp_rsh_s (&b->frac, ediff, 1);
|
||||
qp_add (&a->frac, &b->frac); /* "add" frac */
|
||||
a->frac.f0 = a->frac.f0 & ~mlo; /* mask before norm */
|
||||
h_normh (a); /* normalize */
|
||||
}
|
||||
else {
|
||||
@@ -713,6 +717,7 @@ else {
|
||||
a->frac.f3 = a->frac.f3 | UH_NM_H; /* add norm bit */
|
||||
a->exp = a->exp + 1; /* incr exp */
|
||||
}
|
||||
a->frac.f0 = a->frac.f0 & ~mlo; /* mask */
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -778,7 +783,14 @@ else if (a->exp <= (H_BIAS + 128)) { /* in range? */
|
||||
a->exp = H_BIAS;
|
||||
}
|
||||
else {
|
||||
*intgr = 0; /* out of range */
|
||||
if (a->exp < (H_BIAS + 160)) { /* left shift needed? */
|
||||
ifr = a->frac;
|
||||
qp_lsh (&ifr, a->exp - H_BIAS - 128);
|
||||
*intgr = ifr.f0;
|
||||
}
|
||||
else *intgr = 0; /* out of range */
|
||||
if (a->sign)
|
||||
*intgr = -*intgr;
|
||||
a->frac.f0 = a->frac.f1 = 0; /* result 0 */
|
||||
a->frac.f2 = a->frac.f3 = 0;
|
||||
a->sign = a->exp = 0;
|
||||
|
||||
Reference in New Issue
Block a user