mirror of
https://github.com/open-simh/simh.git
synced 2026-01-22 10:40:53 +00:00
Updated HP2100 from Dave Bryan
This commit is contained in:
parent
ca49c8c0b1
commit
d940752232
@ -1,6 +1,6 @@
|
||||
HP 2100 SIMULATOR BUG FIX WRITEUPS
|
||||
==================================
|
||||
Last update: 2012-05-07
|
||||
Last update: 2012-12-17
|
||||
|
||||
|
||||
1. PROBLEM: Booting from magnetic tape reports "HALT instruction, P: 77756
|
||||
@ -6305,4 +6305,48 @@
|
||||
if the seek would fail, and modify "complete_read" (hp2100_di_da.c) to
|
||||
cancel the intersector delay and schedule the completion phase immediately.
|
||||
|
||||
STATUS: Patches prepared 2012-05-07.
|
||||
STATUS: Fixed in version 4.0-0.
|
||||
|
||||
|
||||
|
||||
248. PROBLEM: Calling a VMA routine from a non-VMA program does not MP abort.
|
||||
|
||||
VERSION: 3.9-0
|
||||
|
||||
OBSERVATION: If a virtual memory routine, such as .LBP, is called from a
|
||||
non-VMA program, it should be aborted with a memory protect error.
|
||||
Instead, a dynamic mapping error occurs instead:
|
||||
|
||||
ASMB,R
|
||||
NAM MAPPR
|
||||
EXT EXEC,.LBP
|
||||
START CLA
|
||||
CLB
|
||||
JSB .LBP
|
||||
NOP
|
||||
JSB EXEC
|
||||
DEF *+2
|
||||
DEF *+1
|
||||
DEC 6
|
||||
END START
|
||||
|
||||
DM VIOL = 160377
|
||||
DM INST = 105257
|
||||
ABE 0 0 0
|
||||
XYO 0 0 0
|
||||
DM MAPPR 2014
|
||||
MAPPR ABORTED
|
||||
|
||||
CAUSE: The page mapping routine, "cpu_vma_mapte", returns TRUE if the page
|
||||
table is set up and valid and FALSE if not. If a program is not a VMA
|
||||
program, then it has no page table, but "cpu_vma_mapte" is returning TRUE
|
||||
erroneously. That results in a DM error when the invalid page entry is
|
||||
used.
|
||||
|
||||
The microcode explicitly tests for a non-VMA program, i.e., one with no ID
|
||||
extension, and generates an MP error in this case.
|
||||
|
||||
RESOLUTION: Modify "cpu_vma_mapte" (hp2100_cpu5.c) to return FALSE if
|
||||
called for a non-VMA program.
|
||||
|
||||
STATUS: Fixed in version 4.0-0.
|
||||
|
||||
@ -26,6 +26,7 @@
|
||||
|
||||
CPU5 RTE-6/VM and RTE-IV firmware option instructions
|
||||
|
||||
17-Dec-12 JDB Fixed cpu_vma_mapte to return FALSE if not a VMA program
|
||||
09-May-12 JDB Separated assignments from conditional expressions
|
||||
23-Mar-12 JDB Added sign extension for dim count in "cpu_ema_resolve"
|
||||
28-Dec-11 JDB Eliminated unused variable in "cpu_ema_vset"
|
||||
@ -333,8 +334,13 @@ uint32 dispatch = ReadIO(vswp,UMAP) & 01777; /* get fresh dispatch flag *
|
||||
t_bool swapflag = TRUE;
|
||||
|
||||
if (dispatch == 0) { /* not yet set */
|
||||
idext = ReadIO(idx,UMAP); /* go into IDsegment extent */
|
||||
if (idext != 0) { /* is ema/vma program? */
|
||||
idext = ReadIO(idx,UMAP); /* go into ID segment extent */
|
||||
if (idext == 0) { /* is ema/vma program? */
|
||||
swapflag = FALSE; /* no, so mark PTE as invalid */
|
||||
*ptepg = (uint32) -1; /* and return an invalid page number */
|
||||
}
|
||||
|
||||
else { /* is an EMA/VMA program */
|
||||
dispatch = ReadWA(idext+1) & 01777; /* get 1st ema page: new vswp */
|
||||
WriteIO(vswp,dispatch,UMAP); /* move into $VSWP */
|
||||
idext2 = ReadWA(idext+2); /* get swap bit */
|
||||
@ -347,7 +353,7 @@ if (dispatch) { /* some page is defined */
|
||||
*ptepg = dispatch; /* return PTEPG# for later */
|
||||
}
|
||||
|
||||
return swapflag; /* true for swap bit set */
|
||||
return swapflag; /* true for valid PTE */
|
||||
}
|
||||
|
||||
/* .LBP
|
||||
|
||||
@ -23,9 +23,8 @@
|
||||
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.
|
||||
|
||||
14-Dec-12 JDB Added "-Wbitwise-op-parentheses" to the suppression pragmas
|
||||
12-May-12 JDB Added pragmas to suppress logical operator precedence warnings
|
||||
12-Feb-12 JDB Added MA device select code assignment
|
||||
Added ma_boot_ext() declaration
|
||||
10-Feb-12 JDB Added hp_setsc, hp_showsc functions to support SC modifier
|
||||
28-Mar-11 JDB Tidied up signal handling
|
||||
29-Oct-10 JDB DMA channels renamed from 0,1 to 1,2 to match documentation
|
||||
@ -187,7 +186,6 @@ typedef enum { INITIAL, SERVICE } POLLMODE; /* poll synchronization
|
||||
#define MUXC 042 /* 12920A control */
|
||||
#define DI_DA 043 /* 12821A Disc Interface with Amigo disc devices */
|
||||
#define DI_DC 044 /* 12821A Disc Interface with CS/80 disc and tape devices */
|
||||
#define DI_MA 045 /* 12821A Disc Interface with Amigo mag tape devices */
|
||||
|
||||
#define OPTDEV 002 /* start of optional devices */
|
||||
#define CRSDEV 006 /* start of devices that receive CRS */
|
||||
@ -478,7 +476,6 @@ extern t_stat hp_showdev (FILE *st, UNIT *uptr, int32 val, void *desc);
|
||||
|
||||
/* Device-specific functions */
|
||||
|
||||
extern int32 sync_poll (POLLMODE poll_mode);
|
||||
extern t_stat ma_boot_ext (uint32 SR);
|
||||
extern int32 sync_poll (POLLMODE poll_mode);
|
||||
|
||||
#endif
|
||||
|
||||
@ -26,6 +26,7 @@
|
||||
DP 12557A 2871 disk subsystem
|
||||
13210A 7900 disk subsystem
|
||||
|
||||
18-Dec-12 MP Now calls sim_activate_time to get remaining seek time
|
||||
09-May-12 JDB Separated assignments from conditional expressions
|
||||
10-Feb-12 JDB Deprecated DEVNO in favor of SC
|
||||
Added CNTLR_TYPE cast to dp_settype
|
||||
|
||||
@ -26,6 +26,7 @@
|
||||
|
||||
DQ 12565A 2883 disk system
|
||||
|
||||
18-Dec-12 MP Now calls sim_activate_time to get remaining seek time
|
||||
09-May-12 JDB Separated assignments from conditional expressions
|
||||
10-Feb-12 JDB Deprecated DEVNO in favor of SC
|
||||
28-Mar-11 JDB Tidied up signal handling
|
||||
|
||||
@ -28,6 +28,7 @@
|
||||
TTY 12531C buffered teleprinter interface
|
||||
CLK 12539C time base generator
|
||||
|
||||
18-Dec-12 MP Now calls sim_activate_time to get remaining poll time
|
||||
09-May-12 JDB Separated assignments from conditional expressions
|
||||
12-Feb-12 JDB Add TBG as a logical name for the CLK device
|
||||
10-Feb-12 JDB Deprecated DEVNO in favor of SC
|
||||
|
||||
@ -24,6 +24,7 @@
|
||||
used in advertising or otherwise to promote the sale, use or other dealings
|
||||
in this Software without prior written authorization from the authors.
|
||||
|
||||
20-Dec-12 JDB sim_is_active() now returns t_bool
|
||||
24-Oct-12 JDB Changed CNTLR_OPCODE to title case to avoid name clash
|
||||
07-May-12 JDB Corrected end-of-track delay time logic
|
||||
02-May-12 JDB First release
|
||||
@ -773,7 +774,7 @@ else if (uptr) { /* otherwise, we have a
|
||||
uptr->wait = cvptr->cmd_time; /* most commands use the command delay */
|
||||
|
||||
if (props->unit_access) { /* does the command access the unit? */
|
||||
is_seeking = sim_activate_time (uptr) != 0; /* see if the unit is busy */
|
||||
is_seeking = sim_is_active (uptr); /* see if the unit is busy */
|
||||
|
||||
if (is_seeking) /* if a seek is in progress, */
|
||||
uptr->wait = 0; /* set for no unit activation */
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user