Fix UTF-8 encoding for five files

This commit is contained in:
Peter Schorn 2023-03-30 14:00:11 +02:00 committed by Paul Koning
parent 869dc0fe4a
commit 27bd6b81aa
5 changed files with 534 additions and 534 deletions

View file

@ -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) */

File diff suppressed because it is too large Load diff

View file

@ -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

View file

@ -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? */

View file

@ -5,45 +5,45 @@
[![AppVeyor](https://ci.appveyor.com/api/projects/status/github/simh/simh)](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.