mirror of
https://github.com/open-simh/simh.git
synced 2026-01-13 15:27:46 +00:00
Official simh-v3.9-0 Merge
This commit is contained in:
parent
eaa17ffce8
commit
38e3d58c72
@ -29,19 +29,17 @@ components and build network capable simulators if they are available.
|
||||
|
||||
1.1.3 HP2100 (Dave Bryan)
|
||||
|
||||
- added support for 12821A HP-IP disk controller,
|
||||
- added support for 12821A HP-IB disk controller,
|
||||
7906H/20H/25H disks
|
||||
|
||||
1.1.4 PDP11 and VAX (Mark Pizzolato)
|
||||
|
||||
- Added DELQA-Plus device.
|
||||
- added DELQA-Plus device
|
||||
|
||||
1.1.5 IA64 VMS Ethernet Support
|
||||
|
||||
- Identified compiler version issues and added IA64 support (Matt Burke)
|
||||
- identified compiler version issues and added IA64 support (Matt Burke)
|
||||
|
||||
1.1.6 Visual Studio Projects (Mark Pizzolato)
|
||||
|
||||
|
||||
2. Bugs Fixed
|
||||
|
||||
@ -51,10 +49,10 @@ in the source module sim_rev.h.
|
||||
|
||||
3. Status Report
|
||||
|
||||
This is the last release of SimH for which I will be sole editor. After this
|
||||
This is the last release of SimH for which I will be lead editor. After this
|
||||
release, the source is moving to a public repository:
|
||||
|
||||
|
||||
https://github.com/markpizz/simh
|
||||
|
||||
under the general editorship of Dave Hittner and Mark Pizzolato. The status
|
||||
of the individual simulators is as follows:
|
||||
@ -170,19 +168,22 @@ Bill Beech
|
||||
3.25 Sigma 32b
|
||||
|
||||
Incomplete; more work is needed on the peripherals for accuracy.
|
||||
Included in the beta simulators package.
|
||||
|
||||
3.26 Alpha
|
||||
|
||||
Incomplete; essentially just an EV-5 (21164) chip emulator.
|
||||
Incomplete; essentially just an EV-5 (21164) chip emulator. Included
|
||||
in the beta simulators package.
|
||||
|
||||
3.27 SAGE
|
||||
|
||||
Beta.
|
||||
Incomplete. Included in the beta simulators package.
|
||||
|
||||
3.28 SC1
|
||||
|
||||
Internal simulator for SiCortex supercomputer; intended as an example
|
||||
of implementing an SMP system in the current SimH structure.
|
||||
of implementing an SMP system in the current SimH structure. Included
|
||||
in the beta simulators package.
|
||||
|
||||
|
||||
4. Suggestions for Future Work
|
||||
|
||||
@ -218,8 +218,8 @@ int32 dsk10(int32 io, int32 data)
|
||||
cur_disk = data & 0x0F;
|
||||
if (data & 0x80) {
|
||||
cur_flags[cur_disk] = 0; /* Disable drive */
|
||||
cur_sect[cur_disk = 0377];
|
||||
cur_byte[cur_disk = 0377];
|
||||
cur_sect[cur_disk] = 0377;
|
||||
cur_byte[cur_disk] = 0377;
|
||||
return (0);
|
||||
}
|
||||
cur_flags[cur_disk] = 0x1A; /* Enable: head move true */
|
||||
|
||||
@ -402,7 +402,7 @@ if (op >= 64) /* successful? */
|
||||
return SCPE_ARG;
|
||||
val[0] = op | WM; /* store opcode */
|
||||
cptr = get_glyph (cptr, gbuf, 0); /* get addr or d */
|
||||
if (((op_table[op] && IO) && (get_io (gbuf, &val[1]) == SCPE_OK)) ||
|
||||
if (((op_table[op] & IO) && (get_io (gbuf, &val[1]) == SCPE_OK)) ||
|
||||
(get_addr (gbuf, &val[1]) == SCPE_OK)) {
|
||||
cptr = get_glyph (cptr, gbuf, 0); /* get addr or d */
|
||||
if (get_addr (gbuf, &val[4]) == SCPE_OK) {
|
||||
|
||||
@ -217,7 +217,7 @@ REG sca_reg[] = { /* DEVICE STATE/SETTABLE PARAMETERS: */
|
||||
{ HRDATA (SCADSW, sca_dsw, 16) }, /* device status word */
|
||||
{ DRDATA (SICHAR, sichar, 8), PV_LEFT }, /* sync/idle character */
|
||||
{ DRDATA (RCVDCHAR, rcvd_char, 8), PV_LEFT }, /* most recently received character */
|
||||
{ DRDATA (FRAME, sca_frame, 8), PV_LEFT }, /* frame bits (6, 7 or 8)
|
||||
{ DRDATA (FRAME, sca_frame, 8), PV_LEFT }, /* frame bits (6, 7 or 8) */
|
||||
{ DRDATA (SCASTATE, sca_state, 32), PV_LEFT }, /* current state */
|
||||
{ DRDATA (CTIME, sca_cwait, 32), PV_LEFT }, /* inter-character wait */
|
||||
{ DRDATA (ITIME, sca_iwait, 32), PV_LEFT }, /* idle wait (polling interval for socket connects) */
|
||||
|
||||
@ -25,6 +25,7 @@
|
||||
|
||||
dkp moving head disk
|
||||
|
||||
27-Apr-12 RMS Changed ??? string digraphs to ?, per C rules
|
||||
04-Jul-04 BKR device name changed to DG's DKP from DEC's DP,
|
||||
DEV_SET/CLR/INTR macro use started,
|
||||
fixed 'P' pulse code and secret quirks,
|
||||
@ -706,7 +707,7 @@ if ( DKP_TRACE(1) )
|
||||
"write"
|
||||
: ((uptr->FUNC == FCCY_SEEK) ?
|
||||
"seek"
|
||||
: "<???>"
|
||||
: "<?>"
|
||||
)
|
||||
)
|
||||
),
|
||||
@ -871,7 +872,7 @@ do {
|
||||
"read"
|
||||
: ((uptr->FUNC == FCCY_WRITE) ?
|
||||
"write"
|
||||
: "<???>")
|
||||
: "<?>")
|
||||
),
|
||||
(unsigned) (uptr->CYL),
|
||||
(unsigned) (GET_SURF(dkp_ussc, dtype)),
|
||||
|
||||
@ -25,6 +25,7 @@
|
||||
|
||||
cpu PDP-11 CPU
|
||||
|
||||
29-Apr-12 RMS Fixed compiler warning (Mark Pizzolato)
|
||||
19-Mar-12 RMS Fixed declaration of sim_switches (Mark Pizzolato)
|
||||
29-Dec-08 RMS Fixed failure to clear cpu_bme on RESET (Walter Mueller)
|
||||
22-Apr-08 RMS Fixed MMR0 treatment in RESET (Walter Mueller)
|
||||
@ -1292,7 +1293,7 @@ while (reason == 0) {
|
||||
break;
|
||||
|
||||
case 070: /* CSM */
|
||||
if (CPUT (HAS_CSM) && (MMR3 & MMR3_CSM) || (cm != MD_KER)) {
|
||||
if ((CPUT (HAS_CSM) && (MMR3 & MMR3_CSM)) || (cm != MD_KER)) {
|
||||
dst = dstreg? R[dstspec]: ReadW (GeteaW (dstspec));
|
||||
PSW = get_PSW () & ~PSW_CC; /* PSW, cc = 0 */
|
||||
STACKFILE[cm] = SP;
|
||||
|
||||
@ -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.
|
||||
|
||||
27-Mar-12 RMS Fixed order of int_internal (Jordi Guillaumes i Pons)
|
||||
19-Mar-12 RMS Fixed declaration of cpu_opt (Mark Pizzolato)
|
||||
12-Dec-11 RMS Fixed Qbus interrupts to treat all IO devices as BR4
|
||||
19-Nov-08 RMS Moved I/O support routines to I/O library
|
||||
@ -83,8 +84,8 @@ static const int32 pirq_bit[7] = {
|
||||
};
|
||||
|
||||
static const int32 int_internal[IPL_HLVL] = {
|
||||
INT_INTERNAL7, INT_INTERNAL6, INT_INTERNAL5, INT_INTERNAL4,
|
||||
INT_INTERNAL3, INT_INTERNAL2, INT_INTERNAL1, 0
|
||||
0, INT_INTERNAL1, INT_INTERNAL2, INT_INTERNAL3,
|
||||
INT_INTERNAL4, INT_INTERNAL5, INT_INTERNAL6, INT_INTERNAL7
|
||||
};
|
||||
|
||||
/* I/O page lookup and linkage routines
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
/* pdp11_sys.c: PDP-11 simulator interface
|
||||
|
||||
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"),
|
||||
@ -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.
|
||||
|
||||
29-Apr-12 RMS Fixed compiler warning (Mark Pizzolato)
|
||||
19-Nov-08 RMS Moved I/O support routines to I/O library
|
||||
15-May-08 RMS Added KE11-A, DC11 support
|
||||
Renamed DL11
|
||||
@ -992,7 +993,7 @@ switch (j) { /* case on class */
|
||||
disp = (disp - addr) & 0177777;
|
||||
else return SCPE_ARG;
|
||||
}
|
||||
if ((disp & 1) || (disp > 0400) && (disp < 0177402))
|
||||
if ((disp & 1) || ((disp > 0400) && (disp < 0177402)))
|
||||
return SCPE_ARG;
|
||||
val[0] = val[0] | (((disp - 2) >> 1) & 0377);
|
||||
break;
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
/* vax_syscm.c: PDP-11 compatibility mode symbolic decode and parse
|
||||
|
||||
Copyright (c) 1993-2010, 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"),
|
||||
@ -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.
|
||||
|
||||
29-Apr-12 RMS Fixed compiler warning (Mark Pizzolato)
|
||||
22-May-10 RMS Fixed t_addr printouts for 64b big-endian systems
|
||||
(Mark Pizzolato)
|
||||
12-Nov-06 RMS Fixed operand order in EIS instructions (W.F.J. Mueller)
|
||||
@ -610,7 +611,7 @@ switch (j) { /* case on class */
|
||||
return SCPE_ARG;
|
||||
if ((pflag & A_REL) == 0)
|
||||
disp = (disp - ad32) & 0177777;
|
||||
if ((disp & 1) || (disp > 0400) && (disp < 0177402))
|
||||
if ((disp & 1) || ((disp > 0400) && (disp < 0177402)))
|
||||
return SCPE_ARG;
|
||||
val[0] = val[0] | (((disp - 2) >> 1) & 0377);
|
||||
break;
|
||||
|
||||
@ -477,16 +477,17 @@ return ((val << 24) & 0xff000000) | (( val << 8) & 0xff0000) |
|
||||
((val >> 8) & 0xff00) | ((val >> 24) & 0xff);
|
||||
}
|
||||
|
||||
volatile int32 rom_loopval = 0;
|
||||
|
||||
int32 rom_read_delay (int32 val)
|
||||
{
|
||||
uint32 i, l = rom_delay;
|
||||
int32 loopval = 0;
|
||||
|
||||
if (rom_unit.flags & UNIT_NODELAY)
|
||||
return val;
|
||||
|
||||
/* Calibrate the loop delay factor when first used.
|
||||
Do this 4 times to and use the largest value computed. */
|
||||
Do this 4 times and use the largest value computed. */
|
||||
|
||||
if (rom_delay == 0) {
|
||||
uint32 ts, te, c = 10000, samples = 0;
|
||||
@ -499,15 +500,15 @@ if (rom_delay == 0) {
|
||||
away by a good compiler. loopval always is zero. To avoid smart compilers,
|
||||
the loopval variable is referenced in the function arguments so that the
|
||||
function expression is not loop invariant. It also must be referenced
|
||||
by subsequent code or to avoid the whole computation being eliminated. */
|
||||
by subsequent code to avoid the whole computation being eliminated. */
|
||||
|
||||
for (i = 0; i < c; i++)
|
||||
loopval |= (loopval + ts) ^ rom_swapb (rom_swapb (loopval + ts));
|
||||
rom_loopval |= (rom_loopval + ts) ^ rom_swapb (rom_swapb (rom_loopval + ts));
|
||||
te = sim_os_msec ();
|
||||
if ((te - ts) < 50) /* sample big enough? */
|
||||
continue;
|
||||
if (rom_delay < (loopval + (c / (te - ts) / 1000) + 1))
|
||||
rom_delay = loopval + (c / (te - ts) / 1000) + 1;
|
||||
if (rom_delay < (rom_loopval + (c / (te - ts) / 1000) + 1))
|
||||
rom_delay = rom_loopval + (c / (te - ts) / 1000) + 1;
|
||||
if (++samples >= 4)
|
||||
break;
|
||||
c = c / 2;
|
||||
@ -517,8 +518,8 @@ if (rom_delay == 0) {
|
||||
}
|
||||
|
||||
for (i = 0; i < l; i++)
|
||||
loopval |= (loopval + val) ^ rom_swapb (rom_swapb (loopval + val));
|
||||
return val + loopval;
|
||||
rom_loopval |= (rom_loopval + val) ^ rom_swapb (rom_swapb (rom_loopval + val));
|
||||
return val + rom_loopval;
|
||||
}
|
||||
|
||||
int32 rom_rd (int32 pa)
|
||||
|
||||
438
makefile_old
438
makefile_old
@ -1,438 +0,0 @@
|
||||
#
|
||||
# CC Command
|
||||
#
|
||||
ifeq ($(WIN32),)
|
||||
#Unix Environments
|
||||
ifneq (,$(findstring solaris,$(OSTYPE)))
|
||||
OS_CCDEFS = -lm -lsocket -lnsl -lrt -lpthread -D_GNU_SOURCE
|
||||
else
|
||||
ifneq (,$(findstring darwin,$(OSTYPE)))
|
||||
OS_CCDEFS = -D_GNU_SOURCE
|
||||
else
|
||||
ifeq (librt,$(shell if test -e /usr/lib/librt.a; then echo librt; fi))
|
||||
OS_CCDEFS = -lrt -lm -D_GNU_SOURCE
|
||||
else
|
||||
OS_CCDEFS = -lm -D_GNU_SOURCE
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
ifeq (readline,$(shell if test -e /usr/lib/libreadline.a; then echo readline; fi))
|
||||
# Use Locally installed and available readline support
|
||||
ifeq (ncurses,$(shell if test -e /usr/lib/libncurses.a; then echo ncurses; fi))
|
||||
READLINE_CCDEFS = -DHAVE_READLINE -lreadline -lncurses
|
||||
else
|
||||
READLINE_CCDEFS = -DHAVE_READLINE -lreadline
|
||||
endif
|
||||
endif
|
||||
ifeq (pcap,$(shell if test -e /usr/lib/libpcap.a; then echo pcap; fi))
|
||||
# Use Locally installed and available pcap support
|
||||
NETWORK_CCDEFS = -DUSE_NETWORK -lpcap
|
||||
endif
|
||||
ifeq (tuntap,$(shell if test -e /usr/include/linux/if_tun.h; then echo tuntap; fi))
|
||||
# Provide support for Tap networking on Linux
|
||||
NETWORK_TAP_CCDEFS = -DUSE_TAP_NETWORK
|
||||
endif
|
||||
ifeq (bsdtuntap,$(shell if test -e /usr/include/net/if_tun.h; then echo bsdtuntap; fi))
|
||||
# Provide support for Tap networking
|
||||
NETWORK_TAP_CCDEFS = -DUSE_TAP_NETWORK -DUSE_BSDTUNTAP
|
||||
endif
|
||||
CC = gcc -std=c99 -U__STRICT_ANSI__ -g $(OS_CCDEFS) -I . $(READLINE_CCDEFS) $(NETWORK_CCDEFS) $(NETWORK_TAP_CCDEFS)
|
||||
ifneq ($(USE_NETWORK),)
|
||||
# Assume built from tcpdump.org sources with default install target
|
||||
NETWORK_OPT = -DUSE_NETWORK -isystem /usr/local/include /usr/local/lib/libpcap.a
|
||||
endif
|
||||
else
|
||||
#Win32 Environments
|
||||
LDFLAGS = -lm -lwsock32 -lwinmm
|
||||
CC = gcc -std=c99 -U__STRICT_ANSI__ -O2 -fno-strict-overflow -I.
|
||||
EXE = .exe
|
||||
ifneq ($(USE_NETWORK),)
|
||||
NETWORK_OPT = -DUSE_SHARED
|
||||
endif
|
||||
endif
|
||||
|
||||
#
|
||||
# Common Libraries
|
||||
#
|
||||
BIN = BIN/
|
||||
SIM = scp.c sim_console.c sim_fio.c sim_timer.c sim_sock.c \
|
||||
sim_tmxr.c sim_ether.c sim_tape.c
|
||||
|
||||
|
||||
#
|
||||
# Emulator source files and compile time options
|
||||
#
|
||||
PDP1D = PDP1
|
||||
PDP1 = ${PDP1D}/pdp1_lp.c ${PDP1D}/pdp1_cpu.c ${PDP1D}/pdp1_stddev.c \
|
||||
${PDP1D}/pdp1_sys.c ${PDP1D}/pdp1_dt.c ${PDP1D}/pdp1_drm.c \
|
||||
${PDP1D}/pdp1_clk.c ${PDP1D}/pdp1_dcs.c
|
||||
PDP1_OPT = -I ${PDP1D}
|
||||
|
||||
|
||||
NOVAD = NOVA
|
||||
NOVA = ${NOVAD}/nova_sys.c ${NOVAD}/nova_cpu.c ${NOVAD}/nova_dkp.c \
|
||||
${NOVAD}/nova_dsk.c ${NOVAD}/nova_lp.c ${NOVAD}/nova_mta.c \
|
||||
${NOVAD}/nova_plt.c ${NOVAD}/nova_pt.c ${NOVAD}/nova_clk.c \
|
||||
${NOVAD}/nova_tt.c ${NOVAD}/nova_tt1.c ${NOVAD}/nova_qty.c
|
||||
NOVA_OPT = -I ${NOVAD}
|
||||
|
||||
|
||||
ECLIPSE = ${NOVAD}/eclipse_cpu.c ${NOVAD}/eclipse_tt.c ${NOVAD}/nova_sys.c \
|
||||
${NOVAD}/nova_dkp.c ${NOVAD}/nova_dsk.c ${NOVAD}/nova_lp.c \
|
||||
${NOVAD}/nova_mta.c ${NOVAD}/nova_plt.c ${NOVAD}/nova_pt.c \
|
||||
${NOVAD}/nova_clk.c ${NOVAD}/nova_tt1.c ${NOVAD}/nova_qty.c
|
||||
ECLIPSE_OPT = -I ${NOVAD} -DECLIPSE
|
||||
|
||||
|
||||
PDP18BD = PDP18B
|
||||
PDP18B = ${PDP18BD}/pdp18b_dt.c ${PDP18BD}/pdp18b_drm.c ${PDP18BD}/pdp18b_cpu.c \
|
||||
${PDP18BD}/pdp18b_lp.c ${PDP18BD}/pdp18b_mt.c ${PDP18BD}/pdp18b_rf.c \
|
||||
${PDP18BD}/pdp18b_rp.c ${PDP18BD}/pdp18b_stddev.c ${PDP18BD}/pdp18b_sys.c \
|
||||
${PDP18BD}/pdp18b_rb.c ${PDP18BD}/pdp18b_tt1.c ${PDP18BD}/pdp18b_fpp.c
|
||||
PDP4_OPT = -DPDP4 -I ${PDP18BD}
|
||||
PDP7_OPT = -DPDP7 -I ${PDP18BD}
|
||||
PDP9_OPT = -DPDP9 -I ${PDP18BD}
|
||||
PDP15_OPT = -DPDP15 -I ${PDP18BD}
|
||||
|
||||
|
||||
PDP11D = PDP11
|
||||
PDP11 = ${PDP11D}/pdp11_fp.c ${PDP11D}/pdp11_cpu.c ${PDP11D}/pdp11_dz.c \
|
||||
${PDP11D}/pdp11_cis.c ${PDP11D}/pdp11_lp.c ${PDP11D}/pdp11_rk.c \
|
||||
${PDP11D}/pdp11_rl.c ${PDP11D}/pdp11_rp.c ${PDP11D}/pdp11_rx.c \
|
||||
${PDP11D}/pdp11_stddev.c ${PDP11D}/pdp11_sys.c ${PDP11D}/pdp11_tc.c \
|
||||
${PDP11D}/pdp11_tm.c ${PDP11D}/pdp11_ts.c ${PDP11D}/pdp11_io.c \
|
||||
${PDP11D}/pdp11_rq.c ${PDP11D}/pdp11_tq.c ${PDP11D}/pdp11_pclk.c \
|
||||
${PDP11D}/pdp11_ry.c ${PDP11D}/pdp11_pt.c ${PDP11D}/pdp11_hk.c \
|
||||
${PDP11D}/pdp11_xq.c ${PDP11D}/pdp11_xu.c ${PDP11D}/pdp11_vh.c \
|
||||
${PDP11D}/pdp11_rh.c ${PDP11D}/pdp11_tu.c ${PDP11D}/pdp11_cpumod.c \
|
||||
${PDP11D}/pdp11_cr.c ${PDP11D}/pdp11_rf.c ${PDP11D}/pdp11_dl.c \
|
||||
${PDP11D}/pdp11_ta.c ${PDP11D}/pdp11_rc.c ${PDP11D}/pdp11_kg.c \
|
||||
${PDP11D}/pdp11_ke.c ${PDP11D}/pdp11_dc.c ${PDP11D}/pdp11_io_lib.c
|
||||
PDP11_OPT = -DVM_PDP11 -I ${PDP11D} ${NETWORK_OPT}
|
||||
|
||||
|
||||
VAXD = VAX
|
||||
VAX = ${VAXD}/vax_cpu.c ${VAXD}/vax_cpu1.c ${VAXD}/vax_fpa.c ${VAXD}/vax_io.c \
|
||||
${VAXD}/vax_cis.c ${VAXD}/vax_octa.c ${VAXD}/vax_cmode.c \
|
||||
${VAXD}/vax_mmu.c ${VAXD}/vax_stddev.c ${VAXD}/vax_sysdev.c \
|
||||
${VAXD}/vax_sys.c ${VAXD}/vax_syscm.c ${VAXD}/vax_syslist.c \
|
||||
${PDP11D}/pdp11_rl.c ${PDP11D}/pdp11_rq.c ${PDP11D}/pdp11_ts.c \
|
||||
${PDP11D}/pdp11_dz.c ${PDP11D}/pdp11_lp.c ${PDP11D}/pdp11_tq.c \
|
||||
${PDP11D}/pdp11_xq.c ${PDP11D}/pdp11_ry.c ${PDP11D}/pdp11_vh.c \
|
||||
${PDP11D}/pdp11_cr.c ${PDP11D}/pdp11_io_lib.c
|
||||
VAX_OPT = -DVM_VAX -DUSE_INT64 -DUSE_ADDR64 -I ${VAXD} -I ${PDP11D} ${NETWORK_OPT}
|
||||
|
||||
|
||||
VAX780 = ${VAXD}/vax_cpu.c ${VAXD}/vax_cpu1.c ${VAXD}/vax_fpa.c \
|
||||
${VAXD}/vax_cis.c ${VAXD}/vax_octa.c ${VAXD}/vax_cmode.c \
|
||||
${VAXD}/vax_mmu.c ${VAXD}/vax_sys.c ${VAXD}/vax_syscm.c \
|
||||
${VAXD}/vax780_stddev.c ${VAXD}/vax780_sbi.c \
|
||||
${VAXD}/vax780_mem.c ${VAXD}/vax780_uba.c ${VAXD}/vax780_mba.c \
|
||||
${VAXD}/vax780_fload.c ${VAXD}/vax780_syslist.c \
|
||||
${PDP11D}/pdp11_rl.c ${PDP11D}/pdp11_rq.c ${PDP11D}/pdp11_ts.c \
|
||||
${PDP11D}/pdp11_dz.c ${PDP11D}/pdp11_lp.c ${PDP11D}/pdp11_tq.c \
|
||||
${PDP11D}/pdp11_xu.c ${PDP11D}/pdp11_ry.c ${PDP11D}/pdp11_cr.c \
|
||||
${PDP11D}/pdp11_rp.c ${PDP11D}/pdp11_tu.c ${PDP11D}/pdp11_hk.c \
|
||||
${PDP11D}/pdp11_io_lib.c
|
||||
VAX780_OPT = -DVM_VAX -DVAX_780 -DUSE_INT64 -DUSE_ADDR64 -I VAX -I ${PDP11D} ${NETWORK_OPT}
|
||||
|
||||
|
||||
PDP10D = PDP10
|
||||
PDP10 = ${PDP10D}/pdp10_fe.c ${PDP11D}/pdp11_dz.c ${PDP10D}/pdp10_cpu.c \
|
||||
${PDP10D}/pdp10_ksio.c ${PDP10D}/pdp10_lp20.c ${PDP10D}/pdp10_mdfp.c \
|
||||
${PDP10D}/pdp10_pag.c ${PDP10D}/pdp10_rp.c ${PDP10D}/pdp10_sys.c \
|
||||
${PDP10D}/pdp10_tim.c ${PDP10D}/pdp10_tu.c ${PDP10D}/pdp10_xtnd.c \
|
||||
${PDP11D}/pdp11_pt.c ${PDP11D}/pdp11_ry.c \
|
||||
${PDP11D}/pdp11_cr.c
|
||||
PDP10_OPT = -DVM_PDP10 -DUSE_INT64 -I ${PDP10D} -I ${PDP11D}
|
||||
|
||||
|
||||
|
||||
PDP8D = PDP8
|
||||
PDP8 = ${PDP8D}/pdp8_cpu.c ${PDP8D}/pdp8_clk.c ${PDP8D}/pdp8_df.c \
|
||||
${PDP8D}/pdp8_dt.c ${PDP8D}/pdp8_lp.c ${PDP8D}/pdp8_mt.c \
|
||||
${PDP8D}/pdp8_pt.c ${PDP8D}/pdp8_rf.c ${PDP8D}/pdp8_rk.c \
|
||||
${PDP8D}/pdp8_rx.c ${PDP8D}/pdp8_sys.c ${PDP8D}/pdp8_tt.c \
|
||||
${PDP8D}/pdp8_ttx.c ${PDP8D}/pdp8_rl.c ${PDP8D}/pdp8_tsc.c \
|
||||
${PDP8D}/pdp8_td.c ${PDP8D}/pdp8_ct.c ${PDP8D}/pdp8_fpp.c
|
||||
PDP8_OPT = -I ${PDP8D}
|
||||
|
||||
|
||||
H316D = h316
|
||||
H316 = ${H316D}/h316_stddev.c ${H316D}/h316_lp.c ${H316D}/h316_cpu.c \
|
||||
${H316D}/h316_sys.c ${H316D}/h316_mt.c ${H316D}/h316_fhd.c \
|
||||
${H316D}/h316_dp.c
|
||||
H316_OPT = -I ${H316D}
|
||||
|
||||
|
||||
HP2100D = HP2100
|
||||
HP2100 = ${HP2100D}/hp2100_stddev.c ${HP2100D}/hp2100_dp.c ${HP2100D}/hp2100_dq.c \
|
||||
${HP2100D}/hp2100_dr.c ${HP2100D}/hp2100_lps.c ${HP2100D}/hp2100_ms.c \
|
||||
${HP2100D}/hp2100_mt.c ${HP2100D}/hp2100_mux.c ${HP2100D}/hp2100_cpu.c \
|
||||
${HP2100D}/hp2100_fp.c ${HP2100D}/hp2100_sys.c ${HP2100D}/hp2100_lpt.c \
|
||||
${HP2100D}/hp2100_ipl.c ${HP2100D}/hp2100_ds.c ${HP2100D}/hp2100_cpu0.c \
|
||||
${HP2100D}/hp2100_cpu1.c ${HP2100D}/hp2100_cpu2.c ${HP2100D}/hp2100_cpu3.c \
|
||||
${HP2100D}/hp2100_cpu4.c ${HP2100D}/hp2100_cpu5.c ${HP2100D}/hp2100_cpu6.c \
|
||||
${HP2100D}/hp2100_cpu7.c ${HP2100D}/hp2100_fp1.c ${HP2100D}/hp2100_baci.c \
|
||||
${HP2100D}/hp2100_mpx.c ${HP2100D}/hp2100_pif.c ${HP2100D}/hp2100_di.c \
|
||||
${HP2100D}/hp2100_di_da.c ${HP2100D}/hp_disclib.c
|
||||
HP2100_OPT = -DHAVE_INT64 -I ${HP2100D}
|
||||
|
||||
|
||||
I1401D = I1401
|
||||
I1401 = ${I1401D}/i1401_lp.c ${I1401D}/i1401_cpu.c ${I1401D}/i1401_iq.c \
|
||||
${I1401D}/i1401_cd.c ${I1401D}/i1401_mt.c ${I1401D}/i1401_dp.c \
|
||||
${I1401D}/i1401_sys.c
|
||||
I1401_OPT = -I ${I1401D}
|
||||
|
||||
|
||||
I1620D = I1620
|
||||
I1620 = ${I1620D}/i1620_cd.c ${I1620D}/i1620_dp.c ${I1620D}/i1620_pt.c \
|
||||
${I1620D}/i1620_tty.c ${I1620D}/i1620_cpu.c ${I1620D}/i1620_lp.c \
|
||||
${I1620D}/i1620_fp.c ${I1620D}/i1620_sys.c
|
||||
I1620_OPT = -I ${I1620D}
|
||||
|
||||
|
||||
I7094D = I7094
|
||||
I7094 = ${I7094D}/i7094_cpu.c ${I7094D}/i7094_cpu1.c ${I7094D}/i7094_io.c \
|
||||
${I7094D}/i7094_cd.c ${I7094D}/i7094_clk.c ${I7094D}/i7094_com.c \
|
||||
${I7094D}/i7094_drm.c ${I7094D}/i7094_dsk.c ${I7094D}/i7094_sys.c \
|
||||
${I7094D}/i7094_lp.c ${I7094D}/i7094_mt.c ${I7094D}/i7094_binloader.c
|
||||
I7094_OPT = -DUSE_INT64 -I ${I7094D}
|
||||
|
||||
|
||||
IBM1130D = Ibm1130
|
||||
IBM1130 = ${IBM1130D}/ibm1130_cpu.c ${IBM1130D}/ibm1130_cr.c \
|
||||
${IBM1130D}/ibm1130_disk.c ${IBM1130D}/ibm1130_stddev.c \
|
||||
${IBM1130D}/ibm1130_sys.c ${IBM1130D}/ibm1130_gdu.c \
|
||||
${IBM1130D}/ibm1130_gui.c ${IBM1130D}/ibm1130_prt.c \
|
||||
${IBM1130D}/ibm1130_fmt.c ${IBM1130D}/ibm1130_ptrp.c \
|
||||
${IBM1130D}/ibm1130_plot.c ${IBM1130D}/ibm1130_sca.c \
|
||||
${IBM1130D}/ibm1130_t2741.c
|
||||
IBM1130_OPT = -I ${IBM1130D}
|
||||
|
||||
|
||||
ID16D = Interdata
|
||||
ID16 = ${ID16D}/id16_cpu.c ${ID16D}/id16_sys.c ${ID16D}/id_dp.c \
|
||||
${ID16D}/id_fd.c ${ID16D}/id_fp.c ${ID16D}/id_idc.c ${ID16D}/id_io.c \
|
||||
${ID16D}/id_lp.c ${ID16D}/id_mt.c ${ID16D}/id_pas.c ${ID16D}/id_pt.c \
|
||||
${ID16D}/id_tt.c ${ID16D}/id_uvc.c ${ID16D}/id16_dboot.c ${ID16D}/id_ttp.c
|
||||
ID16_OPT = -I ${ID16D}
|
||||
|
||||
|
||||
ID32D = Interdata
|
||||
ID32 = ${ID32D}/id32_cpu.c ${ID32D}/id32_sys.c ${ID32D}/id_dp.c \
|
||||
${ID32D}/id_fd.c ${ID32D}/id_fp.c ${ID32D}/id_idc.c ${ID32D}/id_io.c \
|
||||
${ID32D}/id_lp.c ${ID32D}/id_mt.c ${ID32D}/id_pas.c ${ID32D}/id_pt.c \
|
||||
${ID32D}/id_tt.c ${ID32D}/id_uvc.c ${ID32D}/id32_dboot.c ${ID32D}/id_ttp.c
|
||||
ID32_OPT = -I ${ID32D}
|
||||
|
||||
|
||||
S3D = S3
|
||||
S3 = ${S3D}/s3_cd.c ${S3D}/s3_cpu.c ${S3D}/s3_disk.c ${S3D}/s3_lp.c \
|
||||
${S3D}/s3_pkb.c ${S3D}/s3_sys.c
|
||||
S3_OPT = -I ${S3D}
|
||||
|
||||
|
||||
ALTAIRD = ALTAIR
|
||||
ALTAIR = ${ALTAIRD}/altair_sio.c ${ALTAIRD}/altair_cpu.c ${ALTAIRD}/altair_dsk.c \
|
||||
${ALTAIRD}/altair_sys.c
|
||||
ALTAIR_OPT = -I ${ALTAIRD}
|
||||
|
||||
|
||||
ALTAIRZ80D = AltairZ80
|
||||
ALTAIRZ80 = ${ALTAIRZ80D}/altairz80_cpu.c ${ALTAIRZ80D}/altairz80_cpu_nommu.c \
|
||||
${ALTAIRZ80D}/altairz80_dsk.c ${ALTAIRZ80D}/disasm.c \
|
||||
${ALTAIRZ80D}/altairz80_sio.c ${ALTAIRZ80D}/altairz80_sys.c \
|
||||
${ALTAIRZ80D}/altairz80_hdsk.c ${ALTAIRZ80D}/altairz80_net.c \
|
||||
${ALTAIRZ80D}/flashwriter2.c ${ALTAIRZ80D}/i86_decode.c \
|
||||
${ALTAIRZ80D}/i86_ops.c ${ALTAIRZ80D}/i86_prim_ops.c \
|
||||
${ALTAIRZ80D}/i8272.c ${ALTAIRZ80D}/insnsd.c \
|
||||
${ALTAIRZ80D}/mfdc.c ${ALTAIRZ80D}/n8vem.c ${ALTAIRZ80D}/vfdhd.c \
|
||||
${ALTAIRZ80D}/s100_disk1a.c ${ALTAIRZ80D}/s100_disk2.c ${ALTAIRZ80D}/s100_disk3.c\
|
||||
${ALTAIRZ80D}/s100_fif.c ${ALTAIRZ80D}/s100_mdriveh.c \
|
||||
${ALTAIRZ80D}/s100_mdsad.c ${ALTAIRZ80D}/s100_selchan.c \
|
||||
${ALTAIRZ80D}/s100_ss1.c ${ALTAIRZ80D}/s100_64fdc.c \
|
||||
${ALTAIRZ80D}/s100_scp300f.c ${ALTAIRZ80D}/sim_imd.c \
|
||||
${ALTAIRZ80D}/wd179x.c ${ALTAIRZ80D}/s100_hdc1001.c \
|
||||
${ALTAIRZ80D}/s100_if3.c ${ALTAIRZ80D}/s100_adcs6.c
|
||||
ALTAIRZ80_OPT = -I ${ALTAIRZ80D}
|
||||
|
||||
|
||||
GRID = GRI
|
||||
GRI = ${GRID}/gri_cpu.c ${GRID}/gri_stddev.c ${GRID}/gri_sys.c
|
||||
GRI_OPT = -I ${GRID}
|
||||
|
||||
|
||||
LGPD = LGP
|
||||
LGP = ${LGPD}/lgp_cpu.c ${LGPD}/lgp_stddev.c ${LGPD}/lgp_sys.c
|
||||
LGP_OPT = -I ${LGPD}
|
||||
|
||||
|
||||
SDSD = SDS
|
||||
SDS = ${SDSD}/sds_cpu.c ${SDSD}/sds_drm.c ${SDSD}/sds_dsk.c ${SDSD}/sds_io.c \
|
||||
${SDSD}/sds_lp.c ${SDSD}/sds_mt.c ${SDSD}/sds_mux.c ${SDSD}/sds_rad.c \
|
||||
${SDSD}/sds_stddev.c ${SDSD}/sds_sys.c
|
||||
SDS_OPT = -I ${SDSD}
|
||||
|
||||
SWTPD = swtp
|
||||
SWTP = ${SWTPD}/swtp_cpu.c ${SWTPD}/swtp_dsk.c ${SWTPD}/swtp_sio.c \
|
||||
${SWTPD}/swtp_sys.c
|
||||
SWTP_OPT = -I ${SWTPD}
|
||||
|
||||
|
||||
#
|
||||
# Build everything
|
||||
#
|
||||
ALL = pdp1 pdp4 pdp7 pdp8 pdp9 pdp15 pdp11 pdp10 \
|
||||
vax vax780 nova eclipse hp2100 i1401 i1620 s3 \
|
||||
altair altairz80 gri i1620 i7094 ibm1130 id16 \
|
||||
id32 sds lgp h316 swtp
|
||||
|
||||
all : ${ALL}
|
||||
|
||||
clean :
|
||||
ifeq ($(WIN32),)
|
||||
${RM} -r ${BIN}
|
||||
else
|
||||
if exist BIN\*.exe del /q BIN\*.exe
|
||||
if exist BIN rmdir BIN
|
||||
endif
|
||||
|
||||
#
|
||||
# Individual builds
|
||||
#
|
||||
pdp1 : ${BIN}pdp1${EXE}
|
||||
|
||||
${BIN}pdp1${EXE} : ${PDP1} ${SIM}
|
||||
${CC} ${PDP1} ${SIM} ${PDP1_OPT} -o $@ ${LDFLAGS}
|
||||
|
||||
pdp4 : ${BIN}pdp4${EXE}
|
||||
|
||||
${BIN}pdp4${EXE} : ${PDP18B} ${SIM}
|
||||
${CC} ${PDP18B} ${SIM} ${PDP4_OPT} -o $@ ${LDFLAGS}
|
||||
|
||||
pdp7 : ${BIN}pdp7${EXE}
|
||||
|
||||
${BIN}pdp7${EXE} : ${PDP18B} ${SIM}
|
||||
${CC} ${PDP18B} ${SIM} ${PDP7_OPT} -o $@ ${LDFLAGS}
|
||||
|
||||
pdp8 : ${BIN}pdp8${EXE}
|
||||
|
||||
${BIN}pdp8${EXE} : ${PDP8} ${SIM}
|
||||
${CC} ${PDP8} ${SIM} ${PDP8_OPT} -o $@ ${LDFLAGS}
|
||||
|
||||
pdp9 : ${BIN}pdp9${EXE}
|
||||
|
||||
${BIN}pdp9${EXE} : ${PDP18B} ${SIM}
|
||||
${CC} ${PDP18B} ${SIM} ${PDP9_OPT} -o $@ ${LDFLAGS}
|
||||
|
||||
pdp15 : ${BIN}pdp15${EXE}
|
||||
|
||||
${BIN}pdp15${EXE} : ${PDP18B} ${SIM}
|
||||
${CC} ${PDP18B} ${SIM} ${PDP15_OPT} -o $@ ${LDFLAGS}
|
||||
|
||||
pdp10 : ${BIN}pdp10${EXE}
|
||||
|
||||
${BIN}pdp10${EXE} : ${PDP10} ${SIM}
|
||||
${CC} ${PDP10} ${SIM} ${PDP10_OPT} -o $@ ${LDFLAGS}
|
||||
|
||||
pdp11 : ${BIN}pdp11${EXE}
|
||||
|
||||
${BIN}pdp11${EXE} : ${PDP11} ${SIM}
|
||||
${CC} ${PDP11} ${SIM} ${PDP11_OPT} -o $@ ${LDFLAGS}
|
||||
|
||||
vax : ${BIN}vax${EXE}
|
||||
|
||||
${BIN}vax${EXE} : ${VAX} ${SIM}
|
||||
${CC} ${VAX} ${SIM} ${VAX_OPT} -o $@ ${LDFLAGS}
|
||||
|
||||
vax780 : ${BIN}vax780${EXE}
|
||||
|
||||
${BIN}vax780${EXE} : ${VAX780} ${SIM}
|
||||
${CC} ${VAX780} ${SIM} ${VAX780_OPT} -o $@ ${LDFLAGS}
|
||||
|
||||
nova : ${BIN}nova${EXE}
|
||||
|
||||
${BIN}nova${EXE} : ${NOVA} ${SIM}
|
||||
${CC} ${NOVA} ${SIM} ${NOVA_OPT} -o $@ ${LDFLAGS}
|
||||
|
||||
eclipse : ${BIN}eclipse${EXE}
|
||||
|
||||
${BIN}eclipse${EXE} : ${ECLIPSE} ${SIM}
|
||||
${CC} ${ECLIPSE} ${SIM} ${ECLIPSE_OPT} -o $@ ${LDFLAGS}
|
||||
|
||||
h316 : ${BIN}h316${EXE}
|
||||
|
||||
${BIN}h316${EXE} : ${H316} ${SIM}
|
||||
${CC} ${H316} ${SIM} ${H316_OPT} -o $@ ${LDFLAGS}
|
||||
|
||||
hp2100 : ${BIN}hp2100${EXE}
|
||||
|
||||
${BIN}hp2100${EXE} : ${HP2100} ${SIM}
|
||||
${CC} ${HP2100} ${SIM} ${HP2100_OPT} -o $@ ${LDFLAGS}
|
||||
|
||||
i1401 : ${BIN}i1401${EXE}
|
||||
|
||||
${BIN}i1401${EXE} : ${I1401} ${SIM}
|
||||
${CC} ${I1401} ${SIM} ${I1401_OPT} -o $@ ${LDFLAGS}
|
||||
|
||||
i1620 : ${BIN}i1620${EXE}
|
||||
|
||||
${BIN}i1620${EXE} : ${I1620} ${SIM}
|
||||
${CC} ${I1620} ${SIM} ${I1620_OPT} -o $@ ${LDFLAGS}
|
||||
|
||||
i7094 : ${BIN}i7094${EXE}
|
||||
|
||||
${BIN}i7094${EXE} : ${I7094} ${SIM}
|
||||
${CC} ${I7094} ${SIM} ${I7094_OPT} -o $@ ${LDFLAGS}
|
||||
|
||||
ibm1130 : ${BIN}ibm1130${EXE}
|
||||
|
||||
${BIN}ibm1130${EXE} : ${IBM1130}
|
||||
${CC} ${IBM1130} ${SIM} ${IBM1130_OPT} -o $@ ${LDFLAGS}
|
||||
|
||||
s3 : ${BIN}s3${EXE}
|
||||
|
||||
${BIN}s3${EXE} : ${S3} ${SIM}
|
||||
${CC} ${S3} ${SIM} ${S3_OPT} -o $@ ${LDFLAGS}
|
||||
|
||||
altair : ${BIN}altair${EXE}
|
||||
|
||||
${BIN}altair${EXE} : ${ALTAIR} ${SIM}
|
||||
${CC} ${ALTAIR} ${SIM} ${ALTAIR_OPT} -o $@ ${LDFLAGS}
|
||||
|
||||
altairz80 : ${BIN}altairz80${EXE}
|
||||
|
||||
${BIN}altairz80${EXE} : ${ALTAIRZ80} ${SIM}
|
||||
${CC} ${ALTAIRZ80} ${SIM} ${ALTAIRZ80_OPT} -o $@ ${LDFLAGS}
|
||||
|
||||
gri : ${BIN}gri${EXE}
|
||||
|
||||
${BIN}gri${EXE} : ${GRI} ${SIM}
|
||||
${CC} ${GRI} ${SIM} ${GRI_OPT} -o $@ ${LDFLAGS}
|
||||
|
||||
lgp : ${BIN}lgp${EXE}
|
||||
|
||||
${BIN}lgp${EXE} : ${LGP} ${SIM}
|
||||
${CC} ${LGP} ${SIM} ${LGP_OPT} -o $@ ${LDFLAGS}
|
||||
|
||||
id16 : ${BIN}id16${EXE}
|
||||
|
||||
${BIN}id16${EXE} : ${ID16} ${SIM}
|
||||
${CC} ${ID16} ${SIM} ${ID16_OPT} -o $@ ${LDFLAGS}
|
||||
|
||||
id32 : ${BIN}id32${EXE}
|
||||
|
||||
${BIN}id32${EXE} : ${ID32} ${SIM}
|
||||
${CC} ${ID32} ${SIM} ${ID32_OPT} -o $@ ${LDFLAGS}
|
||||
|
||||
sds : ${BIN}sds${EXE}
|
||||
|
||||
${BIN}sds${EXE} : ${SDS} ${SIM}
|
||||
${CC} ${SDS} ${SIM} ${SDS_OPT} -o $@ ${LDFLAGS}
|
||||
|
||||
swtp : ${BIN}swtp${EXE}
|
||||
|
||||
${BIN}swtp${EXE} : ${SWTP} ${SIM}
|
||||
${CC} ${SWTP} ${SIM} ${SWTP_OPT} -o $@ ${LDFLAGS}
|
||||
@ -191,6 +191,9 @@ patch date module(s) and fix(es)
|
||||
- fixed backspace over tapemark not to set EOR (Van Snyder)
|
||||
- added no rewind option (Van Snyder)
|
||||
|
||||
i1401_sys.c:
|
||||
- fixed misuse of & instead of && in decode (Peter Schorn)
|
||||
|
||||
pdp1_cpu.c:
|
||||
- fixed misuse of & instead of && in Ea_ch (Michael Bloom)
|
||||
|
||||
@ -204,7 +207,8 @@ patch date module(s) and fix(es)
|
||||
- fixed priority of PIRQ vs IO; added INT_INTERNALn
|
||||
|
||||
pdp11_io.c:
|
||||
- fixed Qbus interrupts to treat all IO devices as BR4
|
||||
- fixed Qbus interrupts to treat all IO devices (except clock) as BR4
|
||||
- fixed order of int_internal (Jordi Guillaumes i Pons)
|
||||
|
||||
ppd11_rf.c
|
||||
- fixed bug in updating mem addr extension (Peter Schorn)
|
||||
@ -319,7 +323,7 @@ patch date module(s) and fix(es)
|
||||
- fixed bug in scan function decode (Peter Schorn)
|
||||
|
||||
vax_cpu.c:
|
||||
- revised idle design Mark Pizzolato)
|
||||
- revised idle design (Mark Pizzolato)
|
||||
- fixed bug in SET CPU IDLE
|
||||
- fixed failure to clear PSL<tp> in BPT, XFC
|
||||
|
||||
|
||||
@ -144,7 +144,7 @@ t_stat BOOTROM_config (UNIT *uptr, int32 val, char *cptr, void *desc)
|
||||
if (val == UNIT_NONE)
|
||||
BOOTROM_unit.capac = 0; /* set EPROM size */
|
||||
else
|
||||
BOOTROM_unit.capac = 0x200 << ((val >> UNIT_V_MSIZE) - 1); /* set EPROM size */
|
||||
BOOTROM_unit.capac = 0x200 << (val >> UNIT_V_MSIZE) - 1; /* set EPROM size */
|
||||
if (BOOTROM_unit.filebuf) { /* free buffer */
|
||||
free (BOOTROM_unit.filebuf);
|
||||
BOOTROM_unit.filebuf = NULL;
|
||||
@ -161,9 +161,9 @@ t_stat BOOTROM_config (UNIT *uptr, int32 val, char *cptr, void *desc)
|
||||
|
||||
t_stat BOOTROM_reset (DEVICE *dptr)
|
||||
{
|
||||
t_addr j;
|
||||
int c;
|
||||
int j, c;
|
||||
FILE *fp;
|
||||
t_stat r;
|
||||
|
||||
if (BOOTROM_dev.dctrl & DEBUG_flow)
|
||||
printf("BOOTROM_reset: \n");
|
||||
@ -195,7 +195,7 @@ t_stat BOOTROM_reset (DEVICE *dptr)
|
||||
j = 0; /* load EPROM file */
|
||||
c = fgetc(fp);
|
||||
while (c != EOF) {
|
||||
*((uint8 *)(BOOTROM_unit.filebuf) + j++) = c & 0xFF;
|
||||
*(uint8 *)(BOOTROM_unit.filebuf + j++) = c & 0xFF;
|
||||
c = fgetc(fp);
|
||||
if (j > BOOTROM_unit.capac) {
|
||||
printf("\tImage is too large - Load truncated!!!\n");
|
||||
@ -222,7 +222,7 @@ int32 BOOTROM_get_mbyte(int32 offset)
|
||||
}
|
||||
if (BOOTROM_dev.dctrl & DEBUG_read)
|
||||
printf("BOOTROM_get_mbyte: offset=%04X\n", offset);
|
||||
val = *((uint8 *)(BOOTROM_unit.filebuf) + offset) & 0xFF;
|
||||
val = *(uint8 *)(BOOTROM_unit.filebuf + offset) & 0xFF;
|
||||
if (BOOTROM_dev.dctrl & DEBUG_read)
|
||||
printf("BOOTROM_get_mbyte: Normal val=%02X\n", val);
|
||||
return val;
|
||||
|
||||
@ -368,6 +368,7 @@ t_stat dsk_reset (DEVICE *dptr)
|
||||
int32 fdcdrv(int32 io, int32 data)
|
||||
{
|
||||
static long pos;
|
||||
char buf[128];
|
||||
|
||||
if (io) { /* write to DC-4 drive register */
|
||||
if (dsk_dev.dctrl & DEBUG_write)
|
||||
@ -393,9 +394,9 @@ int32 fdcdrv(int32 io, int32 data)
|
||||
sim_fread(dsk_unit[cur_dsk].filebuf, SECSIZ, 1, dsk_unit[cur_dsk].fileref); /* read in buffer */
|
||||
dsk_unit[cur_dsk].u3 |= BUSY | DRQ; /* set DRQ & BUSY */
|
||||
dsk_unit[cur_dsk].pos = 0; /* clear counter */
|
||||
spt = *((uint8 *)(dsk_unit[cur_dsk].filebuf) + MAXSEC) & 0xFF;
|
||||
spt = *(uint8 *)(dsk_unit[cur_dsk].filebuf + MAXSEC) & 0xFF;
|
||||
heds = 0;
|
||||
cpd = *((uint8 *)(dsk_unit[cur_dsk].filebuf) + MAXCYL) & 0xFF;
|
||||
cpd = *(uint8 *)(dsk_unit[cur_dsk].filebuf + MAXCYL) & 0xFF;
|
||||
trksiz = spt * SECSIZ;
|
||||
dsksiz = trksiz * cpd;
|
||||
if (dsk_dev.dctrl & DEBUG_read)
|
||||
@ -537,7 +538,7 @@ int32 fdcdata(int32 io, int32 data)
|
||||
if (dsk_unit[cur_dsk].pos < SECSIZ) { /* copy bytes to buffer */
|
||||
if (dsk_dev.dctrl & DEBUG_write)
|
||||
printf("\nfdcdata: Writing byte %d of %02X", dsk_unit[cur_dsk].pos, data);
|
||||
*((uint8 *)(dsk_unit[cur_dsk].filebuf) + dsk_unit[cur_dsk].pos) = data; /* byte into buffer */
|
||||
*(uint8 *)(dsk_unit[cur_dsk].filebuf + dsk_unit[cur_dsk].pos) = data; /* byte into buffer */
|
||||
dsk_unit[cur_dsk].pos++; /* step counter */
|
||||
if (dsk_unit[cur_dsk].pos == SECSIZ) {
|
||||
dsk_unit[cur_dsk].u3 &= ~(BUSY | DRQ);
|
||||
@ -554,7 +555,7 @@ int32 fdcdata(int32 io, int32 data)
|
||||
if (dsk_unit[cur_dsk].pos < SECSIZ) { /* copy bytes from buffer */
|
||||
if (dsk_dev.dctrl & DEBUG_read)
|
||||
printf("\nfdcdata: Reading byte %d u3=%02X", dsk_unit[cur_dsk].pos, dsk_unit[cur_dsk].u3);
|
||||
val = *((uint8 *)(dsk_unit[cur_dsk].filebuf) + dsk_unit[cur_dsk].pos) & 0xFF;
|
||||
val = *(uint8 *)(dsk_unit[cur_dsk].filebuf + dsk_unit[cur_dsk].pos) & 0xFF;
|
||||
dsk_unit[cur_dsk].pos++; /* step counter */
|
||||
if (dsk_unit[cur_dsk].pos == SECSIZ) { /* done? */
|
||||
dsk_unit[cur_dsk].u3 &= ~(BUSY | DRQ); /* clear flags */
|
||||
|
||||
@ -121,7 +121,7 @@ t_stat i2716_attach (UNIT *uptr, char *cptr)
|
||||
printf("\tOpen file\n");
|
||||
fp = fopen(uptr->filename, "rb"); /* open EPROM file */
|
||||
if (fp == NULL) {
|
||||
printf("i2716%d: Unable to open ROM file %s\n", (int)(uptr - i2716_dev.units), uptr->filename);
|
||||
printf("i2716%d: Unable to open ROM file %s\n", uptr - i2716_dev.units, uptr->filename);
|
||||
printf("\tNo ROM image loaded!!!\n");
|
||||
return SCPE_OK;
|
||||
}
|
||||
@ -130,7 +130,7 @@ t_stat i2716_attach (UNIT *uptr, char *cptr)
|
||||
j = 0; /* load EPROM file */
|
||||
c = fgetc(fp);
|
||||
while (c != EOF) {
|
||||
*((uint8 *)(uptr->filebuf) + j++) = c & 0xFF;
|
||||
*(uint8 *)(uptr->filebuf + j++) = c & 0xFF;
|
||||
c = fgetc(fp);
|
||||
if (j > 2048) {
|
||||
printf("\tImage is too large - Load truncated!!!\n");
|
||||
@ -150,7 +150,8 @@ t_stat i2716_attach (UNIT *uptr, char *cptr)
|
||||
|
||||
t_stat i2716_reset (DEVICE *dptr)
|
||||
{
|
||||
int32 i, base;
|
||||
int32 i, j, c, base;
|
||||
t_stat r;
|
||||
UNIT *uptr;
|
||||
|
||||
if (i2716_dev.dctrl & DEBUG_flow)
|
||||
@ -206,7 +207,7 @@ int32 i2716_get_mbyte(int32 offset)
|
||||
printf("i2716_get_mbyte: EPROM not configured\n");
|
||||
return 0xFF;
|
||||
} else {
|
||||
val = *((uint8 *)(uptr->filebuf) + (offset - org));
|
||||
val = *(uint8 *)(uptr->filebuf + (offset - org));
|
||||
if (i2716_dev.dctrl & DEBUG_read)
|
||||
printf(" val=%04X\n", val);
|
||||
return (val & 0xFF);
|
||||
|
||||
@ -120,7 +120,7 @@ int32 int_req = 0; /* Interrupt request */
|
||||
int32 mem_fault = 0; /* memory fault flag */
|
||||
|
||||
extern int32 sim_int_char;
|
||||
extern uint32 sim_brk_types, sim_brk_dflt, sim_brk_summ; /* breakpoint info */
|
||||
extern int32 sim_brk_types, sim_brk_dflt, sim_brk_summ; /* breakpoint info */
|
||||
|
||||
/* function prototypes */
|
||||
|
||||
@ -1892,7 +1892,7 @@ void condevalVa(int32 op1, int32 op2)
|
||||
{
|
||||
if (get_flag(CF))
|
||||
COND_SET_FLAG_V(((op1 & 0x80) && (op2 & 0x80)) || (
|
||||
((op1 & 0x80) == 0) && ((op2 & 0x80) == 0)));
|
||||
(op1 & 0x80 == 0) && (op2 & 0x80 == 0)));
|
||||
}
|
||||
|
||||
/* test and set V for subtraction */
|
||||
@ -1900,8 +1900,8 @@ void condevalVa(int32 op1, int32 op2)
|
||||
void condevalVs(int32 op1, int32 op2)
|
||||
{
|
||||
if (get_flag(CF))
|
||||
COND_SET_FLAG_V(((op1 & 0x80) && ((op2 & 0x80) == 0)) ||
|
||||
(((op1 & 0x80) == 0) && (op2 & 0x80)));
|
||||
COND_SET_FLAG_V(((op1 & 0x80) && (op2 & 0x80 == 0)) ||
|
||||
((op1 & 0x80 == 0) && (op2 & 0x80)));
|
||||
}
|
||||
|
||||
/* calls from the simulator */
|
||||
|
||||
@ -111,12 +111,12 @@ t_stat m6810_reset (DEVICE *dptr)
|
||||
|
||||
int32 m6810_get_mbyte(int32 offset)
|
||||
{
|
||||
int32 val;
|
||||
int32 val, org, len;
|
||||
|
||||
if (m6810_dev.dctrl & DEBUG_read)
|
||||
printf("m6810_get_mbyte: offset=%04X\n", offset);
|
||||
if (((t_addr)offset) < m6810_unit.capac) {
|
||||
val = *((uint8 *)(m6810_unit.filebuf) + offset) & 0xFF;
|
||||
if (offset < m6810_unit.capac) {
|
||||
val = *(uint8 *)(m6810_unit.filebuf + offset) & 0xFF;
|
||||
if (m6810_dev.dctrl & DEBUG_read)
|
||||
printf("val=%04X\n", val);
|
||||
return val;
|
||||
@ -133,8 +133,8 @@ void m6810_put_mbyte(int32 offset, int32 val)
|
||||
{
|
||||
if (m6810_dev.dctrl & DEBUG_write)
|
||||
printf("m6810_put_mbyte: offset=%04X, val=%02X\n", offset, val);
|
||||
if ((t_addr)offset < m6810_unit.capac) {
|
||||
*((uint8 *)(m6810_unit.filebuf) + offset) = val & 0xFF;
|
||||
if (offset < m6810_unit.capac) {
|
||||
*(uint8 *)(m6810_unit.filebuf + offset) = val & 0xFF;
|
||||
return;
|
||||
} else {
|
||||
if (m6810_dev.dctrl & DEBUG_write)
|
||||
|
||||
@ -120,7 +120,7 @@ t_stat mp_8m_reset (DEVICE *dptr)
|
||||
}
|
||||
for (j=0; j<8192; j++) { /* fill pattern for testing */
|
||||
val = (0xA0 | i);
|
||||
*((uint8 *)(uptr->filebuf) + j) = val & 0xFF;
|
||||
*(uint8 *)(uptr->filebuf + j) = val & 0xFF;
|
||||
}
|
||||
}
|
||||
if (mp_8m_dev.dctrl & DEBUG_flow)
|
||||
@ -151,7 +151,7 @@ int32 mp_8m_get_mbyte(int32 addr)
|
||||
org = uptr->u3;
|
||||
len = uptr->capac - 1;
|
||||
if ((addr >= org) && (addr <= org + len)) {
|
||||
val = *((uint8 *)(uptr->filebuf) + (addr - org));
|
||||
val = *(uint8 *)(uptr->filebuf + (addr - org));
|
||||
if (mp_8m_dev.dctrl & DEBUG_read)
|
||||
printf(" val=%04X\n", val);
|
||||
return (val & 0xFF);
|
||||
@ -177,7 +177,7 @@ int32 mp_8m_get_mword(int32 addr)
|
||||
|
||||
void mp_8m_put_mbyte(int32 addr, int32 val)
|
||||
{
|
||||
int32 org, len;
|
||||
int32 org, len, type;
|
||||
int32 i;
|
||||
UNIT *uptr;
|
||||
|
||||
@ -188,7 +188,7 @@ void mp_8m_put_mbyte(int32 addr, int32 val)
|
||||
org = uptr->u3;
|
||||
len = uptr->capac - 1;
|
||||
if ((addr >= org) && (addr < org + len)) {
|
||||
*((uint8 *)(uptr->filebuf) + (addr - org)) = val & 0xFF;
|
||||
*(uint8 *)(uptr->filebuf + (addr - org)) = val & 0xFF;
|
||||
if (mp_8m_dev.dctrl & DEBUG_write)
|
||||
printf("\n");
|
||||
return;
|
||||
|
||||
@ -25,7 +25,7 @@ Copyright (c) 2005-2012, William Beech
|
||||
*/
|
||||
|
||||
#include <ctype.h>
|
||||
#include "sim_defs.h" // simulator defs
|
||||
#include "../../sim_defs.h" // simulator defs
|
||||
|
||||
/* Memory */
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user