1
0
mirror of https://github.com/simh/simh.git synced 2026-01-26 04:01:38 +00:00

Notes For V3.3-2

1. New Features in 3.3-2

1.1 SCP and Libraries

- Added ASSERT command (from Dave Bryan)

1.2 PDP-11, VAX

- Added RA60, RA71, RA81 disks

2. Bugs Fixed in 3.3-2

2.1 H316

- Fixed IORETURN macro
- PT: fixed bug in OCP '0001 (found by Philipp Hachtmann)
- MT: fixed error reporting from OCP (found by Philipp Hachtmann)

2.2 Interdata 32b

- Fixed branches to mask new PC (from Greg Johnson)

2.3 PDP-11

- Fixed bugs in RESET for 11/70 (reported by Tim Chapman)
- Fixed bug in SHOW MODEL (from Sergey Okhapkin)
- Made SYSID variable for 11/70 (from Tim Chapman)
- Fixed MBRK write case for 11/70 (from Tim Chapman)
- RY: fixed bug in boot code (reported by Graham Toal)

2.4 VAX

- Fixed initial state of cpu_extmem

2.5 HP2100 (from Dave Bryan)

- Fixed missing MPCK on JRS target
- Removed EXECUTE instruction (is NOP in actual microcode)
- Fixed missing negative overflow renorm in StoreFP

2.6 I1401

- Fixed bug in line printer write line (reported by Van Snyder)
This commit is contained in:
Bob Supnik
2005-03-09 19:33:00 -08:00
committed by Mark Pizzolato
parent 9b5c8c9711
commit 098200a126
28 changed files with 1438 additions and 1138 deletions

View File

@@ -1,6 +1,6 @@
/* pdp11_cpu.c: PDP-11 CPU simulator
Copyright (c) 1993-2004, Robert M Supnik
Copyright (c) 1993-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"),
@@ -25,6 +25,7 @@
cpu PDP-11 CPU
19-Jan-05 RMS Fixed bug(s) in RESET for 11/70 (reported by Tim Chapman)
22-Dec-04 RMS Fixed WAIT to work in all modes (from John Dundas)
02-Oct-04 RMS Added model emulation
25-Jan-04 RMS Removed local debug logging support
@@ -796,11 +797,12 @@ case 000:
break;
case 5: /* RESET */
if (cm == MD_KER) {
reset_all (1);
PIRQ = 0;
reset_all (2); /* skip CPU, sys reg */
PIRQ = 0; /* clear PIRQ, STKLIM, */
STKLIM = 0; /* MMR0<15:12,0>, */
for (i = 0; i < IPL_HLVL; i++) int_req[i] = 0;
MMR0 = MMR0 & ~(MMR0_MME | MMR0_FREEZE);
MMR3 = 0;
MMR3 = 0; /* MMR3 */
trap_req = trap_req & ~TRAP_INT;
dsenable = calc_ds (cm); }
break;

View File

@@ -1,6 +1,6 @@
/* pdp11_cpumod.c: PDP-11 CPU model-specific features
Copyright (c) 2004, Robert M Supnik
Copyright (c) 2004-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"),
@@ -25,6 +25,9 @@
system PDP-11 model-specific registers
15-Feb-05 RMS Fixed bug in SHOW MODEL (from Sergey Okhapkin)
19-Jan-05 RMS Added variable SYSID, MBRK write (from Tim Chapman)
This module includes CPU- and system-specific registers, such as the Unibus
map and control registers on 22b Unibus systems, the board registers for the
F11- and J11-based systems, and the system registers for the PDP-11/44,
@@ -51,6 +54,7 @@
int32 SR = 0; /* switch register */
int32 DR = 0; /* display register */
int32 MBRK = 0; /* 11/70 microbreak */
int32 SYSID = 0x1234; /* 11/70 system ID */
int32 CPUERR = 0; /* CPU error reg */
int32 MEMERR = 0; /* memory error reg */
int32 CCR = 0; /* cache control reg */
@@ -249,6 +253,7 @@ REG sys_reg[] = {
{ ORDATA (HITMISS, HITMISS, 16) },
{ ORDATA (CPUERR, CPUERR, 16) },
{ ORDATA (MBRK, MBRK, 16) },
{ ORDATA (SYSID, SYSID, 16) },
{ ORDATA (JCSR, JCSR, 16) },
{ ORDATA (JPCR, JPCR, 16) },
{ ORDATA (JASR, JASR, 16) },
@@ -477,7 +482,7 @@ case 010: /* lower size */
*data = (MEMSIZE >> 6) - 1;
return SCPE_OK;
case 012: /* system ID */
*data = 0x1234;
*data = SYSID;
return SCPE_OK;
case 013: /* CPUERR */
*data = CPUERR & CPUE_IMP;
@@ -513,6 +518,9 @@ case 5: /* Hit/miss */
case 013: /* CPUERR */
CPUERR = 0;
return SCPE_OK;
case 014: /* MBRK */
MBRK = data;
return SCPE_OK;
case 015: /* PIRQ */
ODD_WO (data);
put_PIRQ (data);
@@ -876,12 +884,12 @@ return SCPE_OK;
t_stat cpu_show_model (FILE *st, UNIT *uptr, int32 val, void *desc)
{
uint32 i, std;
uint32 i, all_opt;
fprintf (st, "%s", cpu_tab[cpu_model].name);
std = cpu_tab[cpu_model].opt;
for (i = 0; std && opt_name[i]; i = i++) {
if ((std >> i) & 1) fprintf (st, ", %s",
all_opt = cpu_tab[cpu_model].opt;
for (i = 0; opt_name[2 * i] != NULL; i++) {
if ((all_opt >> i) & 1) fprintf (st, ", %s",
((cpu_opt >> i) & 1)? opt_name[2 * i]: opt_name[(2 * i) + 1]);
}
return SCPE_OK;

View File

@@ -1,14 +1,14 @@
To: Users
From: Bob Supnik
Subj: PDP-11 Simulator Usage
Date: 15-Nov-2004
Date: 20-Jan-2005
COPYRIGHT NOTICE
The following copyright notice applies to both the SIMH source and binary:
Original code published in 1993-2004, written by Robert M Supnik
Copyright (c) 1993-2004, Robert M Supnik
Original code published in 1993-2005, written by Robert M Supnik
Copyright (c) 1993-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"),
@@ -328,6 +328,7 @@ The SYSTEM device implements registers that vary from system to system:
11/83, 11/84, 11/93,
11/94
MBRK 11/45, 11/70 16 microbreak register
SYSID 11/70 16 system ID (default = 1234 hex)
JCSR 11/53, 11/73B, 11/83, 16 board control/status
11/84, 11/93, 11/94
JPCR 11/23+, 11/53, 11/73B, 16 page control register
@@ -983,13 +984,15 @@ of many disk types:
SET RQn RD53 set type to RD53
SET RQn RD54 set type to RD54
SET RQn RD31 set type to RD31
SET RQn RA81 set type to RA81
SET RQn RA82 set type to RA82
set RQn RA71 set type to RA71
SET RQn RA72 set type to RA72
SET RQn RA90 set type to RA90
SET RQn RA92 set type to RA92
SET RQn RRD40 set type to RRD40 (CD ROM)
SET RQn RAUSER{=n} set type to RA81 with n MB's
SET -L RQn RAUSER{=n} set type to RA81 with n LBN's
SET RQn RAUSER{=n} set type to RA82 with n MB's
SET -L RQn RAUSER{=n} set type to RA82 with n LBN's
The type options can be used only when a unit is not attached to a file.
RAUSER is a "user specified" disk; the user can specify the size of the

View File

@@ -1,6 +1,6 @@
/* pdp11_rq.c: MSCP disk controller simulator
Copyright (c) 2002-2004, Robert M Supnik
Copyright (c) 2002-2005, Robert M Supnik
Derived from work by Stephen F. Shirron
Permission is hereby granted, free of charge, to any person obtaining a
@@ -26,6 +26,7 @@
rq RQDX3 disk controller
17-Jan-05 RMS Added more RA and RD disks
31-Oct-04 RMS Added -L switch (LBNs) to RAUSER size specification
01-Oct-04 RMS Revised Unibus interface
Changed to identify as UDA50 in Unibus configurations
@@ -203,7 +204,7 @@ struct rqpkt {
#define RCT_ENTB 128 /* entries/blk */
#define RCT_END 0x80000000 /* marks RCT end */
/* The RQDX3 supports multiple disk drive types:
/* The RQDX3 supports multiple disk drive types (x = not implemented):
type sec surf cyl tpg gpc RCT LBNs
@@ -212,17 +213,23 @@ struct rqpkt {
RD51 18 4 306 4 1 36*4 21600
RD31 17 4 615 4 1 3*8 41560
RD52 17 8 512 8 1 4*8 60480
x RD32 17 6 820 ? ? ? 83236
x RD33 17 7 1170 ? ? ? 138565
RD53 17 7 1024 7 1 5*8 138672
RD54 17 15 1225 15 1 7*8 311200
The simulator also supports larger drives that only existed
on SDI controllers. XBN, DBN, RCTS and RCTC are not known
for the SDI drives and are not used by the simulator:
on SDI controllers.
RA82 57 15 1435 15 1 ?*8 1216665
RA72 51 20 1921? 20 1 ?*8 1953300
RA90 69 13 2656 13 1 ?*8 2376153
RA92 73 13 3101 13 1 ?*8 2940951
RA60 42(+1) 6 1600 6 1 1008 400176
x RA70 33(+1) 11 1507+ 11 1 ? 547041
RA81 51(+1) 14 1258 14 1 2856 891072
RA82 57(+1) 15 1435 15 1 3420 1216665
RA71 51(+1) 14 1921 14 1 1428 1367310
RA72 51(+1) 20 1921 20 1 2040 1953300
RA90 69(+1) 13 2656 13 1 1794 2376153
RA92 73(+1) 13 3101 13 1 949 2940951
x RA73 70(+1) 21 2667+ 21 1 ? 3920490
Each drive can be a different type. The drive field in the
unit flags specified the drive type and thus, indirectly,
@@ -351,11 +358,11 @@ struct rqpkt {
#define RA82_CYL 1435 /* 0-1422 user */
#define RA82_TPG RA82_SURF
#define RA82_GPC 1
#define RA82_XBN 3420 /* cyl 1427-1430 */
#define RA82_DBN 3420 /* cyl 1431-1434 */
#define RA82_XBN 3480 /* cyl 1427-1430 */
#define RA82_DBN 3480 /* cyl 1431-1434 */
#define RA82_LBN 1216665 /* 57*15*1423 */
#define RA82_RCTS 400 /* cyl 1423-1426 */
#define RA82_RCTC 8
#define RA82_RCTS 3420 /* cyl 1423-1426 */
#define RA82_RCTC 1
#define RA82_RBN 21345 /* 1 *15*1423 */
#define RA82_MOD 11
#define RA82_MED 0x25641052
@@ -383,11 +390,11 @@ struct rqpkt {
#define RA72_CYL 1921 /* 0-1914 user */
#define RA72_TPG RA72_SURF
#define RA72_GPC 1
#define RA72_XBN 2040 /* cyl 1917-1918? */
#define RA72_DBN 2040 /* cyl 1920-1921? */
#define RA72_XBN 2080 /* cyl 1917-1918? */
#define RA72_DBN 2080 /* cyl 1920-1921? */
#define RA72_LBN 1953300 /* 51*20*1915 */
#define RA72_RCTS 400 /* cyl 1915-1916? */
#define RA72_RCTC 5 /* ? */
#define RA72_RCTS 2040 /* cyl 1915-1916? */
#define RA72_RCTC 1
#define RA72_RBN 38300 /* 1 *20*1915 */
#define RA72_MOD 37
#define RA72_MED 0x25641048
@@ -399,11 +406,11 @@ struct rqpkt {
#define RA90_CYL 2656 /* 0-2648 user */
#define RA90_TPG RA90_SURF
#define RA90_GPC 1
#define RA90_XBN 1794 /* cyl 2651-2652? */
#define RA90_DBN 1794 /* cyl 2653-2654? */
#define RA90_XBN 1820 /* cyl 2651-2652? */
#define RA90_DBN 1820 /* cyl 2653-2654? */
#define RA90_LBN 2376153 /* 69*13*2649 */
#define RA90_RCTS 400 /* cyl 2649-2650? */
#define RA90_RCTC 6 /* ? */
#define RA90_RCTS 1794 /* cyl 2649-2650? */
#define RA90_RCTC 1
#define RA90_RBN 34437 /* 1 *13*2649 */
#define RA90_MOD 19
#define RA90_MED 0x2564105A
@@ -416,10 +423,10 @@ struct rqpkt {
#define RA92_TPG RA92_SURF
#define RA92_GPC 1
#define RA92_XBN 174 /* cyl 3100? */
#define RA92_DBN 775
#define RA92_DBN 788
#define RA92_LBN 2940951 /* 73*13*3099 */
#define RA92_RCTS 316 /* cyl 3099? */
#define RA92_RCTC 3 /* ? */
#define RA92_RCTS 949 /* cyl 3099? */
#define RA92_RCTC 1
#define RA92_RBN 40287 /* 1 *13*3099 */
#define RA92_MOD 29
#define RA92_MED 0x2564105C
@@ -444,6 +451,54 @@ struct rqpkt {
#define RA8U_MAXC 4000000 /* max cap LBNs */
#define RA8U_EMAXC 2000000000 /* ext max cap */
#define RA60_DTYPE 13 /* SDI drive */
#define RA60_SECT 42 /* +1 spare/track */
#define RA60_SURF 6
#define RA60_CYL 1600 /* 0-1587 user */
#define RA60_TPG RA60_SURF
#define RA60_GPC 1
#define RA60_XBN 1032 /* cyl 1592-1595 */
#define RA60_DBN 1032 /* cyl 1596-1599 */
#define RA60_LBN 400176 /* 42*6*1588 */
#define RA60_RCTS 1008 /* cyl 1588-1591 */
#define RA60_RCTC 1
#define RA60_RBN 9528 /* 1 *6*1588 */
#define RA60_MOD 4
#define RA60_MED 0x22A4103C
#define RA60_FLGS (RQDF_RMV | RQDF_SDI)
#define RA81_DTYPE 14 /* SDI drive */
#define RA81_SECT 51 /* +1 spare/track */
#define RA81_SURF 14
#define RA81_CYL 1258 /* 0-1247 user */
#define RA81_TPG RA81_SURF
#define RA81_GPC 1
#define RA81_XBN 2436 /* cyl 1252-1254? */
#define RA81_DBN 2436 /* cyl 1255-1256? */
#define RA81_LBN 891072 /* 51*14*1248 */
#define RA81_RCTS 2856 /* cyl 1248-1251? */
#define RA81_RCTC 1
#define RA81_RBN 17472 /* 1 *14*1248 */
#define RA81_MOD 5
#define RA81_MED 0x25641051
#define RA81_FLGS RQDF_SDI
#define RA71_DTYPE 15 /* SDI drive */
#define RA71_SECT 51 /* +1 spare/track */
#define RA71_SURF 14
#define RA71_CYL 1921 /* 0-1914 user */
#define RA71_TPG RA71_SURF
#define RA71_GPC 1
#define RA71_XBN 1456 /* cyl 1917-1918? */
#define RA71_DBN 1456 /* cyl 1919-1920? */
#define RA71_LBN 1367310 /* 51*14*1915 */
#define RA71_RCTS 1428 /* cyl 1915-1916? */
#define RA71_RCTC 1
#define RA71_RBN 26810 /* 1 *14*1915 */
#define RA71_MOD 40
#define RA71_MED 0x25641047
#define RA71_FLGS RQDF_SDI
struct drvtyp {
int32 sect; /* sectors */
int32 surf; /* surfaces */
@@ -476,7 +531,9 @@ static struct drvtyp drv_tab[] = {
{ RQ_DRV (RD54), "RD54" }, { RQ_DRV (RA82), "RA82" },
{ RQ_DRV (RRD40), "RRD40" }, { RQ_DRV (RA72), "RA72" },
{ RQ_DRV (RA90), "RA90" }, { RQ_DRV (RA92), "RA92" },
{ RQ_DRV (RA8U), "RAUSER" }, { 0 } };
{ RQ_DRV (RA8U), "RAUSER" }, { RQ_DRV (RA60), "RA60" },
{ RQ_DRV (RA81), "RA81" }, { RQ_DRV (RA71), "RA71" },
{ 0 } };
extern int32 int_req[IPL_HLVL];
extern int32 tmr_poll, clk_tps;
@@ -666,12 +723,18 @@ MTAB rq_mod[] = {
&rq_set_type, NULL, NULL },
{ MTAB_XTD | MTAB_VUN, RD54_DTYPE, NULL, "RD54",
&rq_set_type, NULL, NULL },
{ MTAB_XTD | MTAB_VUN, RA60_DTYPE, NULL, "RA60",
&rq_set_type, NULL, NULL },
{ MTAB_XTD | MTAB_VUN, RA81_DTYPE, NULL, "RA81",
&rq_set_type, NULL, NULL },
{ MTAB_XTD | MTAB_VUN, RA82_DTYPE, NULL, "RA82",
&rq_set_type, NULL, NULL },
{ MTAB_XTD | MTAB_VUN, RRD40_DTYPE, NULL, "RRD40",
&rq_set_type, NULL, NULL },
{ MTAB_XTD | MTAB_VUN, RRD40_DTYPE, NULL, "CDROM",
&rq_set_type, NULL, NULL },
{ MTAB_XTD | MTAB_VUN, RA71_DTYPE, NULL, "RA71",
&rq_set_type, NULL, NULL },
{ MTAB_XTD | MTAB_VUN, RA72_DTYPE, NULL, "RA72",
&rq_set_type, NULL, NULL },
{ MTAB_XTD | MTAB_VUN, RA90_DTYPE, NULL, "RA90",
@@ -2028,7 +2091,7 @@ uint32 cap;
uint32 max = sim_taddr_64? RA8U_EMAXC: RA8U_MAXC;
t_stat r;
if ((val < 0) || (val > RA8U_DTYPE) || ((val != RA8U_DTYPE) && cptr))
if ((val < 0) || ((val != RA8U_DTYPE) && cptr))
return SCPE_ARG;
if (uptr->flags & UNIT_ATT) return SCPE_ALATT;
if (cptr) {

View File

@@ -1,6 +1,6 @@
/* pdp11_ry.c: RX211/RXV21/RX02 floppy disk simulator
Copyright (c) 1993-2004, Robert M Supnik
Copyright (c) 1993-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"),
@@ -25,6 +25,7 @@
ry RX211/RXV21/RX02 floppy disk
18-Feb-05 RMS Fixed bug in boot code (reported by Graham Toal)
30-Sep-04 RMS Revised Unibus interface
21-Mar-04 RMS Added VAX support
29-Dec-03 RMS Added RXV21 support
@@ -575,6 +576,7 @@ static const uint16 boot_rom[] = {
0032711, 0000040, /* RD: BIT #40, (R1) ; ready? */
0001775, /* BEQ .-4 */
0012746, 0000007, /* MOV #READ+GO, -(SP) */
0050316, /* BIS R3, (SP) ; or unit */
0050416, /* BIS R4, (SP) ; or density */
0012611, /* MOV (SP)+, (R1) ; read & go */
0105711, /* TSTB (R1) ; xfr ready? */
@@ -588,7 +590,7 @@ static const uint16 boot_rom[] = {
0005711, /* TST (R1) ; error? */
0100003, /* BEQ OK */
0005704, /* TST R4 ; single? */
0001346, /* BNE DN ; no, try again */
0001345, /* BNE DN ; no, try again */
0000000, /* HALT ; dead */
0012746, 0000003, /* OK: MOV #EMPTY+GO, -(SP); empty & go */
0050416, /* BIS R4, (SP) ; or density */
@@ -609,7 +611,7 @@ static const uint16 boot_rom[] = {
0062602, /* ADD (SP)+, R2 ; adv buf addr */
0122525, /* CMPB (R5)+, (R5)+ ; sect += 2 */
0020527, 0000007, /* CMP R5, #7 ; end? */
0101716, /* BLOS RD ; read next */
0101715, /* BLOS RD ; read next */
0005002, /* CLR R2 */
0005003, /* CLR R3 */
0012704, BOOT_START+020, /* MOV #START+20, R4 */