mirror of
https://github.com/simh/simh.git
synced 2026-05-03 14:38:45 +00:00
Notes For V3.2-0
RESTRICTION: The PDP-15 FPP is only partially debugged. Do NOT enable this feature for normal operations. WARNING: The core simulator files (scp.c, sim_*.c) have been reorganized. Unzip V3.2-0 to an empty directory before attempting to compile the source. IMPORTANT: If you are compiling for UNIX, please read the notes for Ethernet very carefully. You may need to download a new version of the pcap library, or make changes to the makefile, to get Ethernet support to work. 1. New Features in 3.2-0 1.1 SCP and libraries - Added SHOW <device> RADIX command. - Added SHOW <device> MODIFIERS command. - Added SHOW <device> NAMES command. - Added SET/SHOW <device> DEBUG command. - Added sim_vm_parse_addr and sim_vm_fprint_addr optional interfaces. - Added REG_VMAD flag. - Split SCP into separate libraries for easier modification. - Added more room to the device and unit flag fields. - Changed terminal multiplexor library to support unlimited. number of async lines. 1.2 All DECtapes - Added STOP_EOR flag to enable end-of-reel error stop - Added device debug support. 1.3 Nova and Eclipse - Added QTY and ALM multiplexors (Bruce Ray). 1.4 LGP-30 - Added LGP-30/LGP-21 simulator. 1.5 PDP-11 - Added format, address increment inhibit, transfer overrun detection to RK. - Added device debug support to HK, RP, TM, TQ, TS. - Added DEUNA/DELUA (XU) support (Dave Hittner). - Add DZ per-line logging. 1.6 18b PDP's - Added support for 1-4 (PDP-9)/1-16 (PDP-15) additional terminals. 1.7 PDP-10 - Added DEUNA/DELUA (XU) support (Dave Hittner). 1.8 VAX - Added extended memory to 512MB (Mark Pizzolato). - Added RXV21 support. 2. Bugs Fixed in 3.2-0 2.1 SCP - Fixed double logging of SHOW BREAK (found by Mark Pizzolato). - Fixed implementation of REG_VMIO. 2.2 Nova and Eclipse - Fixed device enable/disable support (found by Bruce Ray). 2.3 PDP-1 - Fixed bug in LOAD (found by Mark Crispin). 2.4 PDP-10 - Fixed bug in floating point unpack. - Fixed bug in FIXR (found by Phil Stone, fixed by Chris Smith). 2.6 PDP-11 - Fixed bug in RQ interrupt control (found by Tom Evans). 2.6 PDP-18B - Fixed bug in PDP-15 XVM g_mode implementation. - Fixed bug in PDP-15 indexed address calculation. - Fixed bug in PDP-15 autoindexed address calculation. - Fixed bugs in FPP-15 instruction decode. - Fixed clock response to CAF. - Fixed bug in hardware read-in mode bootstrap. - Fixed PDP-15 XVM instruction decoding errors. 2.7 VAX - Fixed PC read fault in EXTxV. - Fixed PC write fault in INSV.
This commit is contained in:
committed by
Mark Pizzolato
parent
1da2d9452d
commit
26aa6de663
@@ -3915,7 +3915,7 @@ if ((IR & 0100017) == 0100010) { /* This pattern for all */
|
||||
j = (IR >> 11) & 3;
|
||||
i = (AC[0] >> 8) & 0x007F;
|
||||
FPAC[j] &= 0x80FFFFFFFFFFFFFF; /* clear exponent */
|
||||
FPAC[j] |= (t_int64)(i << 56);
|
||||
FPAC[j] |= ((t_int64) i << 56);
|
||||
if ((FPAC[j] & 0x00ffffffffffffff) == 0)
|
||||
FPAC[j] = 0;
|
||||
if (FPAC[j] == 0)
|
||||
@@ -5996,7 +5996,8 @@ for (i = 0; i < 64; i++) { /* clr dev_table */
|
||||
dev_table[i].pi = 0;
|
||||
dev_table[i].routine = NULL; }
|
||||
for (i = 0; (dptr = sim_devices[i]) != NULL; i++) { /* loop thru dev */
|
||||
if (dibp = (DIB *) dptr->ctxt) { /* get DIB */
|
||||
if (!(dptr->flags & DEV_DIS) && /* enabled and */
|
||||
(dibp = (DIB *) dptr->ctxt)) { /* defined DIB? */
|
||||
dn = dibp->dnum; /* get dev num */
|
||||
dev_table[dn].mask = dibp->mask; /* copy entries */
|
||||
dev_table[dn].pi = dibp->pi;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* nova_clk.c: NOVA real-time clock simulator
|
||||
|
||||
Copyright (c) 1993-2003, Robert M. Supnik
|
||||
Copyright (c) 1993-2004, 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"),
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* nova_cpu.c: NOVA CPU simulator
|
||||
|
||||
Copyright (c) 1993-2003, Robert M. Supnik
|
||||
Copyright (c) 1993-2004, 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 Nova central processor
|
||||
|
||||
14-Jan-04 RMS Fixed device enable/disable support (found by Bruce Ray)
|
||||
19-Jan-03 RMS Changed CMASK to CDMASK for Apple Dev Kit conflict
|
||||
03-Oct-02 RMS Added DIB infrastructure
|
||||
30-Dec-01 RMS Added old PC queue
|
||||
@@ -831,7 +832,8 @@ for (i = 0; i < 64; i++) { /* clr dev_table */
|
||||
dev_table[i].pi = 0;
|
||||
dev_table[i].routine = NULL; }
|
||||
for (i = 0; (dptr = sim_devices[i]) != NULL; i++) { /* loop thru dev */
|
||||
if (dibp = (DIB *) dptr->ctxt) { /* get DIB */
|
||||
if (!(dptr->flags & DEV_DIS) && /* enabled and */
|
||||
(dibp = (DIB *) dptr->ctxt)) { /* defined DIB? */
|
||||
dn = dibp->dnum; /* get dev num */
|
||||
dev_table[dn].mask = dibp->mask; /* copy entries */
|
||||
dev_table[dn].pi = dibp->pi;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* nova_defs.h: NOVA/Eclipse simulator definitions
|
||||
|
||||
Copyright (c) 1993-2003, Robert M. Supnik
|
||||
Copyright (c) 1993-2004, 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 @@
|
||||
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-Jan-04 BKR Added support for QTY and ALM
|
||||
22-Nov-03 CEO Added support for PIT device
|
||||
19-Jan-03 RMS Changed CMASK to CDMASK for Apple Dev kit conflict
|
||||
03-Oct-02 RMS Added device information structure
|
||||
@@ -173,8 +174,10 @@
|
||||
#define DEV_MTA 022 /* magtape */
|
||||
#define DEV_DCM 024 /* data comm mux */
|
||||
#define DEV_ADCV 030 /* A/D converter */
|
||||
#define DEV_QTY 030 /* 4060 multiplexor */
|
||||
#define DEV_DKP 033 /* disk pack */
|
||||
#define DEV_CAS 034 /* cassette */
|
||||
#define DEV_ALM 034 /* ALM/ULM multiplexor */
|
||||
#define DEV_PIT 043 /* programmable interval timer */
|
||||
#define DEV_TTI1 050 /* second console input */
|
||||
#define DEV_TTO1 051 /* second console output */
|
||||
@@ -226,9 +229,11 @@ typedef struct nova_dib DIB;
|
||||
#define INT_V_TTO 12 /* terminal */
|
||||
#define INT_V_TTI1 13 /* second keyboard */
|
||||
#define INT_V_TTO1 14 /* second terminal */
|
||||
#define INT_V_STK 15 /* stack overflow */
|
||||
#define INT_V_NO_ION_PENDING 16 /* ion delay */
|
||||
#define INT_V_ION 17 /* interrupts on */
|
||||
#define INT_V_QTY 15 /* QTY multiplexor */
|
||||
#define INT_V_ALM 16 /* ALM multiplexor */
|
||||
#define INT_V_STK 17 /* stack overflow */
|
||||
#define INT_V_NO_ION_PENDING 18 /* ion delay */
|
||||
#define INT_V_ION 19 /* interrupts on */
|
||||
|
||||
#define INT_PIT (1 << INT_V_PIT)
|
||||
#define INT_DKP (1 << INT_V_DKP)
|
||||
@@ -243,6 +248,8 @@ typedef struct nova_dib DIB;
|
||||
#define INT_TTO (1 << INT_V_TTO)
|
||||
#define INT_TTI1 (1 << INT_V_TTI1)
|
||||
#define INT_TTO1 (1 << INT_V_TTO1)
|
||||
#define INT_QTY (1 << INT_V_QTY)
|
||||
#define INT_ALM (1 << INT_V_ALM)
|
||||
#define INT_STK (1 << INT_V_STK)
|
||||
#define INT_NO_ION_PENDING (1 << INT_V_NO_ION_PENDING)
|
||||
#define INT_ION (1 << INT_V_ION)
|
||||
@@ -260,6 +267,8 @@ typedef struct nova_dib DIB;
|
||||
#define PI_PTR 0000020
|
||||
#define PI_PTP 0000004
|
||||
#define PI_PLT 0000010
|
||||
#define PI_QTY 0000002
|
||||
#define PI_ALM 0000002
|
||||
#define PI_TTI 0000002
|
||||
#define PI_TTO 0000001
|
||||
#define PI_TTI1 PI_TTI
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* nova_dkp.c: NOVA moving head disk simulator
|
||||
|
||||
Copyright (c) 1993-2003, Robert M. Supnik
|
||||
Copyright (c) 1993-2004, 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 @@
|
||||
|
||||
dkp moving head disk
|
||||
|
||||
04-Jan-04 RMS Changed attach routine to use sim_fsize
|
||||
28-Nov-03 CEO Boot from DP now puts device address in SR
|
||||
24-Nov-03 CEO Added support for disk sizing on 6099/6103
|
||||
19-Nov-03 CEO Corrected major DMA Mapping bug
|
||||
@@ -688,13 +689,12 @@ t_stat dkp_attach (UNIT *uptr, char *cptr)
|
||||
int32 i, p;
|
||||
t_stat r;
|
||||
|
||||
uptr->capac = drv_tab[GET_DTYPE (uptr->flags)].size;
|
||||
r = attach_unit (uptr, cptr);
|
||||
if ((r != SCPE_OK) || ((uptr->flags & UNIT_AUTO) == 0)) return r;
|
||||
if (fseek (uptr->fileref, 0, SEEK_END)) return SCPE_OK;
|
||||
if ((p = ftell (uptr->fileref)) == 0) return SCPE_OK;
|
||||
uptr->capac = drv_tab[GET_DTYPE (uptr->flags)].size; /* restore capac */
|
||||
r = attach_unit (uptr, cptr); /* attach */
|
||||
if ((r != SCPE_OK) || !(uptr->flags & UNIT_AUTO)) return r;
|
||||
if ((p = sim_fsize (uptr->fileref)) == 0) return SCPE_OK; /* get file size */
|
||||
for (i = 0; drv_tab[i].sect != 0; i++) {
|
||||
if (p <= (drv_tab[i].size * (int) sizeof (short))) {
|
||||
if (p <= (drv_tab[i].size * (int32) sizeof (uint16))) {
|
||||
uptr->flags = (uptr->flags & ~UNIT_DTYPE) | (i << UNIT_V_DTYPE);
|
||||
uptr->capac = drv_tab[i].size;
|
||||
return SCPE_OK; } }
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
To: Users
|
||||
From: Bob Supnik
|
||||
Subj: Nova Simulator Usage
|
||||
Date: 15-Mar-2003
|
||||
Date: 15-Mar-2004
|
||||
|
||||
COPYRIGHT NOTICE
|
||||
|
||||
The following copyright notice applies to both the SIMH source and binary:
|
||||
|
||||
Original code published in 1993-2003, written by Robert M Supnik
|
||||
Copyright (c) 1993-2003, Robert M Supnik
|
||||
Original code published in 1993-2004, written by Robert M Supnik
|
||||
Copyright (c) 1993-2004, 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"),
|
||||
@@ -36,15 +36,21 @@ This memorandum documents the Nova simulator.
|
||||
|
||||
1. Simulator Files
|
||||
|
||||
sim/ sim_defs.h
|
||||
sim/ scp.h
|
||||
sim_console.h
|
||||
sim_defs.h
|
||||
sim_fio.h
|
||||
sim_rev.h
|
||||
sim_sock.h
|
||||
sim_tape.h
|
||||
sim_timer.h
|
||||
sim_tmxr.h
|
||||
scp.c
|
||||
scp_tty.c
|
||||
sim_console.c
|
||||
sim_fio.c
|
||||
sim_sock.c
|
||||
sim_tape.c
|
||||
sim_timer.c
|
||||
sim_tmxr.c
|
||||
|
||||
sim/nova/ nova_defs.h
|
||||
@@ -55,6 +61,7 @@ sim/nova/ nova_defs.h
|
||||
nova_lp.c
|
||||
nova_mta.c
|
||||
nova_plt.c
|
||||
nova_qty.c
|
||||
nova_sys.c
|
||||
nova_tt.c
|
||||
nova_tt1.c
|
||||
@@ -66,7 +73,7 @@ The Nova simulator is configured as follows:
|
||||
device simulates
|
||||
name(s)
|
||||
|
||||
CPU Nova CPU with 32KW of memory
|
||||
CPU Nova, Nova 3, or Nova 4 CPU with 32KW of memory
|
||||
- hardware multiply/divide
|
||||
PTR,PTP paper tape reader/punch
|
||||
TTI,TTO console terminal
|
||||
@@ -77,6 +84,8 @@ CLK real-time clock
|
||||
DK head-per-track disk controller
|
||||
DP moving head disk controller with four drives
|
||||
MT magnetic tape controller with eight drives
|
||||
QTY 4060 multiplexor with up to 64 lines
|
||||
ALM 4255 multiplexor with up to 64 lines
|
||||
|
||||
The Nova simulator implements these unique stop conditions:
|
||||
|
||||
@@ -86,6 +95,11 @@ The Nova simulator implements these unique stop conditions:
|
||||
- more than INDMAX indirect addresses are detected during
|
||||
memory reference address decoding
|
||||
|
||||
Note that indirect address loop detection does not exist on unmapped
|
||||
Novas. Some DG diagnostics test thousands of levels of indirect
|
||||
addressing. INDMAX may have to be set to 32,000 to get diagnostics
|
||||
to run properly.
|
||||
|
||||
The Nova loader supports standard binary format tapes. The DUMP command
|
||||
is not implemented.
|
||||
|
||||
@@ -122,6 +136,11 @@ If memory size is being reduced, and the memory being truncated contains
|
||||
non-zero data, the simulator asks for confirmation. Data in the truncated
|
||||
portion of memory is lost. Initial memory size is 32K.
|
||||
|
||||
The CPU supports the boot command. BOOT CPU simulates the Nova hardware
|
||||
APL (automatic program load) feature. The switch register (SR) bits 12:17
|
||||
must contain the device code of the device to be booted. If the device is
|
||||
a "high-speed" (channel) device, SR bit 0 should also be set.
|
||||
|
||||
CPU registers include the visible state of the processor as well as the
|
||||
control registers for the interrupt system.
|
||||
|
||||
@@ -363,6 +382,12 @@ setting limited Dasher-compatibility mode or ANSI mode:
|
||||
|
||||
Setting either TTI1 or TTO1 changes both devices. In Dasher mode, carriage
|
||||
return is changed to newline on input, and ^X is changed to backspace.
|
||||
TTO1 supports output logging. The SET TTO1 LOG command enables logging:
|
||||
|
||||
SET TTO1 LOG=filename log output to filename
|
||||
|
||||
The SET TTO1 NOLOG command disables logging and closes the open log
|
||||
file, if any.
|
||||
|
||||
The SHOW TTI1 CONNECTIONS command displays the current connection to TTI1.
|
||||
The SHOW TTI1 STATISTICS command displays statistics for the current connection.
|
||||
@@ -390,6 +415,67 @@ The second terminal output implements these registers:
|
||||
INT 1 interrupt pending flag
|
||||
TIME 24 time from I/O initiation to interrupt
|
||||
|
||||
2.2.8 Asynchronous Multiplexors (QTY, ALM)
|
||||
|
||||
The QTY and ALM are terminal multiplexors with up to 64 lines. Either
|
||||
the QTY or ALM can be enabled, but not both; the ALM is enabled by
|
||||
default. The number of lines can be changed with the command
|
||||
|
||||
SET {QTY|ALM} LINES=n set line count to n
|
||||
|
||||
The line count maximum is 64.
|
||||
|
||||
The QTY and ALM support 8-bit input and output of characters. 8-bit I/O
|
||||
may be incompatible with certain operating systems; 7-bit is the default.
|
||||
The command
|
||||
|
||||
SET {QTY|ALM} 8B
|
||||
|
||||
enables 8-bit input and output.
|
||||
|
||||
The terminal lines perform input and output through Telnet sessions
|
||||
connected to a user-specified port. The ATTACH command specifies
|
||||
the port to be used:
|
||||
|
||||
ATTACH {-am} {QTY|ALM} <port> set up listening port
|
||||
|
||||
where port is a decimal number between 1 and 65535 that is not being used
|
||||
for other TCP/IP activities. For the ALM multiplexor, the optional switch
|
||||
-m turns on the multiplexor modem controls; the optional switch -a turns on
|
||||
active disconnects (disconnect session if computer clears Data Terminal Ready).
|
||||
The QTY multiplexor does not support modem control. Without modem control,
|
||||
the multiplexor behaves as though terminals were directly connected;
|
||||
disconnecting the Telnet session does not cause any operating system-
|
||||
visible change in line status.
|
||||
|
||||
Once the multiplexor is attached and the simulator is running, it will listen
|
||||
for connections on the specified port. It assumes that the incoming
|
||||
connections are Telnet connections. The connection remains open until
|
||||
disconnected by the simulated program, the Telnet client, a SET {QTY|ALM}
|
||||
DISCONNECT command, or a DETACH {QTY|ALM} command.
|
||||
|
||||
The SHOW {QTY|ALM} CONNECTIONS command displays the current connections to
|
||||
the multiplexor. The SHOW {QTY|ALM} STATISTICS command displays statistics
|
||||
for active connections. The SET {QTY|ALM| DISCONNECT=linenumber disconnects
|
||||
the specified line.
|
||||
|
||||
The QTY/ALM implement these registers:
|
||||
|
||||
name size comments
|
||||
|
||||
BUF 8 character buffer
|
||||
BUSY 1 device busy flag
|
||||
DONE 1 device done flag
|
||||
DISABLE 1 device disable flag
|
||||
INT 1 interrupt pending flag
|
||||
MDMCTL 1 modem control flag
|
||||
AUTODS 1 autodisconnect flag
|
||||
POLLS 32 number of service polls
|
||||
STOP_IOE 1 stop on I/O error
|
||||
|
||||
The multiplexors do not support save and restore. All open connections are
|
||||
lost when the simulator shuts down or the multiplexor is detached.
|
||||
|
||||
2.3 Fixed Head Disk (DK)
|
||||
|
||||
Fixed head disk options include the ability to set the number of platters
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* nova_dsk.c: 4019 fixed head disk simulator
|
||||
|
||||
Copyright (c) 1993-2003, Robert M. Supnik
|
||||
Copyright (c) 1993-2004, 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 @@
|
||||
|
||||
dsk fixed head disk
|
||||
|
||||
04-Jan-04 RMS Changed sim_fsize calling sequence
|
||||
26-Jul-03 RMS Fixed bug in set size routine
|
||||
14-Mar-03 RMS Fixed variable capacity interaction with save/restore
|
||||
03-Mar-03 RMS Fixed variable capacity and autosizing
|
||||
@@ -276,14 +277,17 @@ t_stat dsk_attach (UNIT *uptr, char *cptr)
|
||||
{
|
||||
uint32 sz, p;
|
||||
uint32 ds_bytes = DSK_DKSIZE * sizeof (int16);
|
||||
t_stat r;
|
||||
|
||||
if ((uptr->flags & UNIT_AUTO) && (sz = sim_fsize (cptr))) {
|
||||
r = attach_unit (uptr, cptr);
|
||||
if (r != SCPE_OK) return r;
|
||||
if ((uptr->flags & UNIT_AUTO) && (sz = sim_fsize (uptr->fileref))) {
|
||||
p = (sz + ds_bytes - 1) / ds_bytes;
|
||||
if (p >= DSK_NUMDK) p = DSK_NUMDK - 1;
|
||||
uptr->flags = (uptr->flags & ~UNIT_PLAT) |
|
||||
(p << UNIT_V_PLAT); }
|
||||
uptr->capac = UNIT_GETP (uptr->flags) * DSK_DKSIZE; /* set capacity */
|
||||
return attach_unit (uptr, cptr);
|
||||
return SCPE_OK;
|
||||
}
|
||||
|
||||
/* Change disk size */
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* nova_lp.c: NOVA line printer simulator
|
||||
|
||||
Copyright (c) 1993-2003, Robert M. Supnik
|
||||
Copyright (c) 1993-2004, 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"),
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* nova_mta.c: NOVA magnetic tape simulator
|
||||
|
||||
Copyright (c) 1993-2003, Robert M. Supnik
|
||||
Copyright (c) 1993-2004, 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"),
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* nova_plt.c: NOVA plotter simulator
|
||||
|
||||
Copyright (c) 2000-2003, Robert M. Supnik
|
||||
Copyright (c) 2000-2004, Robert M. Supnik
|
||||
Written by Bruce Ray and used with his gracious permission.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* nova_pt.c: NOVA paper tape read/punch simulator
|
||||
|
||||
Copyright (c) 1993-2003, Robert M. Supnik
|
||||
Copyright (c) 1993-2004, 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"),
|
||||
|
||||
1130
NOVA/nova_qty.c
Normal file
1130
NOVA/nova_qty.c
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
||||
/* nova_sys.c: NOVA simulator interface
|
||||
|
||||
Copyright (c) 1993-2003, Robert M. Supnik
|
||||
Copyright (c) 1993-2004, 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,9 @@
|
||||
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.
|
||||
|
||||
26-Mar-04 RMS Fixed warning with -std=c99
|
||||
14-Jan-04 BKR Added support for QTY and ALM
|
||||
04-Jan-04 RMS Fixed 64b issues found by VMS 8.1
|
||||
24-Nov-03 CEO Added symbolic support for LEF instruction
|
||||
17-Sep-01 RMS Removed multiconsole support
|
||||
31-May-01 RMS Added multiconsole support
|
||||
@@ -61,6 +64,8 @@ extern DEVICE lpt_dev;
|
||||
extern DEVICE dkp_dev;
|
||||
extern DEVICE dsk_dev;
|
||||
extern DEVICE mta_dev;
|
||||
extern DEVICE qty_dev;
|
||||
extern DEVICE alm_dev;
|
||||
extern REG cpu_reg[];
|
||||
extern uint16 M[];
|
||||
extern int32 saved_PC;
|
||||
@@ -104,6 +109,8 @@ DEVICE *sim_devices[] = {
|
||||
&dsk_dev,
|
||||
&dkp_dev,
|
||||
&mta_dev,
|
||||
&qty_dev,
|
||||
&alm_dev,
|
||||
NULL };
|
||||
|
||||
const char *sim_stop_messages[] = {
|
||||
@@ -387,7 +394,7 @@ static const char *opcode[] = {
|
||||
#endif
|
||||
NULL };
|
||||
|
||||
static const opc_val[] = {
|
||||
static const int32 opc_val[] = {
|
||||
0000000+I_M, 0004000+I_M, 0010000+I_M, 0014000+I_M,
|
||||
0020000+I_RM, 0040000+I_RM,
|
||||
#if defined (ECLIPSE)
|
||||
@@ -596,7 +603,7 @@ return SCPE_OK;
|
||||
t_stat fprint_sym (FILE *of, t_addr addr, t_value *val,
|
||||
UNIT *uptr, int32 sw)
|
||||
{
|
||||
int32 cflag, i, j, c1, c2, inst, dv, src, dst, skp;
|
||||
int32 cflag, i, j, c1, c2, inst, inst1, dv, src, dst, skp;
|
||||
int32 ind, mode, disp, dev;
|
||||
int32 byac, extind, extdisp, xop;
|
||||
|
||||
@@ -615,6 +622,7 @@ if (!(sw & SWMASK ('M'))) return SCPE_ARG; /* mnemonic? */
|
||||
/* Instruction decode */
|
||||
|
||||
inst = (int32) val[0];
|
||||
inst1 = (int32) val[1];
|
||||
for (i = 0; opc_val[i] >= 0; i++) { /* loop thru ops */
|
||||
j = (opc_val[i] >> I_V_FL) & I_M_FL; /* get class */
|
||||
if ((opc_val[i] & 0177777) == (inst & masks[j])) { /* match? */
|
||||
@@ -627,8 +635,8 @@ for (i = 0; opc_val[i] >= 0; i++) { /* loop thru ops */
|
||||
dev = I_GETDEV (inst); /* IOT fields */
|
||||
byac = I_GETPULSE (inst); /* byte fields */
|
||||
xop = I_GETXOP (inst); /* XOP fields */
|
||||
extind = (int32) val[1] & A_IND; /* extended fields */
|
||||
extdisp = (int32) val[1] & AMASK;
|
||||
extind = inst1 & A_IND; /* extended fields */
|
||||
extdisp = inst1 & AMASK;
|
||||
for (dv = 0; (dev_val[dv] >= 0) && (dev_val[dv] != dev); dv++) ;
|
||||
|
||||
switch (j) { /* switch on class */
|
||||
@@ -677,10 +685,10 @@ for (i = 0; opc_val[i] >= 0; i++) { /* loop thru ops */
|
||||
fprintf (of, "%s %-o,%-o", opcode[i], src + 1, dst);
|
||||
break;
|
||||
case I_V_LI: /* long imm */
|
||||
fprintf (of, "%s %-o", opcode[i], val[1]);
|
||||
fprintf (of, "%s %-o", opcode[i], inst1);
|
||||
return -1;
|
||||
case I_V_RLI: /* reg, long imm */
|
||||
fprintf (of, "%s %-o,%-o", opcode[i], val[1], dst);
|
||||
fprintf (of, "%s %-o,%-o", opcode[i], inst1, dst);
|
||||
return -1;
|
||||
case I_V_LM: /* long addr */
|
||||
fprintf (of, "%s ", opcode[i]);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* nova_tt1.c: NOVA second terminal simulator
|
||||
|
||||
Copyright (c) 1993-2003, Robert M. Supnik
|
||||
Copyright (c) 1993-2004, Robert M. Supnik
|
||||
Written by Bruce Ray and used with his gracious permission.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
|
||||
Reference in New Issue
Block a user