Fix UTF-8 encoding for five files
This commit is contained in:
parent
869dc0fe4a
commit
27bd6b81aa
5 changed files with 534 additions and 534 deletions
|
@ -1676,7 +1676,7 @@ if (xidex) { /* is EMA declared? */
|
|||
}
|
||||
} /* not EMA reference */
|
||||
ndim = ReadW(dtbl++);
|
||||
if (ndim<0) goto em15; /* negative ´dimensions */
|
||||
if (ndim<0) goto em15; /* negative dimensions */
|
||||
sum = 0; /* accu for index calc */
|
||||
while (ndim > 0) {
|
||||
MR = ReadW (atbl++); /* fetch address of A(N) */
|
||||
|
|
714
I650/i650_cpu.c
714
I650/i650_cpu.c
File diff suppressed because it is too large
Load diff
|
@ -265,7 +265,7 @@ t_stat sca_set_baud (UNIT *uptr, int32 value, CONST char *cptr, void *desc)
|
|||
}
|
||||
|
||||
/*********************************************************************************************
|
||||
* HANDY MACROS
|
||||
* HANDY MACROS
|
||||
*********************************************************************************************/
|
||||
|
||||
#define in_bsc_mode() (sca_unit.flags & UNIT_BISYNC) /* TRUE if user selected BSC mode */
|
||||
|
@ -476,7 +476,7 @@ static t_stat sca_attach (UNIT *uptr, CONST char *cptr)
|
|||
return r;
|
||||
if (sca_lsock == INVALID_SOCKET)
|
||||
return SCPE_OPENERR;
|
||||
|
||||
|
||||
SETBIT(sca_unit.flags, UNIT_LISTEN); /* note that we are listening, not yet connected */
|
||||
|
||||
name[sizeof (name) - 1] = '\0';
|
||||
|
@ -524,12 +524,12 @@ static t_stat sca_attach (UNIT *uptr, CONST char *cptr)
|
|||
return SCPE_OPENERR;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* set up socket connect or listen. on success, set UNIT_ATT.
|
||||
* If listen mode, set UNIT_LISTEN. sca_svc will poll for connection
|
||||
* If connect mode, set dsw SCA_DSW_READY to indicate connection is up
|
||||
*/
|
||||
|
||||
|
||||
SETBIT(sca_unit.flags, UNIT_ATT); /* record successful socket binding */
|
||||
|
||||
sca_state = SCA_STATE_IDLE;
|
||||
|
@ -567,7 +567,7 @@ static t_stat sca_detach (UNIT *uptr)
|
|||
sim_close_sock(sca_lsock);
|
||||
sca_lsock = INVALID_SOCKET;
|
||||
}
|
||||
|
||||
|
||||
free(sca_unit.filename);
|
||||
sca_unit.filename = NULL;
|
||||
|
||||
|
@ -680,7 +680,7 @@ static t_stat sca_svc (UNIT *uptr)
|
|||
|
||||
if (sca_dsw & SCA_DSW_READY) { /* if connected */
|
||||
|
||||
/* if rcvd data buffer is empty, and if in one of the receive states, checÄk for arrival of received data */
|
||||
/* if rcvd data buffer is empty, and if in one of the receive states, check for arrival of received data */
|
||||
if (in_receive_state() && sca_rcvptr >= sca_nrcvd)
|
||||
sca_check_indata();
|
||||
|
||||
|
@ -927,7 +927,7 @@ void xio_sca (int32 iocc_addr, int32 func, int32 modify)
|
|||
sichar = (uint8) (ReadW(iocc_addr) >> 8);
|
||||
sca_nsyns = 0; /* reset SYN suppression */
|
||||
}
|
||||
/* else? does presence of mod bit preclude sending a character? */
|
||||
/* else? does presence of mod bit preclude sending a character? */
|
||||
if ((modify & 0x07) == 0) { /* no modifiers */
|
||||
/* transmit character --
|
||||
* note: in write mode, failure to write soon enough after a write response interrupt causes a check
|
||||
|
|
|
@ -68,12 +68,12 @@
|
|||
* The timer merely sets the INTERVAL DONE flag in the APR flags.
|
||||
* Whether that actually causes an interrupt is controlled by the
|
||||
* APR interrupt enable for the flag and by the PI system.
|
||||
*
|
||||
*
|
||||
* The flag is readable as an APR condition by RDAPR, and CONSO/Z APR,.
|
||||
* The flag is cleared by WRAPR 1b22!1b30 (clear, count done).
|
||||
*
|
||||
* The timebase is maintained with the 12 LSB zero in a workspace
|
||||
* register. When read by the OS, the actual value of the 10 MSB of
|
||||
* register. When read by the OS, the actual value of the 10 MSB of
|
||||
* the hardware counter is inserted into those bits, providing increased
|
||||
* resolution. Although the system reference manual says otherwise, the
|
||||
* two LSB of the counter are read as zero by the microcode (DPM2), so
|
||||
|
@ -213,7 +213,7 @@ DEVICE tim_dev = {
|
|||
/* Timebase - the timer is always running at less than hardware frequency,
|
||||
* need to interpolate the value by calculating how much of the current
|
||||
* clock tick has elapsed, and what that equates to in sysfreq units.
|
||||
*
|
||||
*
|
||||
* Read the contents of the time base registers, add the current contents of the
|
||||
* millisecond counter to the doubleword read, and place the result in location
|
||||
* E,E+1.
|
||||
|
@ -241,10 +241,10 @@ tim_incr_base (tempbase, incr);
|
|||
* that the counter is in a different clock domain from the microcode.
|
||||
* To make the domain crossing, the microcode reads the counter
|
||||
* until two consecutive values match.
|
||||
*
|
||||
* Since the microcode cycle time is 300 nsec, the LSBs of the
|
||||
* counter run too fast (244 nsec) for the strategy to work.
|
||||
* Ignoring the two LSB ensures that the value can't change any
|
||||
*
|
||||
* Since the microcode cycle time is 300 nsec, the LSBs of the
|
||||
* counter run too fast (244 nsec) for the strategy to work.
|
||||
* Ignoring the two LSB ensures that the value can't change any
|
||||
* faster than ~976 nsec, which guarantees a stable value can be
|
||||
* obtained in at most three attempts.
|
||||
*/
|
||||
|
@ -290,8 +290,8 @@ return FALSE;
|
|||
* This does not clear the harware counter, so the first
|
||||
* completion can come up to ~1 msc later than the new
|
||||
* period.
|
||||
*
|
||||
* Load the contents of location E into the interval register in
|
||||
*
|
||||
* Load the contents of location E into the interval register in
|
||||
* the workspace.
|
||||
*/
|
||||
|
||||
|
@ -308,13 +308,13 @@ int32 old_clk_tps = clk_tps;
|
|||
int32 old_tick_in_usecs = tick_in_usecs;
|
||||
|
||||
/*
|
||||
* The value provided is in hardware clicks. For a frequency of 4.1
|
||||
* The value provided is in hardware clicks. For a frequency of 4.1
|
||||
* MHz, that means that dividing by 4096 (shifting 12 to the right) we get
|
||||
* the aproximate value in milliseconds. If any of the rightmost bits is
|
||||
* one, we add one unit (4096 ticks ). Reference:
|
||||
* AA-H391A-TK_DECsystem-10_DECSYSTEM-20_Processor_Reference_Jun1982.pdf
|
||||
* (page 4-37):
|
||||
*
|
||||
*
|
||||
* The timer includes a 12-bit hardware millisecond counter, a doubleword
|
||||
* time base kept from it, and an interval register for timed interrupts. The
|
||||
* millisecond counter runs continuously at 4.1 MHz and represents an
|
||||
|
@ -329,26 +329,26 @@ int32 old_tick_in_usecs = tick_in_usecs;
|
|||
* program can initialize the time base as a number of milliseconds (the low
|
||||
* order twelve bits are ignored), and every time the counter overflows the
|
||||
* microcode adds 4096 (2**12) to the base.
|
||||
*
|
||||
*
|
||||
* The interval register (in the workspace) holds a period that is specified
|
||||
* by the program and corresponds in magnitude to the low order word of the
|
||||
* time base. This allows a maximum interval of 223 ms, which is almost 140
|
||||
* minutes. At the end of each interval, the :microcode sets Interval Done
|
||||
* (RDAPR bit 30), requesting an interrupt on the level assigned to the system
|
||||
* flags (§4.8). In a separate workspace register, the microcode starts with
|
||||
* the given period, decrements it by 4096 (2**12) every time the millisecond
|
||||
* flags (§4.8). In a separate workspace register, the microcode starts with
|
||||
* the given period, decrements it by 4096 (2**12) every time the millisecond
|
||||
* counter overflows, and sets the flag when the contents of this "time to go"
|
||||
* register reach zero or less. Hence the countdown is by milliseconds, and
|
||||
* any nonzero quantity in the low order twelve bits of the given period adds
|
||||
* a whole millisecond to the count. (However, following specification of an
|
||||
* interval by the program, the first downcount occurs at the first counter
|
||||
* register reach zero or less. Hence the countdown is by milliseconds, and
|
||||
* any nonzero quantity in the low order twelve bits of the given period adds
|
||||
* a whole millisecond to the count. (However, following specification of an
|
||||
* interval by the program, the first downcount occurs at the first counter
|
||||
* overflow regardless of when the register was loaded.)
|
||||
*/
|
||||
|
||||
tim_new_period = new_interval & ~TIM_HWRE_MASK;
|
||||
if (new_interval & TIM_HWRE_MASK)
|
||||
tim_new_period += 010000;
|
||||
|
||||
|
||||
if (tim_new_period == 0) {
|
||||
sim_debug (DEB_TPS, &tim_dev, "update_interval() - ignoring 0 value interval\n");
|
||||
return FALSE;
|
||||
|
@ -363,13 +363,13 @@ if (clk_tps != old_clk_tps)
|
|||
|
||||
/* tmxr is polled every tim_mult clks. Compute the divisor matching the target. */
|
||||
tim_mult = (clk_tps <= TIM_TMXR_FREQ) ? 1 : (clk_tps / TIM_TMXR_FREQ) ;
|
||||
|
||||
|
||||
/* Estimate instructions/tick for fixed timing - just for KLAD */
|
||||
tim_unit.wait = TIM_WAIT_IPS / clk_tps;
|
||||
tmxr_poll = tim_unit.wait * tim_mult;
|
||||
|
||||
/* The next tim_svc will update the activation time.
|
||||
*
|
||||
*
|
||||
*/
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -393,7 +393,7 @@ else {
|
|||
|
||||
/* tmxr is polled every tim_mult clks. Compute the divisor matching the target. */
|
||||
tim_mult = (clk_tps <= TIM_TMXR_FREQ) ? 1 : (clk_tps / TIM_TMXR_FREQ) ;
|
||||
|
||||
|
||||
tmxr_poll = tim_mult * (int32)(sim_timer_inst_per_sec () / clk_tps);/* set mux poll */
|
||||
tim_incr_base (tim_base, tim_period); /* incr time base based on period of expired interval */
|
||||
tim_period = tim_new_period; /* If interval has changed, update period */
|
||||
|
@ -456,7 +456,7 @@ t_stat tim_set_mod (UNIT *uptr, int32 val, CONST char *cptr, void *desc)
|
|||
{
|
||||
if (val & (UNIT_T20|UNIT_KLAD)) {
|
||||
clk_tps = TIM_TPS_T20;
|
||||
update_interval(((d10)(1000*4096))/clk_tps);
|
||||
update_interval(((d10)(1000*4096))/clk_tps);
|
||||
tmr_poll = tim_unit.wait;
|
||||
uptr->flags = uptr->flags | UNIT_Y2K;
|
||||
}
|
||||
|
@ -490,7 +490,7 @@ t_stat st = SCPE_OK;
|
|||
curtim = sim_get_time (NULL); /* get time */
|
||||
tptr = localtime (&curtim); /* decompose */
|
||||
if (tptr == NULL)
|
||||
return SCPE_NXM;
|
||||
return SCPE_NXM;
|
||||
if ((tptr->tm_year > 99) && !(tim_unit.flags & UNIT_Y2K))
|
||||
tptr->tm_year = 99; /* Y2K prob? */
|
||||
|
||||
|
|
|
@ -5,45 +5,45 @@
|
|||
[](https://ci.appveyor.com/project/simh/simh/history)
|
||||
|
||||
## Table of Contents:
|
||||
[WHAT'S NEW since simh v3.9](#whats-new-since-simh-v39)
|
||||
. . [New Simulators](#new-simulators)
|
||||
. . [Simulator Front Panel API](#simulator-front-panel-api)
|
||||
. . [New Functionality](#new-functionality)
|
||||
. . . . [DDCMP Synchronous host physical device support - framer](#ddcmp-synchronous-host-physical-device-support---framer)
|
||||
. . . . [Remote Console Facility](#remote-console-facility)
|
||||
. . . . [VAX/PDP11 Enhancements](#vaxpdp11-enhancements)
|
||||
. . . . [PDP11 Specific Enhancements](#pdp11-specific-enhancements)
|
||||
. . . . [PDP10 Enhancements](#pdp10-enhancements)
|
||||
. . . . [SDS 940 Enhancements](#sds-940-enhancements)
|
||||
. . . . [Terminal Multiplexer additions](#terminal-multiplexer-additions)
|
||||
. . . . [Video Display Capabilities](#video-display-capabilities)
|
||||
. . . . [Asynchronous I/O](#asynchronous-io)
|
||||
. . . . [Clock/Timer Enhancements](#clocktimer-enhancements)
|
||||
. . . . [Ethernet Transport Enhancements](#ethernet-transport-enhancements)
|
||||
. . . . [Disk Extensions](#disk-extensions)
|
||||
. . . . [Embedded ROM support](#embedded-rom-support)
|
||||
. . . . [Control Flow](#control-flow)
|
||||
. . . . [Scriptable interactions with running simulators](#scriptable-interactions-with-running-simulators)
|
||||
. . . . [Help](#help)
|
||||
. . . . [Generic SCP support Clock Coscheduling as opposed to per simulator implementations](#generic-scp-support-clock-coscheduling-as-opposed-to-per-simulator-implementations)
|
||||
. . . . [New SCP Commands](#new-scp-commands)
|
||||
. . . . [Command Processing Enhancements](#command-processing-enhancements)
|
||||
. . . . . . [Environment variable insertion](#environment-variable-insertion)
|
||||
. . . . . . [Command aliases](#command-aliases)
|
||||
. . . . . . [Do command argument manipulation](#do-command-argument-manipulation)
|
||||
. . [Building and running a simulator](#building-and-running-a-simulator)
|
||||
. . . . [Use Prebuilt Windows Simulators](#use-prebuilt-windows-simulators)
|
||||
. . . . [Building simulators yourself](#building-simulators-yourself)
|
||||
. . . . . . [Linux/OSX other *nix platforms](#linuxosx-other-nix-platforms)
|
||||
. . . . . . . . [Build Dependencies](#build-dependencies)
|
||||
. . . . . . . . . . [OS X - Dependencies](#os-x---dependencies)
|
||||
. . . . . . . . . . [Linux - Dependencies](#linux---dependencies)
|
||||
. . . . . . [Windows](#windows)
|
||||
. . . . . . . . [Required related files](#required-related-files)
|
||||
. . . . . . . . [Visual Studio (Standard or Express) 2008, 2010, 2012, 2013 or Visual Studio Community 2015, 2017, 2019](#visual-studio-standard-or-express-2008-2010-2012-2013-or-visual-studio-community-2015-2017-2019)
|
||||
. . . . . . . . [MinGW32](#mingw32)
|
||||
. . . . . . [VMS](#vms)
|
||||
. . [Problem Reports](#problem-reports)
|
||||
[WHAT'S NEW since simh v3.9](#whats-new-since-simh-v39)
|
||||
. . [New Simulators](#new-simulators)
|
||||
. . [Simulator Front Panel API](#simulator-front-panel-api)
|
||||
. . [New Functionality](#new-functionality)
|
||||
. . . . [DDCMP Synchronous host physical device support - framer](#ddcmp-synchronous-host-physical-device-support---framer)
|
||||
. . . . [Remote Console Facility](#remote-console-facility)
|
||||
. . . . [VAX/PDP11 Enhancements](#vaxpdp11-enhancements)
|
||||
. . . . [PDP11 Specific Enhancements](#pdp11-specific-enhancements)
|
||||
. . . . [PDP10 Enhancements](#pdp10-enhancements)
|
||||
. . . . [SDS 940 Enhancements](#sds-940-enhancements)
|
||||
. . . . [Terminal Multiplexer additions](#terminal-multiplexer-additions)
|
||||
. . . . [Video Display Capabilities](#video-display-capabilities)
|
||||
. . . . [Asynchronous I/O](#asynchronous-io)
|
||||
. . . . [Clock/Timer Enhancements](#clocktimer-enhancements)
|
||||
. . . . [Ethernet Transport Enhancements](#ethernet-transport-enhancements)
|
||||
. . . . [Disk Extensions](#disk-extensions)
|
||||
. . . . [Embedded ROM support](#embedded-rom-support)
|
||||
. . . . [Control Flow](#control-flow)
|
||||
. . . . [Scriptable interactions with running simulators](#scriptable-interactions-with-running-simulators)
|
||||
. . . . [Help](#help)
|
||||
. . . . [Generic SCP support Clock Coscheduling as opposed to per simulator implementations](#generic-scp-support-clock-coscheduling-as-opposed-to-per-simulator-implementations)
|
||||
. . . . [New SCP Commands](#new-scp-commands)
|
||||
. . . . [Command Processing Enhancements](#command-processing-enhancements)
|
||||
. . . . . . [Environment variable insertion](#environment-variable-insertion)
|
||||
. . . . . . [Command aliases](#command-aliases)
|
||||
. . . . . . [Do command argument manipulation](#do-command-argument-manipulation)
|
||||
. . [Building and running a simulator](#building-and-running-a-simulator)
|
||||
. . . . [Use Prebuilt Windows Simulators](#use-prebuilt-windows-simulators)
|
||||
. . . . [Building simulators yourself](#building-simulators-yourself)
|
||||
. . . . . . [Linux/OSX other *nix platforms](#linuxosx-other-nix-platforms)
|
||||
. . . . . . . . [Build Dependencies](#build-dependencies)
|
||||
. . . . . . . . . . [OS X - Dependencies](#os-x---dependencies)
|
||||
. . . . . . . . . . [Linux - Dependencies](#linux---dependencies)
|
||||
. . . . . . [Windows](#windows)
|
||||
. . . . . . . . [Required related files](#required-related-files)
|
||||
. . . . . . . . [Visual Studio (Standard or Express) 2008, 2010, 2012, 2013 or Visual Studio Community 2015, 2017, 2019](#visual-studio-standard-or-express-2008-2010-2012-2013-or-visual-studio-community-2015-2017-2019)
|
||||
. . . . . . . . [MinGW32](#mingw32)
|
||||
. . . . . . [VMS](#vms)
|
||||
. . [Problem Reports](#problem-reports)
|
||||
|
||||
## WHAT'S NEW since simh v3.9
|
||||
|
||||
|
@ -99,7 +99,7 @@
|
|||
|
||||
#### CDC 1700 simulator from John Forecast
|
||||
|
||||
#### Hans-Åke Lund has implemented an SCELBI (SCientic-ELectronics-BIology) simulator.
|
||||
#### Hans-Åke Lund has implemented an SCELBI (SCientic-ELectronics-BIology) simulator.
|
||||
|
||||
#### IBM 650 simulator from Roberto Sancho Villa
|
||||
|
||||
|
@ -114,13 +114,13 @@ The sim_frontpanel API provides a programmatic interface to start and control an
|
|||
### New Functionality
|
||||
|
||||
#### DDCMP Synchronous host physical device support - framer
|
||||
Paul Koning has implemented a USB hardware device which can interface transport DDCMP packets across a synchronous line
|
||||
Paul Koning has implemented a USB hardware device which can interface transport DDCMP packets across a synchronous line
|
||||
to physical host systems with native synchronous devices or other simulators using framer devices.
|
||||
|
||||
#### Remote Console Facility
|
||||
A new capability has been added which allows a TELNET Connection to a user designated port so that some out of band commands can be entered to manipulate and/or adjust a running simulator. The commands which enable and control this capability are SET REMOTE TELNET=port, SET REMOTE CONNECTIONS=n, SET REMOTE TIMEOUT=seconds, and SHOW REMOTE.
|
||||
|
||||
The remote console facility has two modes of operation: 1) single command mode. and 2) multiple command mode.
|
||||
The remote console facility has two modes of operation: 1) single command mode. and 2) multiple command mode.
|
||||
In single command mode you enter one command at a time and aren't concerned about what the simulated system is doing while you enter that command. The command is executed once you've hit return.
|
||||
In multiple command mode you initiate your activities by entering the WRU character (usually ^E). This will suspend the current simulator execution. You then enter commands as needed and when you are done you enter a CONTINUE command. While entering Multiple Command commands, if you fail to enter a complete command before the timeout (specified by "SET REMOTE TIMEOUT=seconds"), a CONTINUE command is automatically processed and simulation proceeds.
|
||||
|
||||
|
@ -139,18 +139,18 @@ A remote console session will close when an EOF character is entered (i.e. ^D or
|
|||
KDP11 on PDP11 for DECnet
|
||||
DUP11 on PDP11 for DECnet connectivity to talk to DMC, KDP or other DUP devices
|
||||
CH11 on PDP11 and VAX780 for Chaosnet (from Lars Brinkhoff)
|
||||
DZ on Unibus systems can have up to 256 ports (default of 32), on
|
||||
DZ on Unibus systems can have up to 256 ports (default of 32), on
|
||||
Qbus systems 128 port limit (default of 16).
|
||||
DZ devices optionally support full modem control (and port speed settings
|
||||
DZ devices optionally support full modem control (and port speed settings
|
||||
when connected to serial ports).
|
||||
TU58 device support for all PDP11 and VAX systems.
|
||||
DHU11 (device VH) on Unibus systems now has 16 ports per multiplexer.
|
||||
XQ devices (DEQNA, DELQA and DELQA-T) are bootable on Qbus PDP11 simulators
|
||||
XQ and XU devices (DEQNA, DELQA, DELQA-T, DEUNA and DELQA) devices can now
|
||||
XQ and XU devices (DEQNA, DELQA, DELQA-T, DEUNA and DELQA) devices can now
|
||||
directly communicate to a remote device via UDP (i.e. a built-in HECnet bridge).
|
||||
XQ and XU devices (DEQNA, DELQA, DELQA-T, DEUNA and DELQA) devices can now
|
||||
XQ and XU devices (DEQNA, DELQA, DELQA-T, DEUNA and DELQA) devices can now
|
||||
optionally throttle outgoing packets which is useful when communicating with
|
||||
legacy systems (real hardware) on a local LAN which can easily get over run
|
||||
legacy systems (real hardware) on a local LAN which can easily get over run
|
||||
when packets arrive too fast.
|
||||
MicroVAX 3900 has QVSS (VCB01) board available.
|
||||
MicroVAX 3900 and MicroVAX II have SET CPU AUTOBOOT option
|
||||
|
@ -175,12 +175,12 @@ A remote console session will close when an EOF character is entered (i.e. ^D or
|
|||
|
||||
#### Terminal Multiplexer additions
|
||||
Added support for TCP connections using IPv4 and/or IPv6.
|
||||
Logging - Traffic going out individual lines can be optionally logged to
|
||||
Logging - Traffic going out individual lines can be optionally logged to
|
||||
files
|
||||
Buffering - Traffic going to a multiplexor (or Console) line can
|
||||
Buffering - Traffic going to a multiplexor (or Console) line can
|
||||
optionally be buffered while a telnet session is not connected
|
||||
and the buffered contents will be sent out a newly connecting
|
||||
telnet session. This allows a user to review what may have
|
||||
and the buffered contents will be sent out a newly connecting
|
||||
telnet session. This allows a user to review what may have
|
||||
happened before they connect to that session.
|
||||
|
||||
Serial Port support based on work by J David Bryan and Holger Veit
|
||||
|
@ -191,48 +191,48 @@ A remote console session will close when an EOF character is entered (i.e. ^D or
|
|||
Input character rates reflect the natural character arrival time based on the line speed.
|
||||
|
||||
#### Video Display Capabilities
|
||||
Added support for monochrome and color displays with optional keyboards and mice.
|
||||
Added support for monochrome and color displays with optional keyboards and mice.
|
||||
The VAXstation QVSS device (VCB01) and QDSS device (VCB02) simulations use these capabilities.
|
||||
Host platforms which have libSDL2 available can leverage this functionality.
|
||||
|
||||
#### Asynchronous I/O
|
||||
* Disk and Tape I/O can be asynchronous. Asynchronous support exists
|
||||
for pdp11_rq, pdp11_rp and pdp11_tq devices (used by VAX and PDP11
|
||||
* Disk and Tape I/O can be asynchronous. Asynchronous support exists
|
||||
for pdp11_rq, pdp11_rp and pdp11_tq devices (used by VAX and PDP11
|
||||
simulators).
|
||||
* Multiplexer I/O (Telnet and/or Serial) can be asynchronous.
|
||||
Asynchronous support exists for console I/O and most multiplexer
|
||||
* Multiplexer I/O (Telnet and/or Serial) can be asynchronous.
|
||||
Asynchronous support exists for console I/O and most multiplexer
|
||||
devices. (Still experimental - not currently by default)
|
||||
|
||||
#### Clock/Timer Enhancements
|
||||
* Asynchronous clocks ticks exist to better support modern processors
|
||||
that have variable clock speeds. The initial clock calibration model
|
||||
presumed a constant simulated instruction execution rate.
|
||||
Modern processors have variable processor speeds which breaks this
|
||||
key assumption.
|
||||
* Asynchronous clocks ticks exist to better support modern processors
|
||||
that have variable clock speeds. The initial clock calibration model
|
||||
presumed a constant simulated instruction execution rate.
|
||||
Modern processors have variable processor speeds which breaks this
|
||||
key assumption.
|
||||
* Strategies to make up for missed clock ticks are now available
|
||||
(independent of asynchronous tick generation). These strategies
|
||||
generate catch-up clock ticks to keep the simulator passage of
|
||||
time consistent with wall clock time. Simulator time while idling
|
||||
or throttling is now consistent. Reasonable idling behavior is
|
||||
generate catch-up clock ticks to keep the simulator passage of
|
||||
time consistent with wall clock time. Simulator time while idling
|
||||
or throttling is now consistent. Reasonable idling behavior is
|
||||
now possible without requiring that the host system clock tick be
|
||||
10ms or less.
|
||||
* Simulator writers have access to timing services and explicit wall
|
||||
* Simulator writers have access to timing services and explicit wall
|
||||
clock delays where appropriate.
|
||||
|
||||
#### Ethernet Transport Enhancements
|
||||
* UDP packet transport. Direct simulator connections to HECnet can be
|
||||
* UDP packet transport. Direct simulator connections to HECnet can be
|
||||
made without running a local packet bridge program.
|
||||
* NAT packet transport. Simulators which only speak TCP/IP (No DECnet)
|
||||
and want to communicate with their host systems and/or directly to
|
||||
the Internet can use NAT packet transport. This also works for WiFi
|
||||
and want to communicate with their host systems and/or directly to
|
||||
the Internet can use NAT packet transport. This also works for WiFi
|
||||
connected host systems.
|
||||
* Packet Transmission Throttling. When connected to a LAN which has
|
||||
* Packet Transmission Throttling. When connected to a LAN which has
|
||||
legacy network adapters (DEQNA, DEUNA) on legacy systems, it is very
|
||||
easy for a simulated system to overrun the receiving capacity of the
|
||||
older systems. Throttling of simulated traffic delivered to the LAN
|
||||
older systems. Throttling of simulated traffic delivered to the LAN
|
||||
can be used to mitigate this problem.
|
||||
* Reliable MAC address conflict detection.
|
||||
* Automatic unique default MAC address assignment.
|
||||
* Reliable MAC address conflict detection.
|
||||
* Automatic unique default MAC address assignment.
|
||||
|
||||
#### Disk Extensions
|
||||
RAW Disk Access (including CDROM)
|
||||
|
@ -246,15 +246,15 @@ Host platforms which have libSDL2 available can leverage this functionality.
|
|||
ANSI-VMS, ANSI-RSX11, ANSI-RSTS, ANSI-RT11 format tape support
|
||||
|
||||
#### Embedded ROM support
|
||||
Simulators which have boot commands which load constant files as part of
|
||||
booting have those files imbedded into the simulator executable. The
|
||||
imbedded files are used if the normal boot file isn't found when the
|
||||
Simulators which have boot commands which load constant files as part of
|
||||
booting have those files imbedded into the simulator executable. The
|
||||
imbedded files are used if the normal boot file isn't found when the
|
||||
simulator boots. Specific examples are:
|
||||
|
||||
|
||||
VAX (MicroVAX 3900 - ka655x.bin)
|
||||
VAX8600 (VAX 8600 - vmb.exe)
|
||||
VAX780 (VAX 11/780 - vmb.exe)
|
||||
VAX750 (VAX 11/750 - vmb.exe, ka750_old.bin, ka750_new.bin),
|
||||
VAX750 (VAX 11/750 - vmb.exe, ka750_old.bin, ka750_new.bin),
|
||||
VAX730 (VAX 11/730 - vmb.exe)
|
||||
VAX610 (MicroVAX I - ka610.bin)
|
||||
VAX620 (rtVAX 1000 - ka620.bin)
|
||||
|
@ -264,74 +264,74 @@ Host platforms which have libSDL2 available can leverage this functionality.
|
|||
|
||||
The following extensions to the SCP command language without affecting prior behavior:
|
||||
|
||||
GOTO <Label> Command is now available. Labels are lines
|
||||
in which the first non whitespace character
|
||||
is a ":". The target of a goto is the first
|
||||
matching label in the current do command
|
||||
file which is encountered. Since labels
|
||||
don't do anything else besides being the
|
||||
targets of goto's, they could be used to
|
||||
provide comments in do command files, for
|
||||
GOTO <Label> Command is now available. Labels are lines
|
||||
in which the first non whitespace character
|
||||
is a ":". The target of a goto is the first
|
||||
matching label in the current do command
|
||||
file which is encountered. Since labels
|
||||
don't do anything else besides being the
|
||||
targets of goto's, they could be used to
|
||||
provide comments in do command files, for
|
||||
example (":: This is a comment")
|
||||
RETURN {status} Return from the current do command file
|
||||
RETURN {status} Return from the current do command file
|
||||
execution with the specified status or
|
||||
the status from the last executed command
|
||||
the status from the last executed command
|
||||
if no status is specified. Status can be
|
||||
a number or a SCPE_<conditionname> name
|
||||
a number or a SCPE_<conditionname> name
|
||||
string.
|
||||
SET ON Enables error trapping for currently defined
|
||||
SET ON Enables error trapping for currently defined
|
||||
traps (by ON commands)
|
||||
SET NOON Disables error trapping for currently
|
||||
SET NOON Disables error trapping for currently
|
||||
defined traps (by ON commands)
|
||||
ON <statusvalue> commandtoprocess{; additionalcommandtoprocess}
|
||||
Sets the action(s) to take when the specific
|
||||
error status is returned by a command in the
|
||||
currently running do command file. Multiple
|
||||
actions can be specified with each delimited
|
||||
by a semicolon character (just like
|
||||
Sets the action(s) to take when the specific
|
||||
error status is returned by a command in the
|
||||
currently running do command file. Multiple
|
||||
actions can be specified with each delimited
|
||||
by a semicolon character (just like
|
||||
breakpoint action commands).
|
||||
ON ERROR commandtoprocess{; additionalcommandtoprocess}
|
||||
Sets the default action(s) to take when any
|
||||
otherwise unspecified error status is returned
|
||||
by a command in the currently running do
|
||||
command file. Multiple actions can be
|
||||
specified with each delimited by a semicolon
|
||||
character (just like breakpoint action
|
||||
Sets the default action(s) to take when any
|
||||
otherwise unspecified error status is returned
|
||||
by a command in the currently running do
|
||||
command file. Multiple actions can be
|
||||
specified with each delimited by a semicolon
|
||||
character (just like breakpoint action
|
||||
commands).
|
||||
ON CONTROL_C commandtoprocess{; additionalcommandtoprocess}
|
||||
Specifies particular actions to perform when
|
||||
the operator enters CTRL+C while a command
|
||||
procedure is running. The default action is
|
||||
to exit the current and any nested command
|
||||
procedure is running. The default action is
|
||||
to exit the current and any nested command
|
||||
procedures and return to the sim> input prompt.
|
||||
ON <statusvalue> Clears the action(s) to take when condition occurs
|
||||
ON ERROR Clears the default actions to take when any
|
||||
otherwise unspecified error status is
|
||||
returned by a command in the currently
|
||||
ON ERROR Clears the default actions to take when any
|
||||
otherwise unspecified error status is
|
||||
returned by a command in the currently
|
||||
running do command file.
|
||||
ON CONTROL_C
|
||||
Restores the default CTRL+C behavior for the
|
||||
currently running command procedure.
|
||||
|
||||
DO <stdin>
|
||||
Invokes a nested DO command with input from the
|
||||
Invokes a nested DO command with input from the
|
||||
running console.
|
||||
|
||||
Error traps can be taken for any command which returns a status other than SCPE_STEP, SCPE_OK, and SCPE_EXIT.
|
||||
Error traps can be taken for any command which returns a status other than SCPE_STEP, SCPE_OK, and SCPE_EXIT.
|
||||
|
||||
ON Traps can specify any status value from the following list: NXM, UNATT, IOERR, CSUM, FMT, NOATT, OPENERR, MEM, ARG, STEP, UNK, RO, INCOMP, STOP, TTIERR, TTOERR, EOF, REL, NOPARAM, ALATT, TIMER, SIGERR, TTYERR, SUB, NOFNC, UDIS, NORO, INVSW, MISVAL, 2FARG, 2MARG, NXDEV, NXUN, NXREG, NXPAR, NEST, IERR, MTRLNT, LOST, TTMO, STALL, AFAIL, NOTATT, AMBREG. These values can be indicated by name or by their internal numeric value (not recommended).
|
||||
|
||||
Interactions with ASSERT command and "DO -e":
|
||||
|
||||
DO -e is equivalent to SET ON, which by itself it equivalent
|
||||
DO -e is equivalent to SET ON, which by itself it equivalent
|
||||
to "SET ON; ON ERROR RETURN".
|
||||
ASSERT failure have several different actions:
|
||||
* If error trapping is not enabled then AFAIL causes exit from
|
||||
* If error trapping is not enabled then AFAIL causes exit from
|
||||
the current do command file.
|
||||
* If error trapping is enabled and an explicit "ON AFAIL"
|
||||
* If error trapping is enabled and an explicit "ON AFAIL"
|
||||
action is defined, then the specified action is performed.
|
||||
* If error trapping is enabled and no "ON AFAIL" action is
|
||||
defined, then an AFAIL causes exit from the current do
|
||||
* If error trapping is enabled and no "ON AFAIL" action is
|
||||
defined, then an AFAIL causes exit from the current do
|
||||
command file.
|
||||
|
||||
Other related changes/extensions:
|
||||
|
@ -343,15 +343,15 @@ The EXPECT command now exists to provide a means of reacting to simulator output
|
|||
|
||||
EXPECT {HALTAFTER=n,}"\r\nPassword: "
|
||||
SEND {AFTER=n,}{DELAY=m,}"mypassword\r"
|
||||
|
||||
|
||||
or
|
||||
|
||||
|
||||
EXPECT {HALTAFTER=n,}"\r\nPassword: " SEND {AFTER=n,}{DELAY=m,}"mypassword\r"; GO
|
||||
|
||||
|
||||
|
||||
#### Help
|
||||
|
||||
The built-in help system provides a heirarchical oriented help command interface.
|
||||
The built-in help system provides a heirarchical oriented help command interface.
|
||||
In addition, there is explicit support for per device help:
|
||||
|
||||
HELP dev
|
||||
|
@ -426,19 +426,19 @@ Device simulator authors can easily schedule their device polling activities to
|
|||
##### Environment variable insertion
|
||||
Built In variables %DATE%, %TIME%, %DATETIME%, %LDATE%, %LTIME%, %CTIME%, %DATE_YYYY%, %DATE_YY%, %DATE_YC%, %DATE_MM%, %DATE_MMM%, %DATE_MONTH%, %DATE_DD%, %DATE_D%, %DATE_WYYYY%, %DATE_WW%, %TIME_HH%, %TIME_MM%, %TIME_SS%, %STATUS%, %TSTATUS%, %SIM_VERIFY%, %SIM_QUIET%, %SIM_MESSAGE%
|
||||
|
||||
Token "%0" expands to the command file name.
|
||||
Token "%0" expands to the command file name.
|
||||
Token %n (n being a single digit) expands to the n'th argument
|
||||
Token %* expands to the whole set of arguments (%1 ... %9)
|
||||
|
||||
The input sequence "%%" represents a literal "%". All other
|
||||
The input sequence "%%" represents a literal "%". All other
|
||||
character combinations are rendered literally.
|
||||
|
||||
Omitted parameters result in null-string substitutions.
|
||||
|
||||
Tokens preceded and followed by % characters are expanded as environment
|
||||
variables, and if an environment variable isn't found then it can be one of
|
||||
several special variables:
|
||||
|
||||
variables, and if an environment variable isn't found then it can be one of
|
||||
several special variables:
|
||||
|
||||
%DATE% yyyy-mm-dd
|
||||
%TIME% hh:mm:ss
|
||||
%DATETIME% yyyy-mm-ddThh:mm:ss
|
||||
|
@ -458,7 +458,7 @@ Built In variables %DATE%, %TIME%, %DATETIME%, %LDATE%, %LTIME%, %CTIME%, %DATE_
|
|||
%DATE_JJJ% jjj (001-366) day of year
|
||||
%DATE_19XX_YY% yy A year prior to 2000 with the same
|
||||
calendar days as the current year
|
||||
%DATE_19XX_YYYY% yyyy A year prior to 2000 with the same
|
||||
%DATE_19XX_YYYY% yyyy A year prior to 2000 with the same
|
||||
calendar days as the current year
|
||||
%TIME_HH% hh (00-23)
|
||||
%TIME_MM% mm (00-59)
|
||||
|
@ -469,21 +469,21 @@ Built In variables %DATE%, %TIME%, %DATETIME%, %LDATE%, %LTIME%, %CTIME%, %DATE_
|
|||
%SIM_VERBOSE% The Verify/Verbose mode of the current Do command file
|
||||
%SIM_QUIET% The Quiet mode of the current Do command file
|
||||
%SIM_MESSAGE% The message display status of the current Do command file
|
||||
|
||||
Environment variable lookups are done first with the precise name between
|
||||
|
||||
Environment variable lookups are done first with the precise name between
|
||||
the % characters and if that fails, then the name between the % characters
|
||||
is upcased and a lookup of that values is attempted.
|
||||
|
||||
The first Space delimited token on the line is extracted in uppercase and
|
||||
then looked up as an environment variable. If found it the value is
|
||||
substituted for the original string before expanding everything else. If
|
||||
it is not found, then the original beginning token on the line is left
|
||||
The first Space delimited token on the line is extracted in uppercase and
|
||||
then looked up as an environment variable. If found it the value is
|
||||
substituted for the original string before expanding everything else. If
|
||||
it is not found, then the original beginning token on the line is left
|
||||
untouched.
|
||||
|
||||
##### Command aliases
|
||||
|
||||
Commands can be aliases with environment variables. For example:
|
||||
|
||||
|
||||
sim> set env say=echo
|
||||
sim> say Hello there
|
||||
Hello there
|
||||
|
@ -496,7 +496,7 @@ The SHIFT command will shift the %1 thru %9 arguments to the left one position.
|
|||
|
||||
<!-- ### Use Prebuilt Windows Simulators
|
||||
|
||||
Simulators for the Windows platform are built and made available on a regular basis (at least once a week if substantive changes have been made to the codebase).
|
||||
Simulators for the Windows platform are built and made available on a regular basis (at least once a week if substantive changes have been made to the codebase).
|
||||
|
||||
The prebuilt Windows binaries will run on all versions of Microsoft Windows from Windows XP onward.
|
||||
|
||||
|
@ -524,13 +524,13 @@ The makefile provided requires GNU make, which is the default make facility for
|
|||
|
||||
##### Build Dependencies
|
||||
|
||||
Some simulators depend on external packages to provide the full scope of
|
||||
functionality they may be simulating. These additional external packages
|
||||
may or may not be included in as part of the standard Operating System
|
||||
distributions. If simulators are being built that could provide more
|
||||
Some simulators depend on external packages to provide the full scope of
|
||||
functionality they may be simulating. These additional external packages
|
||||
may or may not be included in as part of the standard Operating System
|
||||
distributions. If simulators are being built that could provide more
|
||||
functionality than the currently installed packages will provide, the build
|
||||
will succeed with reduced functionality (i.e. limited network or no video
|
||||
support), but suggestions will be provided as to what could provide full
|
||||
support), but suggestions will be provided as to what could provide full
|
||||
functionality.
|
||||
|
||||
|
||||
|
@ -582,33 +582,33 @@ Building with MinGW32 requires the same directory organization and the dependent
|
|||
|
||||
Download the latest source code as a zip file from: https://github.com/open-simh/simh/archive/master.zip
|
||||
|
||||
Unzip it in the directory that you want SIMH to reside in. Unpack it and
|
||||
Unzip it in the directory that you want SIMH to reside in. Unpack it and
|
||||
set the file attributes as follows:
|
||||
|
||||
$ unzip simh-master.zip
|
||||
$ set default [.simh-master]
|
||||
$ set file/attri=RFM:STM makefile,*.mms,[...]*.c,[...]*.h,[...]*.txt
|
||||
|
||||
Simulators with ethernet network devices (All the VAX simulators and the
|
||||
Simulators with ethernet network devices (All the VAX simulators and the
|
||||
PDP11) can have functioning networking when running on Alpha or IA64 OpenVMS.
|
||||
|
||||
In order to build and run simulators with networking support, the VMS-PCAP
|
||||
package must be available while building your simulator. The simh-vms-pcap.zip
|
||||
file can be downloaded from https://github.com/simh/simh/archive/vms-pcap.zip
|
||||
In order to build and run simulators with networking support, the VMS-PCAP
|
||||
package must be available while building your simulator. The simh-vms-pcap.zip
|
||||
file can be downloaded from https://github.com/simh/simh/archive/vms-pcap.zip
|
||||
This link will return a file called simh-vms-pcap.zip which should be unpacked as follows:
|
||||
|
||||
$ unzip -a simh-vms-pcap.zip
|
||||
$ rename [.simh-vms-pcap]pcap-vms.dir []
|
||||
|
||||
The PCAP-VMS components are presumed (by the descript.mms file) to be
|
||||
located in a directory at the same level as the directory containing the
|
||||
The PCAP-VMS components are presumed (by the descript.mms file) to be
|
||||
located in a directory at the same level as the directory containing the
|
||||
simh source files. For example, if these exist here:
|
||||
|
||||
[]descrip.mms
|
||||
[]scp.c
|
||||
etc.
|
||||
|
||||
Then the following should exist:
|
||||
Then the following should exist:
|
||||
[-.PCAP-VMS]BUILD_ALL.COM
|
||||
[-.PCAP-VMS.PCAP-VCI]
|
||||
[-.PCAP-VMS.PCAPVCM]
|
||||
|
@ -642,4 +642,4 @@ Problem reports should contain;
|
|||
- the simulator build description should include the output produced by while building the simulator
|
||||
- the output of SHOW VERSION while running the simulator which is having an issue
|
||||
- the simulator configuration file (or commands) which were used when the problem occurred.
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue