mirror of
https://github.com/simh/simh.git
synced 2026-02-12 19:08:41 +00:00
Notes For V3.5-0
The source set has been extensively overhauled. For correct viewing, set Visual C++ or Emacs to have tab stops every 4 characters. 1. New Features in 3.4-1 1.1 All Ethernet devices - Added Windows user-defined adapter names (from Timothe Litt) 1.2 Interdata, SDS, HP, PDP-8, PDP-18b terminal multiplexors - Added support for SET <unit>n DISCONNECT 1.3 VAX - Added latent QDSS support - Revised autoconfigure to handle QDSS 1.4 PDP-11 - Revised autoconfigure to handle more casees 2. Bugs Fixed in 3.4-1 2.1 SCP and libraries - Trim trailing spaces on all input (for example, attach file names) - Fixed sim_sock spurious SIGPIPE error in Unix/Linux - Fixed sim_tape misallocation of TPC map array for 64b simulators 2.2 1401 - Fixed bug, CPU reset was clearing SSB through SSG 2.3 PDP-11 - Fixed bug in VH vector display routine - Fixed XU runt packet processing (found by Tim Chapman) 2.4 Interdata - Fixed bug in SHOW PAS CONN/STATS - Fixed potential integer overflow exception in divide 2.5 SDS - Fixed bug in SHOW MUX CONN/STATS 2.6 HP - Fixed bug in SHOW MUX CONN/STATS 2.7 PDP-8 - Fixed bug in SHOW TTIX CONN/STATS - Fixed bug in SET/SHOW TTOXn LOG 2.8 PDP-18b - Fixed bug in SHOW TTIX CONN/STATS - Fixed bug in SET/SHOW TTOXn LOG 2.9 Nova, Eclipse - Fixed potential integer overflow exception in divide
This commit is contained in:
committed by
Mark Pizzolato
parent
ec60bbf329
commit
b7c1eae41f
@@ -1,6 +1,6 @@
|
||||
/* id32_dboot.c: Interdata 32b simulator disk bootstrap
|
||||
|
||||
Copyright (c) 2000-2004, Robert M. Supnik
|
||||
Copyright (c) 2000-2005, 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"),
|
||||
@@ -19,18 +19,18 @@
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
Except as contained in this notice, the name of Robert M Supnik shall not
|
||||
be used in advertising or otherwise to promote the sale, use or other dealings
|
||||
Except as contained in this notice, the name of Robert M Supnik shall not 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.
|
||||
|
||||
17-Feb-03 RMS Fixed for UNIX bootstrap, upper platter bootstrap
|
||||
17-Feb-03 RMS Fixed for UNIX bootstrap, upper platter bootstrap
|
||||
*/
|
||||
|
||||
#include "id_defs.h"
|
||||
|
||||
#define DBOOT_BEG 0x1000
|
||||
#define DBOOT_START 0x100E
|
||||
#define DBOOT_LEN (sizeof (dboot_rom) / sizeof (uint8))
|
||||
#define DBOOT_BEG 0x1000
|
||||
#define DBOOT_START 0x100E
|
||||
#define DBOOT_LEN (sizeof (dboot_rom) / sizeof (uint8))
|
||||
|
||||
/* Transcribed from 32b Bootstrap Loader, 03-074N81R03A13 */
|
||||
|
||||
@@ -252,35 +252,36 @@ static uint8 dboot_rom[] = {
|
||||
0x00, 0x40,
|
||||
0x00, 0x40,
|
||||
0x00
|
||||
};
|
||||
};
|
||||
|
||||
/* Lower memory setup
|
||||
|
||||
78 = binary input device address
|
||||
79 = binary device input command
|
||||
7A = disk device number
|
||||
7B = device code
|
||||
7C = disk controller address
|
||||
7D = selector channel address
|
||||
7E:7F = operating system extension (user specified)
|
||||
78 = binary input device address
|
||||
79 = binary device input command
|
||||
7A = disk device number
|
||||
7B = device code
|
||||
7C = disk controller address
|
||||
7D = selector channel address
|
||||
7E:7F = operating system extension (user specified)
|
||||
*/
|
||||
|
||||
struct dboot_id {
|
||||
char *name;
|
||||
uint32 sw;
|
||||
uint32 cap;
|
||||
uint32 dtype;
|
||||
uint32 offset;
|
||||
uint32 adder;
|
||||
};
|
||||
char *name;
|
||||
uint32 sw;
|
||||
uint32 cap;
|
||||
uint32 dtype;
|
||||
uint32 offset;
|
||||
uint32 adder;
|
||||
};
|
||||
|
||||
static struct dboot_id dboot_tab[] = {
|
||||
{ "DP", 0, 2, 0x31, o_DP0, 0 },
|
||||
{ "DP", SWMASK ('F'), 9, 0x32, o_DP0, o_DPF },
|
||||
{ "DP", 0, 9, 0x33, o_DP0, 0 },
|
||||
{ "DM", 0, 64, 0x35, o_ID0, 0 },
|
||||
{ "DM", 0, 244, 0x36, o_ID0, 0 },
|
||||
{ NULL } };
|
||||
{ "DP", 0, 2, 0x31, o_DP0, 0 },
|
||||
{ "DP", SWMASK ('F'), 9, 0x32, o_DP0, o_DPF },
|
||||
{ "DP", 0, 9, 0x33, o_DP0, 0 },
|
||||
{ "DM", 0, 64, 0x35, o_ID0, 0 },
|
||||
{ "DM", 0, 244, 0x36, o_ID0, 0 },
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
t_stat id_dboot (int32 u, DEVICE *dptr)
|
||||
{
|
||||
@@ -290,27 +291,29 @@ extern int32 sim_switches;
|
||||
uint32 i, typ, ctlno, off, add, cap, sch_dev;
|
||||
UNIT *uptr;
|
||||
|
||||
DIB *ddib = (DIB *) dptr->ctxt; /* get disk DIB */
|
||||
ctlno = ddib->dno; /* get ctrl devno */
|
||||
sch_dev = sch_dib.dno + ddib->sch; /* sch dev # */
|
||||
uptr = dptr->units + u; /* get capacity */
|
||||
DIB *ddib = (DIB *) dptr->ctxt; /* get disk DIB */
|
||||
ctlno = ddib->dno; /* get ctrl devno */
|
||||
sch_dev = sch_dib.dno + ddib->sch; /* sch dev # */
|
||||
uptr = dptr->units + u; /* get capacity */
|
||||
cap = uptr->capac >> 20;
|
||||
for (i = typ = 0; dboot_tab[i].name != NULL; i++) {
|
||||
if ((strcmp (dboot_tab[i].name, dptr->name) == 0) &&
|
||||
((dboot_tab[i].sw == 0) || (dboot_tab[i].sw & sim_switches)) &&
|
||||
(dboot_tab[i].cap == cap)) {
|
||||
typ = dboot_tab[i].dtype;
|
||||
off = dboot_tab[i].offset;
|
||||
add = dboot_tab[i].adder;
|
||||
break; } }
|
||||
if ((strcmp (dboot_tab[i].name, dptr->name) == 0) &&
|
||||
((dboot_tab[i].sw == 0) || (dboot_tab[i].sw & sim_switches)) &&
|
||||
(dboot_tab[i].cap == cap)) {
|
||||
typ = dboot_tab[i].dtype;
|
||||
off = dboot_tab[i].offset;
|
||||
add = dboot_tab[i].adder;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (typ == 0) return SCPE_NOFNC;
|
||||
|
||||
IOWriteBlk (DBOOT_BEG, DBOOT_LEN, dboot_rom); /* copy boot */
|
||||
IOWriteB (AL_DEV, ttp_dib.dno); /* bin input dev */
|
||||
IOWriteBlk (DBOOT_BEG, DBOOT_LEN, dboot_rom); /* copy boot */
|
||||
IOWriteB (AL_DEV, ttp_dib.dno); /* bin input dev */
|
||||
IOWriteB (AL_IOC, 0xa3);
|
||||
IOWriteB (AL_DSKU, ctlno + ((u + 1) * off) + add); /* disk dev addr */
|
||||
IOWriteB (AL_DSKT, typ); /* disk type */
|
||||
IOWriteB (AL_DSKC, ctlno); /* disk ctl addr */
|
||||
IOWriteB (AL_DSKU, ctlno + ((u + 1) * off) + add); /* disk dev addr */
|
||||
IOWriteB (AL_DSKT, typ); /* disk type */
|
||||
IOWriteB (AL_DSKC, ctlno); /* disk ctl addr */
|
||||
IOWriteB (AL_SCH, sch_dev);
|
||||
PC = DBOOT_START;
|
||||
return SCPE_OK;
|
||||
|
||||
Reference in New Issue
Block a user