mirror of
https://github.com/simh/simh.git
synced 2026-01-25 19:56:25 +00:00
Bob Supnik's state as of 10/12/2013
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
/* pdp10_defs.h: PDP-10 simulator definitions
|
||||
|
||||
Copyright (c) 1993-2010, Robert M Supnik
|
||||
Copyright (c) 1993-2013, 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"),
|
||||
@@ -23,6 +23,7 @@
|
||||
used in advertising or otherwise to promote the sale, use or other dealings
|
||||
in this Software without prior written authorization from Robert M Supnik.
|
||||
|
||||
30-Jun-13 RMS Fixed IPL4 mask definition (Tim Litt)
|
||||
22-May-10 RMS Added check for 64b addresses
|
||||
01-Feb-07 RMS Added CD support
|
||||
29-Oct-06 RMS Added clock coscheduling function
|
||||
@@ -734,7 +735,7 @@ typedef struct pdp_dib DIB;
|
||||
#define INT_IPL7 0x0000000F /* int level masks */
|
||||
#define INT_IPL6 0x000000F0
|
||||
#define INT_IPL5 0x000FFF00
|
||||
#define INT_IPL4 0x3FF00000
|
||||
#define INT_IPL4 0x7FF00000
|
||||
|
||||
#define VEC_Q 0000 /* vector base */
|
||||
#define VEC_PTR 0070 /* interrupt vectors */
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* pdp10_ksio.c: PDP-10 KS10 I/O subsystem simulator
|
||||
|
||||
Copyright (c) 1993-2008, Robert M Supnik
|
||||
Copyright (c) 1993-2013, 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 @@
|
||||
|
||||
uba Unibus adapters
|
||||
|
||||
27-May-13 RMS Fixed bugs in Unibus adapter code
|
||||
22-Sep-05 RMS Fixed declarations (from Sterling Garwood)
|
||||
25-Jan-04 RMS Added stub floating address routine
|
||||
12-Mar-03 RMS Added logical name support
|
||||
@@ -429,7 +430,14 @@ for (i = 0; dibp = dib_tab[i]; i++ ) {
|
||||
UBNXM_FAIL (pa, mode);
|
||||
}
|
||||
|
||||
/* Mapped read and write routines - used by standard Unibus devices on Unibus 1 */
|
||||
/* Mapped read and write routines - used by standard Unibus devices on Unibus 1
|
||||
The only devices that use these routines are standard 16b Unibus devices.
|
||||
18b Unibus devices (the RP and TU) do their own reads and writes.
|
||||
|
||||
These routines would be more efficient if Map_Addr10 was only called
|
||||
at a page boundary, but I don't think it's worth the added complexity.
|
||||
|
||||
The upper two bits of the 18b halfword are not preserved on writes to memory. */
|
||||
|
||||
a10 Map_Addr10 (a10 ba, int32 ub)
|
||||
{
|
||||
@@ -493,7 +501,7 @@ for ( ; ba < lim; ba++) { /* by bytes */
|
||||
}
|
||||
mask = 0377;
|
||||
M[pa10] = (M[pa10] & ~(mask << ubashf[ba & 3])) |
|
||||
(((d10) *buf++) << ubashf[ba & 3]);
|
||||
(((d10) (*buf++ & 0377)) << ubashf[ba & 3]);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -506,16 +514,16 @@ d10 val;
|
||||
|
||||
ba = ba & ~01; /* align start */
|
||||
lim = ba + (bc & ~01);
|
||||
for ( ; ba < lim; ba++) { /* by bytes */
|
||||
for ( ; ba < lim; ba = ba + 2) { /* by words */
|
||||
pa10 = Map_Addr10 (ba, 1); /* map addr */
|
||||
if ((pa10 < 0) || MEM_ADDR_NXM (pa10)) { /* inv map or NXM? */
|
||||
ubcs[1] = ubcs[1] | UBCS_TMO; /* UBA times out */
|
||||
return (lim - ba); /* return bc */
|
||||
}
|
||||
val = *buf++; /* get data */
|
||||
val = (*buf++) & 0177777; /* get 16b data */
|
||||
if (ba & 2)
|
||||
M[pa10] = (M[pa10] & 0777777600000) | val;
|
||||
else M[pa10] = (M[pa10] & 0600000777777) | (val << 18);
|
||||
M[pa10] = (M[pa10] & 0777777000000) | val;
|
||||
else M[pa10] = (M[pa10] & 0000000777777) | (val << 18);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* pdp10_rp.c - RH11/RP04/05/06/07 RM02/03/05/80 "Massbus" disk controller
|
||||
|
||||
Copyright (c) 1993-2008, Robert M Supnik
|
||||
Copyright (c) 1993-2012, 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,8 @@
|
||||
|
||||
rp RH/RP/RM moving head disks
|
||||
|
||||
17-Mar-13 RMS Fixed incorrect copy/paste from pdp11_rp.c
|
||||
08-Dec-12 RMS UNLOAD does not set ATTN (Mark Pizzolato)
|
||||
12-Nov-05 RMS Fixed DCLR not to clear drive address
|
||||
07-Jul-05 RMS Removed extraneous externs
|
||||
18-Mar-05 RMS Added attached test to detach routine
|
||||
@@ -32,7 +34,7 @@
|
||||
04-Jan-04 RMS Changed sim_fsize calling sequence
|
||||
23-Jul-03 RMS Fixed bug in read header stub
|
||||
25-Apr-03 RMS Revised for extended file support
|
||||
21-Nov-02 RMS Fixed bug in bootstrap (reported by Michael Thompson)
|
||||
21-Nov-02 RMS Fixed bug in bootstrap (Michael Thompson)
|
||||
29-Sep-02 RMS Added variable vector support
|
||||
New data structures
|
||||
30-Nov-01 RMS Added read only unit, extended SET/SHOW support support
|
||||
@@ -45,7 +47,7 @@
|
||||
28-Sep-01 RMS Fixed interrupt handling for SC/ATA
|
||||
23-Aug-01 RMS Added read/write header stubs for ITS
|
||||
(found by Mirian Crzig Lennox)
|
||||
13-Jul-01 RMS Changed fread call to fxread (found by Peter Schorn)
|
||||
13-Jul-01 RMS Changed fread call to fxread (Peter Schorn)
|
||||
14-May-01 RMS Added check for unattached drive
|
||||
|
||||
The "Massbus style" disks consisted of several different large
|
||||
@@ -807,6 +809,13 @@ switch (fnc) { /* case on function */
|
||||
return;
|
||||
|
||||
case FNC_UNLOAD: /* unload */
|
||||
if (drv_tab[dtype].ctrl == MBA_RM_CTRL) { /* RM? */
|
||||
set_rper (ER1_ILF, drv); /* not supported */
|
||||
break;
|
||||
}
|
||||
rp_detach (uptr); /* detach unit */
|
||||
return;
|
||||
|
||||
case FNC_RECAL: /* recalibrate */
|
||||
dc = 0; /* seek to 0 */
|
||||
case FNC_SEEK: /* seek */
|
||||
@@ -1155,6 +1164,7 @@ return SCPE_OK;
|
||||
t_stat rp_detach (UNIT *uptr)
|
||||
{
|
||||
int32 drv;
|
||||
extern int32 sim_is_running;
|
||||
|
||||
if (!(uptr->flags & UNIT_ATT)) /* attached? */
|
||||
return SCPE_OK;
|
||||
@@ -1167,7 +1177,8 @@ if (sim_is_active (uptr)) { /* unit active? */
|
||||
if (uptr->FUNC >= FNC_WCHK) /* data transfer? */
|
||||
rpcs1 = rpcs1 | CS1_DONE | CS1_TRE; /* set done, err */
|
||||
}
|
||||
update_rpcs (CS1_SC, drv); /* request intr */
|
||||
if (!sim_is_running) /* from console? */
|
||||
update_rpcs (CS1_SC, drv); /* request intr */
|
||||
return detach_unit (uptr);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* pdp10_tu.c - PDP-10 RH11/TM03/TU45 magnetic tape simulator
|
||||
|
||||
Copyright (c) 1993-2008, Robert M Supnik
|
||||
Copyright (c) 1993-2013, 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,7 +25,8 @@
|
||||
|
||||
tu RH11/TM03/TU45 magtape
|
||||
|
||||
29-Apr-07 RMS Fixed bug in setting FCE on TMK (found by Naoki Hamada)
|
||||
17-Mar-13 RMS Fixed bug in read/write check reverse (Dave Bryan)
|
||||
29-Apr-07 RMS Fixed bug in setting FCE on TMK (Naoki Hamada)
|
||||
16-Feb-06 RMS Added tape capacity checking
|
||||
16-Aug-05 RMS Fixed C++ declaration and cast problems
|
||||
07-Jul-05 RMS Removed extraneous externs
|
||||
@@ -42,8 +43,8 @@
|
||||
28-Mar-03 RMS Added multiformat support
|
||||
28-Feb-03 RMS Revised for magtape library
|
||||
27-Jan-03 RMS Changed to dynamically allocate buffer
|
||||
21-Nov-02 RMS Fixed bug in bootstrap (reported by Michael Thompson)
|
||||
Fixed bug in read (reported by Harris Newman)
|
||||
21-Nov-02 RMS Fixed bug in bootstrap (Michael Thompson)
|
||||
Fixed bug in read (Harris Newman)
|
||||
29-Sep-02 RMS Added variable vector support
|
||||
New data structures
|
||||
28-Aug-02 RMS Added end of medium support
|
||||
@@ -964,7 +965,7 @@ switch (fnc) { /* case on function */
|
||||
MAPM (ba10 - i, mpa10, UMAP_RRV);
|
||||
}
|
||||
val = ((fmt == TC_10C)? (((d10) xbuf [--j]) & 017): 0);
|
||||
for (k = 0; k < 4; i++)
|
||||
for (k = 0; k < 4; k++)
|
||||
v[k] = xbuf[--j];
|
||||
val = val | (v[0] << 4) | (v[1] << 12) | (v[2] << 20) | (v[3] << 28);
|
||||
if (fnc == FNC_READR) /* read? store */
|
||||
|
||||
Reference in New Issue
Block a user