SIMH: Fix spelling errors in comments and strings

This commit is contained in:
Peter Schorn 2024-07-11 12:29:53 +02:00
parent e7b2431f11
commit 0f6bcb9682
34 changed files with 1893 additions and 1893 deletions

View file

@ -5,7 +5,7 @@ Theory of operation.
Features. Features.
- Optional Use. Build with or without SIM_ASYNCH_IO defined and - Optional Use. Build with or without SIM_ASYNCH_IO defined and
simulators will still build and perform correctly when run. simulators will still build and perform correctly when run.
Additionmally, a simulator built with SIM_ASYNCH_IO defined can Additionally, a simulator built with SIM_ASYNCH_IO defined can
dynamically disable and reenable asynchronous operation with dynamically disable and reenable asynchronous operation with
the scp commands SET NOASYNCH and SET ASYNCH respectively. the scp commands SET NOASYNCH and SET ASYNCH respectively.
- Consistent Save/Restore state. The state of a simulator saved - Consistent Save/Restore state. The state of a simulator saved
@ -15,8 +15,8 @@ Features.
- Optimal behavior/performance with simulator running with or - Optimal behavior/performance with simulator running with or
without CPU idling enabled. without CPU idling enabled.
- Consistent minimum instruction scheduling delays when operating - Consistent minimum instruction scheduling delays when operating
with or without SIM_ASYNCH_IO. When SIM_ASYNCH_IO is emabled, with or without SIM_ASYNCH_IO. When SIM_ASYNCH_IO is enabled,
any operation which would have been scheduled to occurr in 'n' any operation which would have been scheduled to occur in 'n'
instructions will still occur (from the simulated computer's instructions will still occur (from the simulated computer's
point of view) at least 'n' instructions after it was initiated. point of view) at least 'n' instructions after it was initiated.
@ -44,7 +44,7 @@ SimH Libraries which provide Asynch I/O support:
Requirements to use: Requirements to use:
The Simulator's instruction loop needs to be modified to include a single The Simulator's instruction loop needs to be modified to include a single
line which checks for asynchronouzly arrived events. The vax_cpu.c line which checks for asynchronously arrived events. The vax_cpu.c
module added the following line indicated by >>>: module added the following line indicated by >>>:
/* Main instruction loop */ /* Main instruction loop */
@ -202,7 +202,7 @@ revised to operate correctly, it may statically set the TMUF_NOASYNCH bit
in its unit flags field. in its unit flags field.
Some devices will need a small amount of extra coding to leverage the Some devices will need a small amount of extra coding to leverage the
Multiplexer Asynch I/O capabilties. Devices which require extra coding Multiplexer Asynch I/O capabilities. Devices which require extra coding
have one or more of the following characteristics: have one or more of the following characteristics:
- they poll for input data on a different unit (or units) than the unit - they poll for input data on a different unit (or units) than the unit
which was provided when tmxr_attach was called. which was provided when tmxr_attach was called.
@ -242,7 +242,7 @@ sim_tmxr consumers:
- SDS MUX devices = 2, units = 1/32, lines = 32, flagbits = 0, Untested Asynch - SDS MUX devices = 2, units = 1/32, lines = 32, flagbits = 0, Untested Asynch
- sim_console Good Asynch - sim_console Good Asynch
Program Clock Devices to leverage Asynsh I/O Program Clock Devices to leverage Asynch I/O
simh's concept of time is calibrated by counting the number of simh's concept of time is calibrated by counting the number of
instructions which the simulator can execute in a given amount of wall instructions which the simulator can execute in a given amount of wall
@ -296,7 +296,7 @@ happen under a combination of conditions:
3) the multiplexer device schedules polling (co-scheduled) when not 3) the multiplexer device schedules polling (co-scheduled) when not
attached (such polling will never produce any input, so this is probably attached (such polling will never produce any input, so this is probably
a bug). a bug).
In prior simh versions support for clock co-scheduling was implmented In prior simh versions support for clock co-scheduling was implemented
separately by each simulator, and usually was expressed by code of the form: separately by each simulator, and usually was expressed by code of the form:
sim_activate (uptr, clk_cosched (tmxr_poll)); sim_activate (uptr, clk_cosched (tmxr_poll));
As a part of asynchronous timer support, the simulator framework has been As a part of asynchronous timer support, the simulator framework has been

View file

@ -132,7 +132,7 @@ OSX (Snow Leopard)
OSX Does NOT have native support for tun/tap interfaces. It also does not have native OSX Does NOT have native support for tun/tap interfaces. It also does not have native
support for bridging. support for bridging.
Mattias Nissler has created tun/tap functionality available at http://tuntaposx,sourceforge.net/ Mattias Nissler has created tun/tap functionality available at http://tuntaposx.sourceforge.net/
We'll punt on bridging for the sake of this example and move on to use a basic tap We'll punt on bridging for the sake of this example and move on to use a basic tap
based internal network so a host and guest can communicate directly. based internal network so a host and guest can communicate directly.
@ -192,7 +192,7 @@ The simulator can use static IP addresses of 10.0.2.4 thru 10.0.2.14 with a
netmask of 255.255.255.0 and a gateway of 10.0.2.2 and a nameserver of 10.0.2.3. netmask of 255.255.255.0 and a gateway of 10.0.2.2 and a nameserver of 10.0.2.3.
If the simulated machine uses DHCP it will get the address 10.0.2.15. Various If the simulated machine uses DHCP it will get the address 10.0.2.15. Various
NAT based parameters can be configured on the attach command. HELP XQ ATTACH NAT based parameters can be configured on the attach command. HELP XQ ATTACH
will provide useful information. Host to simulator connectivitiy can be will provide useful information. Host to simulator connectivity can be
achieved for a simulator which gets its IP address via DHCP with the following achieved for a simulator which gets its IP address via DHCP with the following
command: command:
@ -208,7 +208,7 @@ to reach out to the Internet.
Note: As mentioned above, NAT networking is specifically capable of providing Note: As mentioned above, NAT networking is specifically capable of providing
TCP/IP connectivity. Only expect TCP and UDP traffic to pass through TCP/IP connectivity. Only expect TCP and UDP traffic to pass through
the interface. Do not expect ICMP traffic (ping mostly) to traverse the interface. Do not expect ICMP traffic (ping mostly) to traverse
the NAT boundary. This restriction is a conseqence of host platform the NAT boundary. This restriction is a consequence of host platform
and network limitations regarding direct user mode code generating ICMP and network limitations regarding direct user mode code generating ICMP
packets. packets.
@ -345,7 +345,7 @@ Building on Linux, {Free|Net|Open}BSD, OS/X, Solaris, other *nix:
ship with sufficiently recent versions of libpcap either ship with sufficiently recent versions of libpcap either
automatically installed or available for installation as automatically installed or available for installation as
part of the distribution. part of the distribution.
The OS provided libpcap-dev components will be prefereable The OS provided libpcap-dev components will be preferable
to a package built from www.tcpdump.org sources. This is to a package built from www.tcpdump.org sources. This is
due to the fact that various OS supplied packages will due to the fact that various OS supplied packages will
depend on the OS supplied libpcap. The improper build or depend on the OS supplied libpcap. The improper build or
@ -366,7 +366,7 @@ Building on Linux, {Free|Net|Open}BSD, OS/X, Solaris, other *nix:
you want to force direct libpcap linking during a build you do so by you want to force direct libpcap linking during a build you do so by
typing 'make USE_NETWORK=1'. You must build with gcc to do this. There typing 'make USE_NETWORK=1'. You must build with gcc to do this. There
is no observable benefit to statically linking against libpcap. Support is no observable benefit to statically linking against libpcap. Support
for statically linking libpcap ia deprecated on all platforms except for statically linking libpcap is deprecated on all platforms except
Linux and OS X where it has already been removed. Linux and OS X where it has already been removed.
4. Some platforms (HP-UX in particular) may not have vendor supplied libpcap 4. Some platforms (HP-UX in particular) may not have vendor supplied libpcap
@ -380,7 +380,7 @@ Building on Linux, {Free|Net|Open}BSD, OS/X, Solaris, other *nix:
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
OpenVMS Alpha and OpenVMS Integrety (IA64) notes: OpenVMS Alpha and OpenVMS Integrity (IA64) notes:
1. Ethernet support will only work on Alpha VMS 7.3-1 or later, which is 1. Ethernet support will only work on Alpha VMS 7.3-1 or later, which is
when required VCI promiscuous mode support was added. Hobbyists can when required VCI promiscuous mode support was added. Hobbyists can
get the required version of VMS from the OpenVMS Alpha Hobbyist Kit 3.0. get the required version of VMS from the OpenVMS Alpha Hobbyist Kit 3.0.
@ -413,7 +413,7 @@ OpenVMS Alpha and OpenVMS Integrety (IA64) notes:
adapter prior trying to connect with SIMH, or the host may crash. adapter prior trying to connect with SIMH, or the host may crash.
The execlet is not written to create an I/O structure for the device. The execlet is not written to create an I/O structure for the device.
Building on OpenVMS Alpha and OpenVMS Integrety (IA64): Building on OpenVMS Alpha and OpenVMS Integrity (IA64):
The current descrip.mms file will build simulators capable of using The current descrip.mms file will build simulators capable of using
Ethernet support with them automatically. These currently are: VAX, Ethernet support with them automatically. These currently are: VAX,
VAX780, and PDP11. The descrip.mms driven builds will also build the VAX780, and PDP11. The descrip.mms driven builds will also build the
@ -505,7 +505,7 @@ Dave
reading and writing is enabled reading and writing is enabled
07-Jul-11 MB VMS Pcap (from Mike Burke) 07-Jul-11 MB VMS Pcap (from Mike Burke)
- Fixed Alpha issues - Fixed Alpha issues
- Added OpenVMS Integrety support - Added OpenVMS Integrity support
20-Apr-11 MP Fixed save/restore behavior 20-Apr-11 MP Fixed save/restore behavior
12-Jan-11 DTH Added SHOW XU FILTERS modifier 12-Jan-11 DTH Added SHOW XU FILTERS modifier
11-Jan-11 DTH Corrected DEUNA/DELUA SELFTEST command, enabling use by 11-Jan-11 DTH Corrected DEUNA/DELUA SELFTEST command, enabling use by

View file

@ -96,7 +96,7 @@ if (NOT CMAKE_CONFIGURATION_TYPES)
endif () endif ()
# SIMH_SYSTEM_ID: Roughly analogous to the autoconf system triple. Used (almost exclusively) # SIMH_SYSTEM_ID: Roughly analogous to the autoconf system triple. Used (almost exclusively)
# as part of the depedencies' top-level directory name. # as part of the dependencies' top-level directory name.
set(SIMH_SYSTEM_ID ${CMAKE_SYSTEM_NAME}) set(SIMH_SYSTEM_ID ${CMAKE_SYSTEM_NAME})
string(REPLACE "." ";" version_list ${CMAKE_SYSTEM_VERSION}) string(REPLACE "." ";" version_list ${CMAKE_SYSTEM_VERSION})
list(GET version_list 0 version_major) list(GET version_list 0 version_major)
@ -163,9 +163,9 @@ if (NOT DEFINED MAC_UNIVERSAL)
else () else ()
set(MAC_UNIVERSAL_OPTVAL ${MAC_UNIVERSAL}) set(MAC_UNIVERSAL_OPTVAL ${MAC_UNIVERSAL})
if (MAC_UNIVERSAL_OPTVAL) if (MAC_UNIVERSAL_OPTVAL)
message(STATUS "macOS unversal binaries WILL BE BUILT.") message(STATUS "macOS universal binaries WILL BE BUILT.")
else () else ()
message(STATUS "macOS unversal binaries NOT WILL BE BUILT.") message(STATUS "macOS universal binaries NOT WILL BE BUILT.")
endif () endif ()
endif () endif ()
@ -297,7 +297,7 @@ include(platform-quirks)
# Find packages, arrange for dependency download/compile/install: # Find packages, arrange for dependency download/compile/install:
# #
# SIMH_BUILD_DEPS is the list of the dependecies' names, for pretty-printing. # SIMH_BUILD_DEPS is the list of the dependencies' names, for pretty-printing.
# SIMH_DEP_TARGETS is the list of dependency targets' names that we'll actually build. # SIMH_DEP_TARGETS is the list of dependency targets' names that we'll actually build.
set(SIMH_BUILD_DEPS) set(SIMH_BUILD_DEPS)

View file

@ -5,7 +5,7 @@
- [Why CMake?](#why-cmake) - [Why CMake?](#why-cmake)
- [Before You Begin Building...](#before-you-begin-building) - [Before You Begin Building...](#before-you-begin-building)
- [Toolchains and Tools](#toolchains-and-tools) - [Toolchains and Tools](#toolchains-and-tools)
- [Ninja: "failed recompaction: Permission denied"](#ninja-file-recompation-permission-denied) - [Ninja: "failed recompaction: Permission denied"](#ninja-file-recompaction-permission-denied)
- [Windows XP-compatible/Server 2003 binaries](#windows-xp-compatibleserver-2003-binaries) - [Windows XP-compatible/Server 2003 binaries](#windows-xp-compatibleserver-2003-binaries)
- [Feature Libraries](#feature-libraries) - [Feature Libraries](#feature-libraries)
- [Linux, macOS and MinGW-w64](#linux-macos-and-mingw-w64) - [Linux, macOS and MinGW-w64](#linux-macos-and-mingw-w64)
@ -43,7 +43,7 @@ framework. A sample of the supported build environments include:
- Unix Makefiles - Unix Makefiles
- [MinGW Makefiles][mingw64] - [MinGW Makefiles][mingw64]
- [Ninja][ninja] - [Ninja][ninja]
- macOS XCode - macOS Xcode
- MS Visual Studio solutions (2015, 2017, 2019, 2022) - MS Visual Studio solutions (2015, 2017, 2019, 2022)
- IDE build wrappers ([Sublime Text][sublime] and [CodeBlocks][codeblocks]) - IDE build wrappers ([Sublime Text][sublime] and [CodeBlocks][codeblocks])
@ -189,7 +189,7 @@ to select a 32-bit target architecture and the `v141_xp` toolkit.
_VS2022_: Install the `v141_xp` tools _VS2022_: Install the `v141_xp` tools
Start the Visual Studio Installler, whether this is a new VS2022 install or Start the Visual Studio Installer, whether this is a new VS2022 install or
modifying an existing installation. modifying an existing installation.
- New install - New install
@ -219,7 +219,7 @@ the [command line](#cmake-command-line) or [via the IDE](#xp-compatible-build-vi
_VS2019_: Install the `v141_xp` tools. _VS2019_: Install the `v141_xp` tools.
Start the Visual Studio Installler, whether this is a new VS2019 install or Start the Visual Studio Installer, whether this is a new VS2019 install or
modifying an existing installation. modifying an existing installation.
- New installation: Follow the VS 2022 "New install" instructions. The steps are - New installation: Follow the VS 2022 "New install" instructions. The steps are
@ -373,7 +373,7 @@ Setup and Usage:
PS C:\...\vcpkg> cd ..\open-simh PS C:\...\vcpkg> cd ..\open-simh
PS C:\...\open-simh> PS C:\...\open-simh>
``` ```
Then set the `VCPKG_ROOT` environment variable to the `vcpkg` installaton directory. Then set the `VCPKG_ROOT` environment variable to the `vcpkg` installation directory.
[^1]: `vcpkg` does not support the `v141_xp` toolkit required to compile Windows [^1]: `vcpkg` does not support the `v141_xp` toolkit required to compile Windows
XP binaries. Windows XP is a target platform that SIMH can hopefully deprecate XP binaries. Windows XP is a target platform that SIMH can hopefully deprecate
@ -1033,11 +1033,11 @@ within the IDE. The walkthrough provides directions for VS 2022 and VS 2019.
`x64-Release` configuration. And wait for reconfiguration to finish (again.) `x64-Release` configuration. And wait for reconfiguration to finish (again.)
5. Select `Build All` from the `Build` menu, or equivalently chord `Ctrl-Shift-B` 5. Select `Build All` from the `Build` menu, or equivalently chord `Ctrl-Shift-B`
on the keyboard, to start the dependecy feature library superbuild. on the keyboard, to start the dependency feature library superbuild.
- When all dependency feature libraries have been built, the build process - When all dependency feature libraries have been built, the build process
__will__ unexpectedly terminate with a _"failed recompaction: Permission __will__ unexpectedly terminate with a _"failed recompaction: Permission
denied"_ error (see [this `ninja` note](#ninja-file-recompation-permission-denied).) denied"_ error (see [this `ninja` note](#ninja-file-recompaction-permission-denied).)
Choose `Delete Cache and Reconfigure` from the `Project` menu. This will Choose `Delete Cache and Reconfigure` from the `Project` menu. This will
cause CMake to reconfigure the project and detect the dependency feature cause CMake to reconfigure the project and detect the dependency feature
@ -1141,7 +1141,7 @@ add_simulator(3b2
TEST 3b2) TEST 3b2)
``` ```
`add_simulator` is relatively self explanitory: `add_simulator` is relatively self explanatory:
- The first argument is the simulator's executable name: `3b2`. This generates - The first argument is the simulator's executable name: `3b2`. This generates
an executable named `3b2` on Unix platforms or `3b2.exe` on Windows. an executable named `3b2` on Unix platforms or `3b2.exe` on Windows.

View file

@ -99,7 +99,7 @@
#### CDC 1700 simulator from John Forecast #### CDC 1700 simulator from John Forecast
#### Hans-Åke Lund has implemented an SCELBI (SCientic-ELectronics-BIology) simulator. #### Hans-Åke Lund has implemented an SCELBI (SCientific-ELectronics-BIology) simulator.
#### IBM 650 simulator from Roberto Sancho Villa #### IBM 650 simulator from Roberto Sancho Villa
@ -351,7 +351,7 @@ The EXPECT command now exists to provide a means of reacting to simulator output
#### Help #### Help
The built-in help system provides a heirarchical oriented help command interface. The built-in help system provides a hierarchical oriented help command interface.
In addition, there is explicit support for per device help: In addition, there is explicit support for per device help:
HELP dev HELP dev
@ -600,7 +600,7 @@ This link will return a file called simh-vms-pcap.zip which should be unpacked a
$ unzip -a simh-vms-pcap.zip $ unzip -a simh-vms-pcap.zip
$ rename [.simh-vms-pcap]pcap-vms.dir [] $ rename [.simh-vms-pcap]pcap-vms.dir []
The PCAP-VMS components are presumed (by the descript.mms file) to be The PCAP-VMS components are presumed (by the descrip.mms file) to be
located in a directory at the same level as the directory containing the located in a directory at the same level as the directory containing the
simh source files. For example, if these exist here: simh source files. For example, if these exist here:

View file

@ -4,7 +4,7 @@
:: If this procedure is not invoked from a Developer command prompt :: If this procedure is not invoked from a Developer command prompt
:: then the VS2008 tools are preferred if VS2008 is installed, :: then the VS2008 tools are preferred if VS2008 is installed,
:: otherwise the installed Visual Studio tools will be used :: otherwise the installed Visual Studio tools will be used
:: prefering newer Visual Studio versions over older ones. :: preferring newer Visual Studio versions over older ones.
:: ::
:: If this procedure is invoked from a Developer command prompt :: If this procedure is invoked from a Developer command prompt
:: then the tool chain provided with the command prompt is used :: then the tool chain provided with the command prompt is used

View file

@ -25,7 +25,7 @@
# ECLIPSE Just Build The Data General Eclipse. # ECLIPSE Just Build The Data General Eclipse.
# GRI Just Build The GRI Corporation GRI-909. # GRI Just Build The GRI Corporation GRI-909.
# LGP Just Build The Royal-McBee LGP-30. # LGP Just Build The Royal-McBee LGP-30.
# H316 Just Build The Honewell 316/516. # H316 Just Build The Honeywell 316/516.
# HP2100 Just Build The Hewlett-Packard HP-2100. # HP2100 Just Build The Hewlett-Packard HP-2100.
# HP3000 Just Build The Hewlett-Packard HP-3000. # HP3000 Just Build The Hewlett-Packard HP-3000.
# I1401 Just Build The IBM 1401. # I1401 Just Build The IBM 1401.

6
helpx
View file

@ -226,7 +226,7 @@ while( <STDIN> ) {
next; next;
} elsif ($tok eq 'word' && $val =~ /^fprint_(set|show|reg)_help(?:_ex)?$/) { } elsif ($tok eq 'word' && $val =~ /^fprint_(set|show|reg)_help(?:_ex)?$/) {
my %alt = ( set => "\$Set commands", my %alt = ( set => "\$Set commands",
show => "\$Show commmands", show => "\$Show commands",
reg => "\$Registers" ); reg => "\$Registers" );
$b .= "/* Use \"$alt{$1}\" topic instead:\n"; $b .= "/* Use \"$alt{$1}\" topic instead:\n";
do { do {
@ -272,7 +272,7 @@ while( <STDIN> ) {
" The SET commands for the device will automagically display above\n" " The SET commands for the device will automagically display above\n"
" this line. Add any special notes.\n" " this line. Add any special notes.\n"
"2 OSNAME1\n" "2 OSNAME1\n"
" Operating System-specif configuration details\n" " Operating System-specific configuration details\n"
" If the device needs special configuration for a particular OS, a subtopic\n" " If the device needs special configuration for a particular OS, a subtopic\n"
" for each such OS goes here.\n" " for each such OS goes here.\n"
"2 Files\n" "2 Files\n"
@ -299,7 +299,7 @@ while( <STDIN> ) {
"1 Related Devices\n" "1 Related Devices\n"
" If devices are configured or used together, list the other devices here.\n" " If devices are configured or used together, list the other devices here.\n"
" E.G. The DEC KMC/DUP are two hardware devices that are closely related;\n" " E.G. The DEC KMC/DUP are two hardware devices that are closely related;\n"
" The KMC controlls the DUP on behalf of the OS.\n" " The KMC controls the DUP on behalf of the OS.\n"
/* **** Your converted help text starts hare **** */ /* **** Your converted help text starts hare **** */

View file

@ -56,7 +56,7 @@
# #
# The default setup will fail simulator build(s) if the compile # The default setup will fail simulator build(s) if the compile
# produces any warnings. These should be cleaned up before new # produces any warnings. These should be cleaned up before new
# or changd code is accepted into the code base. This option # or changed code is accepted into the code base. This option
# can be overridden if GNU make is invoked with WARNINGS=ALLOWED # can be overridden if GNU make is invoked with WARNINGS=ALLOWED
# on the command line. # on the command line.
# #
@ -1285,8 +1285,8 @@ else
$(info ***********************************************************************) $(info ***********************************************************************)
$(error .) $(error .)
else else
$(info ** date. For the most functional and stable features you shoud **) $(info ** date. For the most functional and stable features you should **)
$(info ** Download the file: **) $(info ** download the file: **)
$(info ** https://github.com/simh/windows-build/archive/windows-build.zip **) $(info ** https://github.com/simh/windows-build/archive/windows-build.zip **)
$(info ** Extract the windows-build-windows-build folder it contains to **) $(info ** Extract the windows-build-windows-build folder it contains to **)
$(info ** $(abspath ..\) **) $(info ** $(abspath ..\) **)

86
scp.c
View file

@ -449,7 +449,7 @@ t_bool sim_asynch_enabled = FALSE;
#endif #endif
/* The per-simulator init routine is a weak global that defaults to NULL /* The per-simulator init routine is a weak global that defaults to NULL
The other per-simulator pointers can be overrriden by the init routine The other per-simulator pointers can be overridden by the init routine
WEAK void (*sim_vm_init) (void); WEAK void (*sim_vm_init) (void);
@ -1410,7 +1410,7 @@ static const char simh_help1[] =
" RADIX-50 characters.\n" " RADIX-50 characters.\n"
"5-F\n" "5-F\n"
" The -F switch causes duplicate successive lines of debug NOT to be\n" " The -F switch causes duplicate successive lines of debug NOT to be\n"
" summarized to reduce repetative noise from the debug data stream.\n" " summarized to reduce repetitive noise from the debug data stream.\n"
"5-E\n" "5-E\n"
" The -E switch causes data blob output to also display the data as\n" " The -E switch causes data blob output to also display the data as\n"
" EBCDIC characters.\n" " EBCDIC characters.\n"
@ -1707,7 +1707,7 @@ static const char simh_help2[] =
"+The input sequence \"%%%%\" represents a literal \"%%\". All other\n" "+The input sequence \"%%%%\" represents a literal \"%%\". All other\n"
"+character combinations are rendered literally.\n\n" "+character combinations are rendered literally.\n\n"
"+Omitted parameters result in null-string substitutions.\n\n" "+Omitted parameters result in null-string substitutions.\n\n"
"+Tokens preceeded and followed by %% characters are expanded as environment\n" "+Tokens preceded and followed by %% characters are expanded as environment\n"
"+variables, and if an environment variable isn't found then it can be one of\n" "+variables, and if an environment variable isn't found then it can be one of\n"
"+several special variables:\n\n" "+several special variables:\n\n"
"++%%DATE%% yyyy-mm-dd\n" "++%%DATE%% yyyy-mm-dd\n"
@ -1747,10 +1747,10 @@ static const char simh_help2[] =
"++%%SIM_OSTYPE%% The Operating System running the current simulator\n\n" "++%%SIM_OSTYPE%% The Operating System running the current simulator\n\n"
"+Environment variable lookups are done first with the precise name between\n" "+Environment variable lookups are done first with the precise name between\n"
"+the %% characters and if that fails, then the name between the %% characters\n" "+the %% characters and if that fails, then the name between the %% characters\n"
"+is upcased and a lookup of that valus is attempted.\n\n" "+is upcased and a lookup of that value is attempted.\n\n"
"+The first Space delimited token on the line is extracted in uppercase and\n" "+The first Space delimited token on the line is extracted in uppercase and\n"
"+then looked up as an environment variable. If found it the value is\n" "+then looked up as an environment variable. If found it the value is\n"
"+supstituted for the original string before expanding everything else. If\n" "+substituted for the original string before expanding everything else. If\n"
"+it is not found, then the original beginning token on the line is left\n" "+it is not found, then the original beginning token on the line is left\n"
"+untouched.\n\n" "+untouched.\n\n"
"+Environment variable string substitution:\n\n" "+Environment variable string substitution:\n\n"
@ -1789,7 +1789,7 @@ static const char simh_help2[] =
"++%%~nxI%% - expands the value of %%I%% to a file name and extension only\n\n" "++%%~nxI%% - expands the value of %%I%% to a file name and extension only\n\n"
" In the above example above %%I%% can be replaced by other\n" " In the above example above %%I%% can be replaced by other\n"
" environment variables or numeric parameters to a DO command\n" " environment variables or numeric parameters to a DO command\n"
" invokation.\n" " invocation.\n"
" Examples:\n\n" " Examples:\n\n"
"++sim> set env FNAME='xyzzy.ini'\n" "++sim> set env FNAME='xyzzy.ini'\n"
"++sim> echo ~FNAME=%%~FNAME%%\n" "++sim> echo ~FNAME=%%~FNAME%%\n"
@ -1804,7 +1804,7 @@ static const char simh_help2[] =
"3GOTO\n" "3GOTO\n"
" Commands in a command file execute in sequence until either an error\n" " Commands in a command file execute in sequence until either an error\n"
" trap occurs (when a command completes with an error status), or when an\n" " trap occurs (when a command completes with an error status), or when an\n"
" explict request is made to start command execution elsewhere with the\n" " explicit request is made to start command execution elsewhere with the\n"
" GOTO command:\n\n" " GOTO command:\n\n"
"++GOTO <label>\n\n" "++GOTO <label>\n\n"
" Labels are lines in a command file which the first non whitespace\n" " Labels are lines in a command file which the first non whitespace\n"
@ -2081,7 +2081,7 @@ static const char simh_help2[] =
"++\\e Sends the ASCII Escape character (Decimal value 27)\n" "++\\e Sends the ASCII Escape character (Decimal value 27)\n"
" as well as octal character values of the form:\n" " as well as octal character values of the form:\n"
"++\\n{n{n}} where each n is an octal digit (0-7)\n" "++\\n{n{n}} where each n is an octal digit (0-7)\n"
" and hext character values of the form:\n" " and hex character values of the form:\n"
"++\\xh{h} where each h is a hex digit (0-9A-Fa-f)\n" "++\\xh{h} where each h is a hex digit (0-9A-Fa-f)\n"
/***************** 80 character line width template *************************/ /***************** 80 character line width template *************************/
#define HLP_SEND "*Commands Executing_Command_Files Injecting_Console_Input" #define HLP_SEND "*Commands Executing_Command_Files Injecting_Console_Input"
@ -2142,7 +2142,7 @@ static const char simh_help2[] =
"++\\e Sends the ASCII Escape character (Decimal value 27)\n" "++\\e Sends the ASCII Escape character (Decimal value 27)\n"
" as well as octal character values of the form:\n" " as well as octal character values of the form:\n"
"++\\n{n{n}} where each n is an octal digit (0-7)\n" "++\\n{n{n}} where each n is an octal digit (0-7)\n"
" and hext character values of the form:\n" " and hex character values of the form:\n"
"++\\xh{h} where each h is a hex digit (0-9A-Fa-f)\n" "++\\xh{h} where each h is a hex digit (0-9A-Fa-f)\n"
"4Switches\n" "4Switches\n"
" Switches can be used to influence the behavior of SEND commands\n\n" " Switches can be used to influence the behavior of SEND commands\n\n"
@ -2241,7 +2241,7 @@ static const char simh_help2[] =
"++\\e Expect the ASCII Escape character (Decimal value 27)\n" "++\\e Expect the ASCII Escape character (Decimal value 27)\n"
" as well as octal character values of the form:\n" " as well as octal character values of the form:\n"
"++\\n{n{n}} where each n is an octal digit (0-7)\n" "++\\n{n{n}} where each n is an octal digit (0-7)\n"
" and hext character values of the form:\n" " and hex character values of the form:\n"
"++\\xh{h} where each h is a hex digit (0-9A-Fa-f)\n" "++\\xh{h} where each h is a hex digit (0-9A-Fa-f)\n"
"4HaltAfter\n" "4HaltAfter\n"
" Specifies the number of %C which should be executed before\n" " Specifies the number of %C which should be executed before\n"
@ -2439,7 +2439,7 @@ static const char simh_help2[] =
"++sim> SET SCP-PROCESS DEBUG=EXPEVAL - Expression Evaluation Activities\n" "++sim> SET SCP-PROCESS DEBUG=EXPEVAL - Expression Evaluation Activities\n"
"3Debugging Do File Processing\n" "3Debugging Do File Processing\n"
" Debug output can be produced which will walk through the details\n" " Debug output can be produced which will walk through the details\n"
" involved during DO file proccessing. This output can, for example,\n" " involved during DO file processing. This output can, for example,\n"
" be enabled as follows:\n\n" " be enabled as follows:\n\n"
"++sim> SET DEBUG STDOUT\n" "++sim> SET DEBUG STDOUT\n"
"++sim> SET SCP-PROCESS DEBUG=DO - Debug Output DO processing\n" "++sim> SET SCP-PROCESS DEBUG=DO - Debug Output DO processing\n"
@ -2496,7 +2496,7 @@ static const char simh_help2[] =
" Many tests are capable of producing various amounts of debug output\n" " Many tests are capable of producing various amounts of debug output\n"
" during their execution. The -d switch enables that output\n" " during their execution. The -d switch enables that output\n"
"2File Tools\n" "2File Tools\n"
" Tools to manipulate file containers and to tranfer files/data into or\n" " Tools to manipulate file containers and to transfer files/data into or\n"
" out of a simulated environment are provided.\n\n" " out of a simulated environment are provided.\n\n"
" In general, these are tools natively found on the host operating system.\n" " In general, these are tools natively found on the host operating system.\n"
" They are explicitly supported directly from SCP to allow for platform\n" " They are explicitly supported directly from SCP to allow for platform\n"
@ -2794,7 +2794,7 @@ if (*argv[0]) { /* sim name arg? */
strlcpy (nbuf, argv[0], PATH_MAX + 2); /* copy sim name */ strlcpy (nbuf, argv[0], PATH_MAX + 2); /* copy sim name */
if ((np = (char *)match_ext (nbuf, "EXE"))) /* remove .exe */ if ((np = (char *)match_ext (nbuf, "EXE"))) /* remove .exe */
*np = 0; *np = 0;
np = strrchr (nbuf, '/'); /* stript path and try again in cwd */ np = strrchr (nbuf, '/'); /* strip path and try again in cwd */
if (np == NULL) if (np == NULL)
np = strrchr (nbuf, '\\'); /* windows path separator */ np = strrchr (nbuf, '\\'); /* windows path separator */
if (np == NULL) if (np == NULL)
@ -2956,7 +2956,7 @@ if (docmdp) {
strlcat (nbuf, ".ini\"", sizeof (nbuf)); /* add .ini" */ strlcat (nbuf, ".ini\"", sizeof (nbuf)); /* add .ini" */
stat = docmdp->action (-1, nbuf) & ~SCPE_NOMESSAGE; /* proc default cmd file */ stat = docmdp->action (-1, nbuf) & ~SCPE_NOMESSAGE; /* proc default cmd file */
if (stat == SCPE_OPENERR) { /* didn't exist/can't open? */ if (stat == SCPE_OPENERR) { /* didn't exist/can't open? */
np = strrchr (nbuf, '/'); /* stript path and try again in cwd */ np = strrchr (nbuf, '/'); /* strip path and try again in cwd */
if (np == NULL) if (np == NULL)
np = strrchr (nbuf, '\\'); /* windows path separator */ np = strrchr (nbuf, '\\'); /* windows path separator */
if (np == NULL) if (np == NULL)
@ -3054,7 +3054,7 @@ while (stat != SCPE_EXIT) { /* in case exit */
} }
else else
stat = SCPE_UNK; stat = SCPE_UNK;
stat_nomessage = stat & SCPE_NOMESSAGE; /* extract possible message supression flag */ stat_nomessage = stat & SCPE_NOMESSAGE; /* extract possible message suppression flag */
stat_nomessage = stat_nomessage || (!sim_show_message);/* Apply global suppression */ stat_nomessage = stat_nomessage || (!sim_show_message);/* Apply global suppression */
stat = SCPE_BARE_STATUS(stat); /* remove possible flag */ stat = SCPE_BARE_STATUS(stat); /* remove possible flag */
sim_last_cmd_stat = stat; /* save command error status */ sim_last_cmd_stat = stat; /* save command error status */
@ -4223,7 +4223,7 @@ do {
stat = SCPE_UNK; /* bad cmd given */ stat = SCPE_UNK; /* bad cmd given */
sim_debug (SIM_DBG_DO, &sim_scp_dev, "Command '%s', Result: 0x%X - %s\n", cmdp ? cmdp->name : "", stat, sim_error_text (stat)); sim_debug (SIM_DBG_DO, &sim_scp_dev, "Command '%s', Result: 0x%X - %s\n", cmdp ? cmdp->name : "", stat, sim_error_text (stat));
echo = sim_do_echo; /* Allow for SET VERIFY */ echo = sim_do_echo; /* Allow for SET VERIFY */
stat_nomessage = stat & SCPE_NOMESSAGE; /* extract possible message supression flag */ stat_nomessage = stat & SCPE_NOMESSAGE; /* extract possible message suppression flag */
stat_nomessage = stat_nomessage || (!sim_show_message);/* Apply global suppression */ stat_nomessage = stat_nomessage || (!sim_show_message);/* Apply global suppression */
stat = SCPE_BARE_STATUS(stat); /* remove possible flag */ stat = SCPE_BARE_STATUS(stat); /* remove possible flag */
if (((stat != SCPE_OK) && (stat != SCPE_EXPECT)) || if (((stat != SCPE_OK) && (stat != SCPE_EXPECT)) ||
@ -4380,7 +4380,7 @@ return result;
} }
/* Substitute_args - replace %n tokens in 'instr' with the do command's arguments /* Substitute_args - replace %n tokens in 'instr' with the do command's arguments
and other enviroment variables and other environment variables
Calling sequence Calling sequence
instr = input string instr = input string
@ -4389,14 +4389,14 @@ return result;
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 %n (n being a single digit) expands to the n'th argument
Tonen %* expands to the whole set of arguments (%1 ... %9) 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. character combinations are rendered literally.
Omitted parameters result in null-string substitutions. Omitted parameters result in null-string substitutions.
Tokens preceeded and followed by % characters are expanded as environment Tokens preceded and followed by % characters are expanded as environment
variables, and if one isn't found then can be one of several special variables, and if one isn't found then can be one of several special
variables: variables:
%DATE% yyyy-mm-dd %DATE% yyyy-mm-dd
@ -4413,11 +4413,11 @@ return result;
%SIM_MESSAGE% The message display status 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 the % characters and if that fails, then the name between the % characters
is upcased and a lookup of that valus is attempted. is upcased and a lookup of that value is attempted.
The first Space delimited token on the line is extracted in uppercase and 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 then looked up as an environment variable. If found it the value is
supstituted for the original string before expanding everything else. If substituted for the original string before expanding everything else. If
it is not found, then the original beginning token on the line is left it is not found, then the original beginning token on the line is left
untouched. untouched.
*/ */
@ -5064,7 +5064,7 @@ if ((*optr != '"') && (*optr != '\'')) {
ap = getenv (optr); ap = getenv (optr);
if (!ap) if (!ap)
return tptr; return tptr;
/* for legacy ASSERT/IF behavior give precidence to REGister names over Environment Variables */ /* for legacy ASSERT/IF behavior give precedence to REGister names over Environment Variables */
get_glyph (optr, optr, 0); get_glyph (optr, optr, 0);
rptr = find_reg (optr, &gptr, sim_dfdev); rptr = find_reg (optr, &gptr, sim_dfdev);
if (rptr) if (rptr)
@ -5294,7 +5294,7 @@ return SCPE_OK;
don't specify an explicit DELAY parameter. This default don't specify an explicit DELAY parameter. This default
value is visible externally via an environment variable. value is visible externally via an environment variable.
String - must be quoted. Quotes may be either single or double but the String - must be quoted. Quotes may be either single or double but the
opening anc closing quote characters must match. Within quotes opening and closing quote characters must match. Within quotes
C style character escapes are allowed. C style character escapes are allowed.
The following character escapes are explicitly supported: The following character escapes are explicitly supported:
\r Sends the ASCII Carriage Return character (Decimal value 13) \r Sends the ASCII Carriage Return character (Decimal value 13)
@ -5310,7 +5310,7 @@ return SCPE_OK;
\e Sends the ASCII Escape character (Decimal value 27) \e Sends the ASCII Escape character (Decimal value 27)
as well as octal character values of the form: as well as octal character values of the form:
\n{n{n}} where each n is an octal digit (0-7) \n{n{n}} where each n is an octal digit (0-7)
and hext character values of the form: and hex character values of the form:
\xh{h} where each h is a hex digit (0-9A-Fa-f) \xh{h} where each h is a hex digit (0-9A-Fa-f)
*/ */
@ -5888,7 +5888,7 @@ else {
cbuf[str_size] = '\0'; cbuf[str_size] = '\0';
} }
else { else {
if (sim_switches & SWMASK ('A')) { /* Arithmentic Expression Evaluation argument? */ if (sim_switches & SWMASK ('A')) { /* Arithmetic Expression Evaluation argument? */
t_svalue val; t_svalue val;
t_stat stat; t_stat stat;
const char *eptr = cptr; const char *eptr = cptr;
@ -7305,7 +7305,7 @@ fprint_show_help (st, dptr);
return SCPE_OK; return SCPE_OK;
} }
/* Show/change the current working directiory commands */ /* Show/change the current working directory commands */
t_stat show_default (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, CONST char *cptr) t_stat show_default (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, CONST char *cptr)
{ {
@ -10523,7 +10523,7 @@ return val;
cptr = pointer to input string cptr = pointer to input string
*lo = pointer to low result *lo = pointer to low result
*hi = pointer to high result *hi = pointer to high result
aradix = radix rdx = radix
max = default high value max = default high value
term = terminating character, 0 if none term = terminating character, 0 if none
Outputs: Outputs:
@ -10595,7 +10595,7 @@ return tptr;
iptr = pointer to input string iptr = pointer to input string
optr = pointer to output buffer optr = pointer to output buffer
the output buffer must be allocated by the caller the output buffer must be allocated by the caller
and to avoid overrunat it must be at least as big and to avoid overrun it must be at least as big
as the input string. as the input string.
Outputs Outputs
@ -10603,7 +10603,7 @@ return tptr;
osize = size of the data in the optr buffer osize = size of the data in the optr buffer
The input string must be quoted. Quotes may be either single or The input string must be quoted. Quotes may be either single or
double but the opening anc closing quote characters must match. double but the opening and closing quote characters must match.
Within quotes C style character escapes are allowed. Within quotes C style character escapes are allowed.
The following character escapes are explicitly supported: The following character escapes are explicitly supported:
@ -10620,7 +10620,7 @@ return tptr;
\e ASCII Escape character (Decimal value 27) \e ASCII Escape character (Decimal value 27)
as well as octal character values of the form: as well as octal character values of the form:
\n{n{n}} where each n is an octal digit (0-7) \n{n{n}} where each n is an octal digit (0-7)
and hext character values of the form: and hex character values of the form:
\xh{h} where each h is a hex digit (0-9A-Fa-f) \xh{h} where each h is a hex digit (0-9A-Fa-f)
*/ */
@ -10743,7 +10743,7 @@ return SCPE_OK;
\e ASCII Escape character (Decimal value 27) \e ASCII Escape character (Decimal value 27)
as well as octal character values of the form: as well as octal character values of the form:
\n{n{n}} where each n is an octal digit (0-7) \n{n{n}} where each n is an octal digit (0-7)
and hext character values of the form: and hex character values of the form:
\xh{h} where each h is a hex digit (0-9A-Fa-f) \xh{h} where each h is a hex digit (0-9A-Fa-f)
*/ */
@ -11074,7 +11074,7 @@ return NULL;
cptr = pointer to input string cptr = pointer to input string
Outputs: Outputs:
*sw = switch bit mask *sw = switch bit mask
*mumber = numeric value *number = numeric value
Return value: SW_ERROR if error Return value: SW_ERROR if error
SW_BITMASK if switch bitmask or not a switch SW_BITMASK if switch bitmask or not a switch
SW_NUMBER if numeric SW_NUMBER if numeric
@ -11140,7 +11140,7 @@ return cptr;
opt = command options opt = command options
cptr = pointer to input string cptr = pointer to input string
Outputs: Outputs:
ptr = pointer to next glypsh, NULL if error ptr = pointer to next glyphs, NULL if error
*stat = error status *stat = error status
*/ */
@ -11153,7 +11153,7 @@ DEVICE *tdptr;
UNIT *tuptr; UNIT *tuptr;
sim_switches = 0; /* no switches */ sim_switches = 0; /* no switches */
sim_switch_number = 0; /* no numberuc switch */ sim_switch_number = 0; /* no number switch */
sim_ofile = NULL; /* no output file */ sim_ofile = NULL; /* no output file */
sim_schrptr = NULL; /* no search */ sim_schrptr = NULL; /* no search */
sim_schaptr = NULL; /* no search */ sim_schaptr = NULL; /* no search */
@ -12350,7 +12350,7 @@ return cnt;
addr address of the breakpoint addr address of the breakpoint
type types of breakpoints set on the address type types of breakpoints set on the address
a bit mask representing letters A-Z a bit mask representing letters A-Z
cnt number of iterations before breakp is taken cnt number of iterations before breakpoint is taken
action pointer command string to be executed action pointer command string to be executed
when break is taken when break is taken
next list of other breakpoints with the same addr specifier next list of other breakpoints with the same addr specifier
@ -12411,7 +12411,7 @@ int32 lo, hi, p;
BRKTAB *bp; BRKTAB *bp;
if (sim_brk_ent == 0) { /* table empty? */ if (sim_brk_ent == 0) { /* table empty? */
sim_brk_ins = 0; /* insrt at head */ sim_brk_ins = 0; /* insert at head */
return NULL; /* sch fails */ return NULL; /* sch fails */
} }
lo = 0; /* initial bounds */ lo = 0; /* initial bounds */
@ -12429,7 +12429,7 @@ do {
else else
lo = p + 1; /* go up? p is lower */ lo = p + 1; /* go up? p is lower */
} while (lo <= hi); } while (lo <= hi);
if (loc < bp->addr) /* insrt before or */ if (loc < bp->addr) /* insert before or */
sim_brk_ins = p; sim_brk_ins = p;
else else
sim_brk_ins = p + 1; /* after last sch */ sim_brk_ins = p + 1; /* after last sch */
@ -12909,7 +12909,7 @@ return msg;
The package contains the following public routines: The package contains the following public routines:
sim_set_expect expect command parser and intializer sim_set_expect expect command parser and initializer
sim_set_noexpect noexpect command parser sim_set_noexpect noexpect command parser
sim_exp_init initialize an expect context sim_exp_init initialize an expect context
sim_exp_set set or add an expect rule sim_exp_set set or add an expect rule
@ -12966,7 +12966,7 @@ if ((*cptr != '\0') && (*cptr != '"') && (*cptr != '\''))
return sim_messagef (SCPE_ARG, "String must be quote delimited\n"); return sim_messagef (SCPE_ARG, "String must be quote delimited\n");
cptr = get_glyph_quoted (cptr, gbuf, 0); cptr = get_glyph_quoted (cptr, gbuf, 0);
/* Hsndle a bare HALTAFTER=nnn command */ /* Handle a bare HALTAFTER=nnn command */
if ((gbuf[0] == '\0') && (*cptr == '\0') && after_set) { if ((gbuf[0] == '\0') && (*cptr == '\0') && after_set) {
set_default_env_parameter (dev_name, "SIM_EXPECT_HALTAFTER", after); set_default_env_parameter (dev_name, "SIM_EXPECT_HALTAFTER", after);
return SCPE_OK; return SCPE_OK;
@ -13105,7 +13105,7 @@ if (switches & EXP_TYP_REGEX) {
else { else {
if (switches & EXP_TYP_REGEX_I) { if (switches & EXP_TYP_REGEX_I) {
free (match_buf); free (match_buf);
return sim_messagef (SCPE_ARG, "Case independed matching is only valid for RegEx expect rules\n"); return sim_messagef (SCPE_ARG, "Case independent matching is only valid for RegEx expect rules\n");
} }
sim_data_trace(exp->dptr, exp->dptr->units, (const uint8 *)match, "", strlen(match)+1, "Expect Match String", exp->dbit); sim_data_trace(exp->dptr, exp->dptr->units, (const uint8 *)match, "", strlen(match)+1, "Expect Match String", exp->dbit);
if (SCPE_OK != sim_decode_quoted_string (match, match_buf, &match_size)) { if (SCPE_OK != sim_decode_quoted_string (match, match_buf, &match_size)) {
@ -13266,7 +13266,7 @@ EXPTAB *ep = NULL;
int regex_checks = 0; int regex_checks = 0;
char *tstr = NULL; char *tstr = NULL;
if ((!exp) || (!exp->rules)) /* Anying to check? */ if ((!exp) || (!exp->rules)) /* Anything to check? */
return SCPE_OK; return SCPE_OK;
exp->buf[exp->buf_ins++] = data; /* Save new data */ exp->buf[exp->buf_ins++] = data; /* Save new data */
@ -13350,7 +13350,7 @@ for (i=0; i < exp->size; i++) {
else { else {
if (exp->buf_data < ep->size) /* Too little data to match yet? */ if (exp->buf_data < ep->size) /* Too little data to match yet? */
continue; /* Yes, Try next one. */ continue; /* Yes, Try next one. */
if (exp->buf_ins < ep->size) { /* Match might stradle end of buffer */ if (exp->buf_ins < ep->size) { /* Match might straddle end of buffer */
/* /*
* First compare the newly deposited data at the beginning * First compare the newly deposited data at the beginning
* of buffer with the end of the match string * of buffer with the end of the match string
@ -16080,7 +16080,7 @@ MFlush (MFILE *f)
f->pos = 0; f->pos = 0;
} }
/* FMwrite() returns 1 (TRUE) if all data was writting, 0 (FALSE) indicates /* FMwrite() returns 1 (TRUE) if all data was written, 0 (FALSE) indicates
fewer than the requested number of bytes were written. N.B. this function fewer than the requested number of bytes were written. N.B. this function
is only called in one place and its return value isn't checked.*/ is only called in one place and its return value isn't checked.*/
static int static int

2
scp.h
View file

@ -357,7 +357,7 @@ extern t_stat parse_sym (CONST char *cptr, t_addr addr, UNIT *uptr, t_value *val
int32 sw); int32 sw);
/* The per-simulator init routine is a weak global that defaults to NULL /* The per-simulator init routine is a weak global that defaults to NULL
The other per-simulator pointers can be overrriden by the init routine The other per-simulator pointers can be overridden by the init routine
extern void (*sim_vm_init) (void); extern void (*sim_vm_init) (void);

View file

@ -95,7 +95,7 @@
* Guidelines: * Guidelines:
* Help should be concise and easy to understand. * Help should be concise and easy to understand.
* *
* The main topic should be short - less than a sceenful when presented with the * The main topic should be short - less than a screenful when presented with the
* subtopic list. * subtopic list.
* *
* Keep line lengths to 76 columns or less. * Keep line lengths to 76 columns or less.
@ -126,7 +126,7 @@
* *
* Related Devices - If devices are configured or used together, list the other devices here. * Related Devices - If devices are configured or used together, list the other devices here.
* E.G. The DEC KMC/DUP are two hardware devices that are closely related; * E.G. The DEC KMC/DUP are two hardware devices that are closely related;
* The KMC controlls the DUP on behalf of the OS. * The KMC controls the DUP on behalf of the OS.
* *
* This text can be created by any convenient means. It can be mechanically extracted from the device * This text can be created by any convenient means. It can be mechanically extracted from the device
* source, read from a file, or simply entered as a string in the help routine. To facilitate the latter, * source, read from a file, or simply entered as a string in the help routine. To facilitate the latter,
@ -180,7 +180,7 @@
* *
;**************************************************************************** ;****************************************************************************
The Whizbang 100 is a DMA line printer controller used on the Whizbang 1000 The Whizbang 100 is a DMA line printer controller used on the Whizbang 1000
and Gurgle 1200 processor familes of the Obsolete Hardware Corporation. and Gurgle 1200 processor families of the Obsolete Hardware Corporation.
1 Hardware Description 1 Hardware Description
The Whizbang 100 is specified to operate "any printer you and a friend can The Whizbang 100 is specified to operate "any printer you and a friend can
lift", and speeds up to 0.5 C. lift", and speeds up to 0.5 C.
@ -205,7 +205,7 @@
Bit 2 ejects the operator Bit 2 ejects the operator
Bit 3 enables interrupts Bit 3 enables interrupts
3 Print data register 3 Print data register
The print data register is thiry-seven bits wide, and accepts data in The print data register is thirty-seven bits wide, and accepts data in
elephantcode, the precursor to Unicode. Paper advance is accomplished elephantcode, the precursor to Unicode. Paper advance is accomplished
with the Rocket Return and Page Trampoline characters. with the Rocket Return and Page Trampoline characters.
1 Configuration 1 Configuration
@ -217,7 +217,7 @@
+ SET WHIZBANG CODESET ASCII + SET WHIZBANG CODESET ASCII
+ SET WHIZBANG CODESET ELEPHANTCODE + SET WHIZBANG CODESET ELEPHANTCODE
The VFU (carriage control tape) is specifed with The VFU (carriage control tape) is specified with
+ SET WHIZBANG TAPE vfufile + SET WHIZBANG TAPE vfufile
2 WOS 2 WOS
Under WOS, the device will only work at LooneyBus slot 9 Under WOS, the device will only work at LooneyBus slot 9

View file

@ -22,7 +22,7 @@
This is the standard card reader. This is the standard card reader.
This is the standard card punch. This is the standard card punch.
Input formats are accepted in a variaty of formats: Input formats are accepted in a variety of formats:
Standard ASCII: one record per line. Standard ASCII: one record per line.
returns are ignored. returns are ignored.
tabs are expanded to modules 8 characters. tabs are expanded to modules 8 characters.
@ -44,7 +44,7 @@
Bits 5-0 are character. Bits 5-0 are character.
CBN Format: CBN Format:
Each record 160 charaters. Each record 160 characters.
First char has bit 7 set. Rest set to 0. First char has bit 7 set. Rest set to 0.
Bit 6 is odd parity. Bit 6 is odd parity.
Bit 5-0 of first character are top 6 bits Bit 5-0 of first character are top 6 bits
@ -60,7 +60,7 @@
is not enough octal numbers to span a full card the remainder of the is not enough octal numbers to span a full card the remainder of the
card will not be punched. card will not be punched.
Also ~eor, will generate a 7/8/9 punch card. An ~eof will gernerate a Also ~eor, will generate a 7/8/9 punch card. An ~eof will generate a
6/7/9 punch card, and a ~eoi will generate a 6/7/8/9 punch. 6/7/9 punch card, and a ~eoi will generate a 6/7/8/9 punch.
A single line of ~ will set the EOF flag when that card is read. A single line of ~ will set the EOF flag when that card is read.
@ -252,7 +252,7 @@ static const uint16 ascii_to_dec_029[128] = {
#if SIMH_EVER_USES_THIS #if SIMH_EVER_USES_THIS
/* This is a static const that isn't referenced in this code. /* This is a static const that isn't referenced in this code.
* Kept for historical refernce. * Kept for historical reference.
*/ */
static const uint16 ascii_to_hol_ebcdic[128] = { static const uint16 ascii_to_hol_ebcdic[128] = {
/* Control */ /* Control */
@ -434,7 +434,7 @@ static struct card_formats fmts[] = {
/* Conversion routines */ /* Conversion routines */
/* Convert BCD character into hollerith code */ /* Convert BCD character into Hollerith code */
uint16 uint16
sim_bcd_to_hol(uint8 bcd) { sim_bcd_to_hol(uint8 bcd) {
uint16 hol; uint16 hol;
@ -479,7 +479,7 @@ sim_bcd_to_hol(uint8 bcd) {
return hol; return hol;
} }
/* Returns the BCD of the hollerith code or 0x7f if error */ /* Returns the BCD of the Hollerith code or 0x7f if error */
uint8 uint8
sim_hol_to_bcd(uint16 hol) { sim_hol_to_bcd(uint16 hol) {
uint8 bcd; uint8 bcd;
@ -529,7 +529,7 @@ sim_hol_to_bcd(uint16 hol) {
return bcd; return bcd;
} }
/* Convert EBCDIC character into hollerith code */ /* Convert EBCDIC character into Hollerith code */
uint16 uint16
sim_ebcdic_to_hol(uint8 ebcdic) { sim_ebcdic_to_hol(uint8 ebcdic) {
return ebcdic_to_hol[ebcdic]; return ebcdic_to_hol[ebcdic];
@ -537,7 +537,7 @@ sim_ebcdic_to_hol(uint8 ebcdic) {
/* Returns the BCD of the hollerith code or 0x7f if error */ /* Returns the BCD of the Hollerith code or 0x7f if error */
uint16 uint16
sim_hol_to_ebcdic(uint16 hol) { sim_hol_to_ebcdic(uint16 hol) {
return hol_to_ebcdic[hol]; return hol_to_ebcdic[hol];
@ -987,7 +987,7 @@ _sim_read_deck(UNIT * uptr, int eof)
buf.len = 0; buf.len = 0;
buf.size = 0; buf.size = 0;
buf.buffer[0] = 0; /* Initialize bufer to empty */ buf.buffer[0] = 0; /* Initialize buffer to empty */
/* Slurp up current file */ /* Slurp up current file */
do { do {
@ -1014,7 +1014,7 @@ _sim_read_deck(UNIT * uptr, int eof)
sim_uname(uptr), uptr->filename, sim_error_text(r), cards); sim_uname(uptr), uptr->filename, sim_error_text(r), cards);
} }
data->hopper_cards++; data->hopper_cards++;
/* Move data to start at begining of buffer */ /* Move data to start at beginning of buffer */
/* Data is moved down to simplify the decoding of one card */ /* Data is moved down to simplify the decoding of one card */
l = buf.len - buf.size; l = buf.len - buf.size;
j = buf.size; j = buf.size;
@ -1059,7 +1059,7 @@ sim_punch_card(UNIT * uptr, uint16 image[80])
/* Convert word record into column image */ /* Convert word record into column image */
/* Check output type, if auto or text, try and convert record to bcd first */ /* Check output type, if auto or text, try and convert record to bcd first */
/* If failed and text report error and dump what we have */ /* If failed and text report error and dump what we have */
/* Else if binary or not convertable, dump as image */ /* Else if binary or not convertible, dump as image */
/* Try to convert to text */ /* Try to convert to text */
uint8 out[512]; uint8 out[512];

View file

@ -22,7 +22,7 @@
This is the standard card reader. This is the standard card reader.
This is the standard card punch. This is the standard card punch.
Input formats are accepted in a variaty of formats: Input formats are accepted in a variety of formats:
Standard ASCII: one record per line. Standard ASCII: one record per line.
returns are ignored. returns are ignored.
tabs are expanded to modules 8 characters. tabs are expanded to modules 8 characters.
@ -44,7 +44,7 @@
Bits 5-0 are character. Bits 5-0 are character.
CBN Format: CBN Format:
Each record 160 charaters. Each record 160 characters.
First char has bit 7 set. Rest set to 0. First char has bit 7 set. Rest set to 0.
Bit 6 is odd parity. Bit 6 is odd parity.
Bit 5-0 of first character are top 6 bits Bit 5-0 of first character are top 6 bits
@ -67,7 +67,7 @@
is not enough octal numbers to span a full card the remainder of the is not enough octal numbers to span a full card the remainder of the
card will not be punched. card will not be punched.
Also ~eor, will generate a 7/8/9 punch card. An ~eof will gernerate a Also ~eor, will generate a 7/8/9 punch card. An ~eof will generate a
6/7/9 punch card, and a ~eoi will generate a 6/7/8/9 punch. 6/7/9 punch card, and a ~eoi will generate a 6/7/8/9 punch.
A single line of ~ will set the EOF flag when that card is read. A single line of ~ will set the EOF flag when that card is read.

View file

@ -158,7 +158,7 @@
#define MIN(a,b) (((a) <= (b)) ? (a) : (b)) #define MIN(a,b) (((a) <= (b)) ? (a) : (b))
#endif #endif
/* Forward Declaraations of Platform specific routines */ /* Forward declarations of platform specific routines */
static t_stat sim_os_poll_kbd (void); static t_stat sim_os_poll_kbd (void);
static t_bool sim_os_poll_kbd_ready (int ms_timeout); static t_bool sim_os_poll_kbd_ready (int ms_timeout);
@ -325,7 +325,7 @@ static t_stat sim_con_detach (UNIT *uptr)
return sim_set_notelnet (0, NULL); return sim_set_notelnet (0, NULL);
} }
/* Forward declaratations */ /* Forward declarations */
static t_stat sim_os_fd_isatty (int fd); static t_stat sim_os_fd_isatty (int fd);
@ -878,7 +878,7 @@ return SCPE_OK;
static t_stat _sim_rem_message (const char *cmd, t_stat stat) static t_stat _sim_rem_message (const char *cmd, t_stat stat)
{ {
CTAB *cmdp = NULL; CTAB *cmdp = NULL;
t_stat stat_nomessage = stat & SCPE_NOMESSAGE; /* extract possible message supression flag */ t_stat stat_nomessage = stat & SCPE_NOMESSAGE; /* extract possible message suppression flag */
cmdp = find_cmd (cmd); cmdp = find_cmd (cmd);
stat = SCPE_BARE_STATUS(stat); /* remove possible flag */ stat = SCPE_BARE_STATUS(stat); /* remove possible flag */
@ -1879,7 +1879,7 @@ if (sim_rem_cmd_active_line != -1) {
return SCPE_REMOTE; /* force sim_instr() to exit to process command */ return SCPE_REMOTE; /* force sim_instr() to exit to process command */
} }
else else
sim_activate_after(uptr, 100000); /* check again in 100 milliaeconds */ sim_activate_after(uptr, 100000); /* check again in 100 milliseconds */
if (sim_rem_master_was_enabled && !sim_rem_master_mode) { /* Transitioning out of master mode? */ if (sim_rem_master_was_enabled && !sim_rem_master_mode) { /* Transitioning out of master mode? */
lp = &sim_rem_con_tmxr.ldsc[0]; lp = &sim_rem_con_tmxr.ldsc[0];
tmxr_linemsgf (lp, "Non Master Mode Session..."); /* report transition */ tmxr_linemsgf (lp, "Non Master Mode Session..."); /* report transition */
@ -2092,7 +2092,7 @@ if (sim_rem_master_mode) {
sim_activate (rem_con_data_unit, -1); sim_activate (rem_con_data_unit, -1);
stat = run_cmd (RU_GO, ""); stat = run_cmd (RU_GO, "");
if (stat != SCPE_TTMO) { if (stat != SCPE_TTMO) {
stat_nomessage = stat & SCPE_NOMESSAGE; /* extract possible message supression flag */ stat_nomessage = stat & SCPE_NOMESSAGE; /* extract possible message suppression flag */
stat = _sim_rem_message ("RUN", stat); stat = _sim_rem_message ("RUN", stat);
} }
brk_action = sim_brk_replace_act (NULL); brk_action = sim_brk_replace_act (NULL);

View file

@ -212,7 +212,7 @@ extern "C" {
/* Length specific integer declarations */ /* Length specific integer declarations */
/* Handle the special/unusual cases first with everything else leveraging stdints.h */ /* Handle the special/unusual cases first with everything else leveraging stdint.h */
#if defined (VMS) #if defined (VMS)
#include <ints.h> #include <ints.h>
#elif defined(_MSC_VER) && (_MSC_VER < 1600) #elif defined(_MSC_VER) && (_MSC_VER < 1600)
@ -224,7 +224,7 @@ typedef unsigned __int16 uint16;
typedef unsigned __int32 uint32; typedef unsigned __int32 uint32;
#else #else
/* All modern/standard compiler environments */ /* All modern/standard compiler environments */
/* any other environment needa a special case above */ /* any other environment needs a special case above */
#include <stdint.h> #include <stdint.h>
typedef int8_t int8; typedef int8_t int8;
typedef int16_t int16; typedef int16_t int16;
@ -435,7 +435,7 @@ typedef uint32 t_addr;
#define SCPE_MAX_ERR (SCPE_BASE + 51) /* Maximum SCPE Error Value */ #define SCPE_MAX_ERR (SCPE_BASE + 51) /* Maximum SCPE Error Value */
#define SCPE_KFLAG 0x10000000 /* tti data flag */ #define SCPE_KFLAG 0x10000000 /* tti data flag */
#define SCPE_BREAK 0x20000000 /* tti break flag */ #define SCPE_BREAK 0x20000000 /* tti break flag */
#define SCPE_NOMESSAGE 0x40000000 /* message display supression flag */ #define SCPE_NOMESSAGE 0x40000000 /* message display suppression flag */
#define SCPE_BARE_STATUS(stat) ((stat) & ~(SCPE_NOMESSAGE|SCPE_KFLAG|SCPE_BREAK)) #define SCPE_BARE_STATUS(stat) ((stat) & ~(SCPE_NOMESSAGE|SCPE_KFLAG|SCPE_BREAK))
/* Print value format codes */ /* Print value format codes */

View file

@ -28,7 +28,7 @@
This is the place which hides processing of various disk formats, This is the place which hides processing of various disk formats,
as well as OS-specific direct hardware access. as well as OS-specific direct hardware access.
25-Jan-11 MP Initial Implemementation 25-Jan-11 MP Initial Implementation
Public routines: Public routines:
@ -276,7 +276,7 @@ return NULL;
processing events for any unit. It is only called when an asynchronous processing events for any unit. It is only called when an asynchronous
thread has called sim_activate() to activate a unit. The job of this thread has called sim_activate() to activate a unit. The job of this
routine is to put the unit in proper condition to digest what may have routine is to put the unit in proper condition to digest what may have
occurred in the asynchrconous thread. occurred in the asynchronous thread.
Since disk processing only handles a single I/O at a time to a Since disk processing only handles a single I/O at a time to a
particular disk device (due to using stdio for the SimH Disk format particular disk device (due to using stdio for the SimH Disk format
@ -1302,7 +1302,7 @@ CheckSum1 = ODSChecksum (&Header, 255);
if (CheckSum1 != *(((uint16 *)&Header)+255)) /* Verify Checksum on BITMAP.SYS file header */ if (CheckSum1 != *(((uint16 *)&Header)+255)) /* Verify Checksum on BITMAP.SYS file header */
goto Return_Cleanup; goto Return_Cleanup;
Retr = (ODS2_Retreval *)(((uint16*)(&Header))+Header.fh2_b_mpoffset); Retr = (ODS2_Retreval *)(((uint16*)(&Header))+Header.fh2_b_mpoffset);
/* The BitMap File has a single extent, which may be preceeded by a placement descriptor */ /* The BitMap File has a single extent, which may be preceded by a placement descriptor */
if (Retr->fm2_r_word0_bits.fm2_v_format == 0) if (Retr->fm2_r_word0_bits.fm2_v_format == 0)
Retr = (ODS2_Retreval *)(((uint16 *)Retr)+1); /* skip placement descriptor */ Retr = (ODS2_Retreval *)(((uint16 *)Retr)+1); /* skip placement descriptor */
switch (Retr->fm2_r_word0_bits.fm2_v_format) switch (Retr->fm2_r_word0_bits.fm2_v_format)
@ -3949,7 +3949,7 @@ if (strchr (openmode, 'r'))
if (strchr (openmode, 'w') || strchr (openmode, '+')) if (strchr (openmode, 'w') || strchr (openmode, '+'))
DesiredAccess |= GENERIC_WRITE; DesiredAccess |= GENERIC_WRITE;
/* SCP Command Line parsing replaces \\ with \ presuming this is an /* SCP Command Line parsing replaces \\ with \ presuming this is an
escape sequence. This only affecdts RAW device names and UNC paths. escape sequence. This only affects RAW device names and UNC paths.
We handle the RAW device name case here by prepending paths beginning We handle the RAW device name case here by prepending paths beginning
with \.\ with an extra \. */ with \.\ with an extra \. */
if ((!memcmp ("\\.\\", rawdevicename, 3)) || if ((!memcmp ("\\.\\", rawdevicename, 3)) ||
@ -6604,7 +6604,7 @@ if (info->flag) { /* zap type */
size_t sector_size = NtoHl (f->SectorSize); size_t sector_size = NtoHl (f->SectorSize);
t_offset highwater = (((t_offset)NtoHl (f->Highwater[0])) << 32) | ((t_offset)NtoHl (f->Highwater[1])); t_offset highwater = (((t_offset)NtoHl (f->Highwater[0])) << 32) | ((t_offset)NtoHl (f->Highwater[1]));
if (sector_size > 16384) /* arbitray upper limit */ if (sector_size > 16384) /* arbitrary upper limit */
sector_size = 16384; sector_size = 16384;
/* determine whole sectors in original container size */ /* determine whole sectors in original container size */
/* By default we chop off the disk footer and trailing */ /* By default we chop off the disk footer and trailing */

View file

@ -24,7 +24,7 @@
the sale, use or other dealings in this Software without prior written the sale, use or other dealings in this Software without prior written
authorization from Robert M Supnik and Mark Pizzolato. authorization from Robert M Supnik and Mark Pizzolato.
25-Jan-11 MP Initial Implemementation 25-Jan-11 MP Initial Implementation
*/ */
#ifndef SIM_DISK_H_ #ifndef SIM_DISK_H_

View file

@ -208,7 +208,7 @@
new TOE features are: LSO (Large Send Offload) and Jumbo packet new TOE features are: LSO (Large Send Offload) and Jumbo packet
fragmentation support. These features allow a simulated network fragmentation support. These features allow a simulated network
device to support traffic when a host leverages a NIC's Large device to support traffic when a host leverages a NIC's Large
Send Offload capabilities to fregment and/or segment outgoing Send Offload capabilities to fragment and/or segment outgoing
network traffic. Additionally a simulated network device can network traffic. Additionally a simulated network device can
reasonably exist on a LAN which is configured to use Jumbo frames. reasonably exist on a LAN which is configured to use Jumbo frames.
21-May-10 MP Added functionality to fixup IP header checksums to accomodate 21-May-10 MP Added functionality to fixup IP header checksums to accomodate
@ -216,10 +216,10 @@
enabled which is expected to implement the checksum computations enabled which is expected to implement the checksum computations
in hardware. Since we catch packets before they arrive at the in hardware. Since we catch packets before they arrive at the
NIC the expected checksum insertions haven't been performed yet. NIC the expected checksum insertions haven't been performed yet.
This processing is only done for packets sent from the hoat to This processing is only done for packets sent from the host to
the guest we're supporting. In general this will be a relatively the guest we're supporting. In general this will be a relatively
small number of packets so it is done for all IP frame packets small number of packets so it is done for all IP frame packets
coming from the hoat to the guest. In order to make the coming from the host to the guest. In order to make the
determination of packets specifically arriving from the host we determination of packets specifically arriving from the host we
need to know the hardware MAC address of the host NIC. Currently need to know the hardware MAC address of the host NIC. Currently
determining a NIC's MAC address is relatively easy on Windows. determining a NIC's MAC address is relatively easy on Windows.
@ -323,7 +323,7 @@
work on Red Hat 6.2-sparc and Debian 3.0r1-sparc. work on Red Hat 6.2-sparc and Debian 3.0r1-sparc.
03-Mar-03 MP Changed logging to be consistent on stdout and sim_log 03-Mar-03 MP Changed logging to be consistent on stdout and sim_log
01-Feb-03 MP Changed type of local variables in eth_packet_trace to 01-Feb-03 MP Changed type of local variables in eth_packet_trace to
conform to the interface needs of eth_mac_fmt wich produces conform to the interface needs of eth_mac_fmt which produces
char data instead of unsigned char data. Suggested by the char data instead of unsigned char data. Suggested by the
DECC compiler. DECC compiler.
15-Jan-03 DTH Corrected PacketGetAdapterNames parameter2 datatype 15-Jan-03 DTH Corrected PacketGetAdapterNames parameter2 datatype
@ -364,7 +364,7 @@
24-Sep-02 DTH Finished eth_devices, eth_getname 24-Sep-02 DTH Finished eth_devices, eth_getname
18-Sep-02 DTH Callbacks implemented 18-Sep-02 DTH Callbacks implemented
13-Sep-02 DTH Basic packet read/write written 13-Sep-02 DTH Basic packet read/write written
20-Aug-02 DTH Created Sim_Ether for O/S independant ethernet implementation 20-Aug-02 DTH Created Sim_Ether for O/S independent ethernet implementation
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
*/ */
@ -388,7 +388,7 @@ static void eth_get_nic_hw_addr(ETH_DEV* dev, const char *devname, int set_on);
static const unsigned char framer_oui[3] = { 0xaa, 0x00, 0x03 }; static const unsigned char framer_oui[3] = { 0xaa, 0x00, 0x03 };
/*============================================================================*/ /*============================================================================*/
/* OS-independant ethernet routines */ /* OS-independent ethernet routines */
/*============================================================================*/ /*============================================================================*/
t_stat eth_mac_scan (ETH_MAC* mac, const char* strmac) t_stat eth_mac_scan (ETH_MAC* mac, const char* strmac)
@ -1577,7 +1577,7 @@ struct _PACKET_OID_DATA {
uint32 Oid; ///< OID code. See the Microsoft DDK documentation or the file ntddndis.h uint32 Oid; ///< OID code. See the Microsoft DDK documentation or the file ntddndis.h
///< for a complete list of valid codes. ///< for a complete list of valid codes.
uint32 Length; ///< Length of the data field uint32 Length; ///< Length of the data field
uint8 Data[1]; ///< variable-lenght field that contains the information passed to or received uint8 Data[1]; ///< variable-length field that contains the information passed to or received
///< from the adapter. ///< from the adapter.
}; };
typedef struct _PACKET_OID_DATA PACKET_OID_DATA, *PPACKET_OID_DATA; typedef struct _PACKET_OID_DATA PACKET_OID_DATA, *PPACKET_OID_DATA;
@ -1625,7 +1625,7 @@ static int pcap_mac_if_win32(const char *AdapterName, unsigned char MACAddress[6
return -1; return -1;
} }
/* Allocate a buffer to get the MAC adress */ /* Allocate a buffer to get the MAC address */
OidData = (PACKET_OID_DATA *)malloc(6 + sizeof(PACKET_OID_DATA)); OidData = (PACKET_OID_DATA *)malloc(6 + sizeof(PACKET_OID_DATA));
if (OidData == NULL) { if (OidData == NULL) {
@ -2179,7 +2179,7 @@ return NULL;
/* eth_set_async /* eth_set_async
* *
* Turn on reciever processing which can be either asynchronous or polled * Turn on receiver processing which can be either asynchronous or polled
*/ */
t_stat eth_set_async (ETH_DEV *dev, int latency) t_stat eth_set_async (ETH_DEV *dev, int latency)
{ {
@ -2205,7 +2205,7 @@ return SCPE_OK;
/* eth_clr_async /* eth_clr_async
* *
* Turn off reciever processing * Turn off receiver processing
*/ */
t_stat eth_clr_async (ETH_DEV *dev) t_stat eth_clr_async (ETH_DEV *dev)
{ {
@ -3128,7 +3128,7 @@ int write_queue_size = 1;
/* make sure device exists */ /* make sure device exists */
if ((!dev) || (dev->eth_api == ETH_API_NONE)) return SCPE_UNATT; if ((!dev) || (dev->eth_api == ETH_API_NONE)) return SCPE_UNATT;
if (packet->len > sizeof (packet->msg)) /* packet ovesized? */ if (packet->len > sizeof (packet->msg)) /* packet oversized? */
return SCPE_IERR; /* that's no good! */ return SCPE_IERR; /* that's no good! */
/* Get a buffer */ /* Get a buffer */
@ -3434,7 +3434,7 @@ switch (IP->proto) {
/* We don't do anything with the TCP checksum since we're going to resegment the TCP data below */ /* We don't do anything with the TCP checksum since we're going to resegment the TCP data below */
break; break;
default: default:
++dev->jumbo_dropped; /* We onlt handle UDP, ICMP and TCP jumbo frames others are dropped */ ++dev->jumbo_dropped; /* We only handle UDP, ICMP and TCP jumbo frames others are dropped */
return; return;
} }
/* Reasonable Checksums are now in the jumbo packet, but we've got to actually */ /* Reasonable Checksums are now in the jumbo packet, but we've got to actually */
@ -3478,7 +3478,7 @@ switch (IP->proto) {
we don't want to do this all the time for 2 reasons: we don't want to do this all the time for 2 reasons:
1) sending through pcap involves kernel transitions and 1) sending through pcap involves kernel transitions and
2) if the current system reflects sent packets, the 2) if the current system reflects sent packets, the
recieving side will receive and process 2 copies of receiving side will receive and process 2 copies of
any packets sent this way. */ any packets sent this way. */
ETH_PACK pkt; ETH_PACK pkt;
@ -3532,7 +3532,7 @@ switch (IP->proto) {
we don't want to do this all the time for 2 reasons: we don't want to do this all the time for 2 reasons:
1) sending through pcap involves kernel transitions and 1) sending through pcap involves kernel transitions and
2) if the current system reflects sent packets, the 2) if the current system reflects sent packets, the
recieving side will receive and process 2 copies of receiving side will receive and process 2 copies of
any packets sent this way. */ any packets sent this way. */
ETH_PACK pkt; ETH_PACK pkt;

View file

@ -82,7 +82,7 @@ extern "C" {
#define USE_SETNONBLOCK 1 #define USE_SETNONBLOCK 1
#endif #endif
/* cygwin dowsn't have the right features to use the threaded network I/O */ /* cygwin doesn't have the right features to use the threaded network I/O */
#if defined(__CYGWIN__) || defined(__ZAURUS__) // psco added check for Zaurus platform #if defined(__CYGWIN__) || defined(__ZAURUS__) // psco added check for Zaurus platform
#define DONT_USE_READER_THREAD #define DONT_USE_READER_THREAD
#endif #endif
@ -335,7 +335,7 @@ t_stat eth_open (ETH_DEV* dev, const char* name, /* open ethernet interfa
DEVICE* dptr, uint32 dbit); DEVICE* dptr, uint32 dbit);
t_stat eth_close (ETH_DEV* dev); /* close ethernet interface */ t_stat eth_close (ETH_DEV* dev); /* close ethernet interface */
t_stat eth_attach_help(FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, const char *cptr); t_stat eth_attach_help(FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, const char *cptr);
t_stat eth_write (ETH_DEV* dev, ETH_PACK* packet, /* write sychronous packet; */ t_stat eth_write (ETH_DEV* dev, ETH_PACK* packet, /* write synchronous packet; */
ETH_PCALLBACK routine); /* callback when done */ ETH_PCALLBACK routine); /* callback when done */
int eth_read (ETH_DEV* dev, ETH_PACK* packet, /* read single packet; */ int eth_read (ETH_DEV* dev, ETH_PACK* packet, /* read single packet; */
ETH_PCALLBACK routine); /* callback when done*/ ETH_PCALLBACK routine); /* callback when done*/

View file

@ -576,7 +576,7 @@ static void _time_t_to_filetime (time_t ttime, FILETIME *filetime)
{ {
t_uint64 time64; t_uint64 time64;
time64 = 134774; /* Days betwen Jan 1, 1601 and Jan 1, 1970 */ time64 = 134774; /* Days between Jan 1, 1601 and Jan 1, 1970 */
time64 *= 24; /* Hours */ time64 *= 24; /* Hours */
time64 *= 3600; /* Seconds */ time64 *= 3600; /* Seconds */
time64 += (t_uint64)ttime; /* include time_t seconds */ time64 += (t_uint64)ttime; /* include time_t seconds */
@ -674,7 +674,7 @@ if (AlreadyExists) {
else else
*((DWORD *)((*shmem)->shm_base)) = (DWORD)size; /* Save Size in first page */ *((DWORD *)((*shmem)->shm_base)) = (DWORD)size; /* Save Size in first page */
*addr = ((char *)(*shmem)->shm_base + SysInfo.dwPageSize); /* Point to the second paget for data */ *addr = ((char *)(*shmem)->shm_base + SysInfo.dwPageSize); /* Point to the second page for data */
return SCPE_OK; return SCPE_OK;
} }
@ -937,7 +937,7 @@ return FALSE;
#if defined(__VAX) #if defined(__VAX)
/* /*
* We privide a 'basic' snprintf, which 'might' overrun a buffer, but * We provide a 'basic' snprintf, which 'might' overrun a buffer, but
* the actual use cases don't on other platforms and none of the callers * the actual use cases don't on other platforms and none of the callers
* care about the function return value. * care about the function return value.
*/ */

View file

@ -869,7 +869,7 @@ if (!simulator_panel) {
close (0); close (1); close (2); /* make sure not to pass the open standard handles */ close (0); close (1); close (2); /* make sure not to pass the open standard handles */
if (dup (dup (open ("/dev/null", O_RDWR)))) {}; /* open standard handles to /dev/null */ if (dup (dup (open ("/dev/null", O_RDWR)))) {}; /* open standard handles to /dev/null */
if (execlp (sim_path, sim_path, p->temp_config, NULL, NULL)) { if (execlp (sim_path, sim_path, p->temp_config, NULL, NULL)) {
perror ("execl"); perror ("execlp");
exit(errno); exit(errno);
} }
} }

View file

@ -71,7 +71,7 @@ extern "C" {
it could be merely the simulator name if the simulator binary it could be merely the simulator name if the simulator binary
is located in the current PATH. is located in the current PATH.
- The simulator binary must be built from the same version - The simulator binary must be built from the same version
simh source code that the frontpanel API was acquired fron simh source code that the frontpanel API was acquired from
(the API and the simh framework must speak the same language) (the API and the simh framework must speak the same language)
Note 2: - Configuration file specified should contain device setup Note 2: - Configuration file specified should contain device setup
@ -125,7 +125,7 @@ sim_panel_destroy (PANEL *panel);
the simulator uses as internal state to implement the running the simulator uses as internal state to implement the running
simulator. simulator.
The registers that a particular frontpanel application mught need The registers that a particular frontpanel application might need
access to are specified by the application when it calls: access to are specified by the application when it calls:
sim_panel_add_register sim_panel_add_register
@ -499,7 +499,7 @@ sim_panel_get_history (PANEL *panel,
sim_panel_device_debug_mode sim_panel_device_debug_mode
device the device whose debug mode is to change device the device whose debug mode is to change
set_untset 1 to set debug flags, 0 to clear debug flags set_unset 1 to set debug flags, 0 to clear debug flags
mode_bits character string with different debug mode bits mode_bits character string with different debug mode bits
to enable or disable. An empty string will to enable or disable. An empty string will
enable or disable all mode bits for the specified enable or disable all mode bits for the specified
@ -580,7 +580,7 @@ void sim_panel_clear_error (void);
/** /**
The panek<->simulator wire protocol can be traced if protocol problems arise. The panel<->simulator wire protocol can be traced if protocol problems arise.
sim_panel_set_debug_mode - Specifies the debug detail to be recorded sim_panel_set_debug_mode - Specifies the debug detail to be recorded
sim_panel_flush_debug - Flushes debug output to disk sim_panel_flush_debug - Flushes debug output to disk

View file

@ -672,7 +672,7 @@ t_stat sectWrite(DISK_INFO *myDisk,
* does not involve changing the disk image size.) * does not involve changing the disk image size.)
* *
* Any existing data on the disk image will be destroyed when Track 0, Head 0 is formatted. * Any existing data on the disk image will be destroyed when Track 0, Head 0 is formatted.
* At that time, the IMD file is truncated. So for the trackWrite to be used to sucessfully * At that time, the IMD file is truncated. So for the trackWrite to be used to successfully
* format a disk image, then format program must format tracks starting with Cyl 0, Head 0, * format a disk image, then format program must format tracks starting with Cyl 0, Head 0,
* and proceed sequentially through all tracks/heads on the disk. * and proceed sequentially through all tracks/heads on the disk.
* *

View file

@ -2,7 +2,7 @@
* sim_printf_fmts.h * sim_printf_fmts.h
* *
* Cross-platform printf() formats for simh data types. Refactored out to * Cross-platform printf() formats for simh data types. Refactored out to
* this header so that these formats are avaiable to more than SCP. * this header so that these formats are available to more than SCP.
* *
* Author: B. Scott Michel * Author: B. Scott Michel
* *

View file

@ -46,7 +46,7 @@
/* /*
SIM__GIT_COMMMIT_ID is undefined when working with an SIM__GIT_COMMMIT_ID is undefined when working with an
archive (zip file or tar ball). Use Git keyword subsitution archive (zip file or tar ball). Use Git keyword substitution
to record the archive's commit id via the .gitattributes to record the archive's commit id via the .gitattributes
"export-subst". "export-subst".
*/ */
@ -55,7 +55,7 @@
/* /*
The comment section below reflects the manual editing process which was in place The comment section below reflects the manual editing process which was in place
prior to the use of the git source control system on at https://gihub.com/simh/simh prior to the use of the git source control system on at https://github.com/simh/simh
Details about all future fixes will be visible in the source control system's Details about all future fixes will be visible in the source control system's
history. history.
@ -229,7 +229,7 @@ patch date module(s) and fix(es)
- fixed misuse of & instead of && in Ea_ch (Michael Bloom) - fixed misuse of & instead of && in Ea_ch (Michael Bloom)
pdp1_stddev.c: pdp1_stddev.c:
- fixed unitialized variable in tty output service (Michael Bloom) - fixed uninitialized variable in tty output service (Michael Bloom)
pdp10_fe.c: pdp10_fe.c:
- revised to use clock coscheduling - revised to use clock coscheduling
@ -241,7 +241,7 @@ patch date module(s) and fix(es)
- fixed Qbus interrupts to treat all IO devices (except clock) as BR4 - fixed Qbus interrupts to treat all IO devices (except clock) as BR4
- fixed order of int_internal (Jordi Guillaumes i Pons) - fixed order of int_internal (Jordi Guillaumes i Pons)
ppd11_rf.c pdp11_rf.c
- fixed bug in updating mem addr extension (Peter Schorn) - fixed bug in updating mem addr extension (Peter Schorn)
pdp11_rk.c: pdp11_rk.c:
@ -284,7 +284,7 @@ patch date module(s) and fix(es)
- Fixed loopback processing to correctly handle forward packets. - Fixed loopback processing to correctly handle forward packets.
- Fixed interrupt dispatch issue which caused delivered packets - Fixed interrupt dispatch issue which caused delivered packets
(in and out) to sometimes not interrupt the CPU after processing. (in and out) to sometimes not interrupt the CPU after processing.
- Fixed the SCP visibile SA registers to always display the - Fixed the SCP visible SA registers to always display the
ROM mac address, even after it is changed by SET XQ MAC=. ROM mac address, even after it is changed by SET XQ MAC=.
- Added changes so that the Console DELQA diagnostic (>>>TEST 82) - Added changes so that the Console DELQA diagnostic (>>>TEST 82)
will succeed. will succeed.
@ -303,7 +303,7 @@ patch date module(s) and fix(es)
- Added SET XQ POLL=DISABLE (aka SET XQ POLL=0) to operate without - Added SET XQ POLL=DISABLE (aka SET XQ POLL=0) to operate without
polling for packet read completion. polling for packet read completion.
- Changed the sanity and id timer mechanisms to use a separate timer - Changed the sanity and id timer mechanisms to use a separate timer
unit so that transmit and recieve activities can be dealt with unit so that transmit and receive activities can be dealt with
by the normal xq_svc routine. by the normal xq_svc routine.
Dynamically determine the timer polling rate based on the Dynamically determine the timer polling rate based on the
calibrated tmr_poll and clk_tps values of the simulator. calibrated tmr_poll and clk_tps values of the simulator.
@ -342,7 +342,7 @@ patch date module(s) and fix(es)
- revised to use clock coscheduling and to fix perpetual CAF bug - revised to use clock coscheduling and to fix perpetual CAF bug
pdp8_ttx.c: pdp8_ttx.c:
- revised to use clock cosheduling - revised to use clock coscheduling
pdp8_sys.c: pdp8_sys.c:
- added link to FPP - added link to FPP
@ -423,7 +423,7 @@ patch date module(s) and fix(es)
- Moved non-existent memory checks to WritePW - Moved non-existent memory checks to WritePW
- Fixed mp_dms_jmp to accept lower bound, check write protection - Fixed mp_dms_jmp to accept lower bound, check write protection
- Corrected DMS violation register set conditions - Corrected DMS violation register set conditions
- Refefined ABORT to pass address, moved def to hp2100_cpu.h - Redefined ABORT to pass address, moved def to hp2100_cpu.h
- Combined dms and dms_io routines - Combined dms and dms_io routines
- JSB to 0/1 with W5 out and fence = 0 erroneously causes MP abort - JSB to 0/1 with W5 out and fence = 0 erroneously causes MP abort
- Unified I/O slot dispatch by adding DIBs for CPU, MP, and DMA - Unified I/O slot dispatch by adding DIBs for CPU, MP, and DMA
@ -827,7 +827,7 @@ patch date module(s) and fix(es)
- fixed to set "mux_rchp" when a line break is received - fixed to set "mux_rchp" when a line break is received
- fixed incorrect "odd_par" table values - fixed incorrect "odd_par" table values
- reversed test in "RCV_PAR" to return "LIL_PAR" on odd parity - reversed test in "RCV_PAR" to return "LIL_PAR" on odd parity
- rixed mux reset (ioCRS) to clear port parameters - fixed mux reset (ioCRS) to clear port parameters
- fixed to use PUT_DCH instead of PUT_CCH for data channel status - fixed to use PUT_DCH instead of PUT_CCH for data channel status
- added DIAG/TERM modifiers to implement diagnostic mode - added DIAG/TERM modifiers to implement diagnostic mode
@ -1167,7 +1167,7 @@ patch date module(s) and fix(es)
- fixed POLYD, POLYG to not exit prematurely if arg = 0 - fixed POLYD, POLYG to not exit prematurely if arg = 0
- fixed POLYD, POLYG to do full 64b multiply - fixed POLYD, POLYG to do full 64b multiply
- fixed POLYF, POLYD, POLYG to remove truncation on add - fixed POLYF, POLYD, POLYG to remove truncation on add
- fixed POLYF, POLYD, POLYG to mask mul reslt to 31b/63b/63b - fixed POLYF, POLYD, POLYG to mask mul result to 31b/63b/63b
- fixed fp add routine to test for zero via fraction - fixed fp add routine to test for zero via fraction
to support "denormal" argument from POLYF, POLYD, POLYG to support "denormal" argument from POLYF, POLYD, POLYG
- fixed bug in 32b floating multiply routine - fixed bug in 32b floating multiply routine
@ -1183,7 +1183,7 @@ patch date module(s) and fix(es)
- fixed ACBH to set cc's on result - fixed ACBH to set cc's on result
- fixed POLYH to set R3 correctly - fixed POLYH to set R3 correctly
- fixed POLYH to not exit prematurely if arg = 0 - fixed POLYH to not exit prematurely if arg = 0
- fixed POLYH to mask mul reslt to 127b - fixed POLYH to mask mul result to 127b
- fixed fp add routine to test for zero via fraction - fixed fp add routine to test for zero via fraction
to support "denormal" argument from POLYH to support "denormal" argument from POLYH
- fixed EMODH to concatenate 15b of 16b extension - fixed EMODH to concatenate 15b of 16b extension
@ -1868,7 +1868,7 @@ patch date module(s) and fix(es)
pdp1_drm.c: pdp1_drm.c:
- added parallel drum support - added parallel drum support
- fixed bug in serial drum instructin decoding - fixed bug in serial drum instruction decoding
pdp1_sys.c: added parallel drum support, mnemonics pdp1_sys.c: added parallel drum support, mnemonics
@ -2469,7 +2469,7 @@ patch date module(s) and fix(es)
- fixed RTS SP, don't increment restored SP - fixed RTS SP, don't increment restored SP
- fixed TSTSET, write dst | 1 rather than prev R0 | 1 - fixed TSTSET, write dst | 1 rather than prev R0 | 1
- fixed DIV, set N=0,Z=1 on div by zero (J11, 11/70) - fixed DIV, set N=0,Z=1 on div by zero (J11, 11/70)
- fixed DIV, set set N=Z=0 on overfow (J11, 11/70) - fixed DIV, set set N=Z=0 on overflow (J11, 11/70)
- fixed ASH, ASHC, count = -32 used implementation- - fixed ASH, ASHC, count = -32 used implementation-
dependent 32 bit right shift dependent 32 bit right shift
- fixed illegal instruction test to detect 000010 - fixed illegal instruction test to detect 000010

View file

@ -71,7 +71,7 @@
#define KEY_ILLREQ 5 /* illegal request */ #define KEY_ILLREQ 5 /* illegal request */
#define KEY_PROT 7 /* data protect */ #define KEY_PROT 7 /* data protect */
#define KEY_BLANK 8 /* blank check */ #define KEY_BLANK 8 /* blank check */
#define KEY_M_ILI 0x20 /* incorrent length indicator */ #define KEY_M_ILI 0x20 /* incorrect length indicator */
/* Additional sense codes */ /* Additional sense codes */
@ -428,11 +428,11 @@ else {
} }
#endif #endif
if (dev->removeable) if (dev->removeable)
bus->buf[bus->buf_b++] = 0x80; /* removeable */ bus->buf[bus->buf_b++] = 0x80; /* removable */
else else
bus->buf[bus->buf_b++] = 0; /* fixed */ bus->buf[bus->buf_b++] = 0; /* fixed */
bus->buf[bus->buf_b++] = dev->scsiver; /* versions */ bus->buf[bus->buf_b++] = dev->scsiver; /* versions */
bus->buf[bus->buf_b++] = dev->scsiver; /* respose data format */ bus->buf[bus->buf_b++] = dev->scsiver; /* response data format */
bus->buf[bus->buf_b++] = 31; /* additional length */ bus->buf[bus->buf_b++] = 31; /* additional length */
bus->buf[bus->buf_b++] = 0; /* reserved */ bus->buf[bus->buf_b++] = 0; /* reserved */
bus->buf[bus->buf_b++] = 0; /* reserved */ bus->buf[bus->buf_b++] = 0; /* reserved */
@ -639,7 +639,7 @@ if ((pc == 0x4) || (pc == 0x3F)) {
bus->buf[bus->buf_b++] = 0x4; /* landing zone cyl (15:8) */ bus->buf[bus->buf_b++] = 0x4; /* landing zone cyl (15:8) */
bus->buf[bus->buf_b++] = 0; /* landing zone cyl (7:0) */ bus->buf[bus->buf_b++] = 0; /* landing zone cyl (7:0) */
bus->buf[bus->buf_b++] = 0; /* reserved, RPL */ bus->buf[bus->buf_b++] = 0; /* reserved, RPL */
bus->buf[bus->buf_b++] = 0; /* rotational offet */ bus->buf[bus->buf_b++] = 0; /* rotational offset */
bus->buf[bus->buf_b++] = 0; /* reserved */ bus->buf[bus->buf_b++] = 0; /* reserved */
bus->buf[bus->buf_b++] = 0x1C; /* medium rotation rate (15:8) */ bus->buf[bus->buf_b++] = 0x1C; /* medium rotation rate (15:8) */
bus->buf[bus->buf_b++] = 0x20; /* medium rotation rate (7:0) */ bus->buf[bus->buf_b++] = 0x20; /* medium rotation rate (7:0) */
@ -1782,7 +1782,7 @@ t_stat scsi_attach (UNIT *uptr, CONST char *cptr)
return scsi_attach_ex (uptr, cptr, NULL); return scsi_attach_ex (uptr, cptr, NULL);
} }
/* Dettach device */ /* Detach device */
t_stat scsi_detach (UNIT *uptr) t_stat scsi_detach (UNIT *uptr)
{ {

View file

@ -26,7 +26,7 @@
15-Oct-12 MP Added definitions needed to detect possible tcp 15-Oct-12 MP Added definitions needed to detect possible tcp
connect failures connect failures
25-Sep-12 MP Reworked for RFC3493 interfaces supporting IPv6 and IPv4 25-Sep-12 MP Reworked for RFC3493 interfaces supporting IPv6 and IPv4
04-Jun-08 RMS Addes sim_create_sock, for IBM 1130 04-Jun-08 RMS Added sim_create_sock, for IBM 1130
14-Apr-05 RMS Added WSAEINPROGRESS (from Tim Riker) 14-Apr-05 RMS Added WSAEINPROGRESS (from Tim Riker)
20-Aug-04 HV Added missing definition for OS/2 (from Holger Veit) 20-Aug-04 HV Added missing definition for OS/2 (from Holger Veit)
22-Oct-03 MP Changed WIN32 winsock include to use winsock2.h to 22-Oct-03 MP Changed WIN32 winsock include to use winsock2.h to

View file

@ -781,7 +781,7 @@ switch (MT_GET_FMT (uptr)) {
if (uptr->recsize == 0) if (uptr->recsize == 0)
uptr->recsize = 512; uptr->recsize = 512;
if ((statb.st_size % uptr->recsize) != 0) { if ((statb.st_size % uptr->recsize) != 0) {
r = sim_messagef (SCPE_ARG, "Binary file data is not a multiple of the specifyed record size (%d)\n", (int)uptr->recsize); r = sim_messagef (SCPE_ARG, "Binary file data is not a multiple of the specified record size (%d)\n", (int)uptr->recsize);
fclose (f); fclose (f);
break; break;
} }
@ -810,7 +810,7 @@ switch (MT_GET_FMT (uptr)) {
tape->block_size = uptr->recsize; tape->block_size = uptr->recsize;
block = (uint8 *)calloc (1, tape->block_size + 3); block = (uint8 *)calloc (1, tape->block_size + 3);
while (!feof (f) && !error) { while (!feof (f) && !error) {
/* fgest() read size is int, cast accordingly. */ /* fgets() read size is int, cast accordingly. */
if (fgets ((char *)block, (int) (tape->block_size + 3), f)) { if (fgets ((char *)block, (int) (tape->block_size + 3), f)) {
size_t len = strlen ((char *)block); size_t len = strlen ((char *)block);
@ -1083,7 +1083,7 @@ fprintf (st, " accessible directly as files on the tape.\n\n");
fprintf (st, " FIXED format will present the contents of a file (text or binary) as\n"); fprintf (st, " FIXED format will present the contents of a file (text or binary) as\n");
fprintf (st, " fixed sized records/blocks with ascii text data optionally converted\n"); fprintf (st, " fixed sized records/blocks with ascii text data optionally converted\n");
fprintf (st, " to EBCDIC.\n\n"); fprintf (st, " to EBCDIC.\n\n");
fprintf (st, " DOS11 format will present the contents of a file preceeded by a DOS11\n"); fprintf (st, " DOS11 format will present the contents of a file preceded by a DOS11\n");
fprintf (st, " 14-byte header. All files will be owned by [1,1], have a default\n"); fprintf (st, " 14-byte header. All files will be owned by [1,1], have a default\n");
fprintf (st, " protection of <233> and a date in the range 1972 - 1999 with the\n"); fprintf (st, " protection of <233> and a date in the range 1972 - 1999 with the\n");
fprintf (st, " month/day layout as the current year. The file name on the tape\n"); fprintf (st, " month/day layout as the current year. The file name on the tape\n");
@ -2870,7 +2870,7 @@ if (ctx == NULL) /* if not properly attac
return sim_messagef (SCPE_IERR, "Bad Attach\n"); /* that's a problem */ return sim_messagef (SCPE_IERR, "Bad Attach\n"); /* that's a problem */
sim_debug_unit (ctx->dbit, uptr, "sim_tape_sprecsf(unit=%d, count=%d)\n", (int)(uptr-ctx->dptr->units), count); sim_debug_unit (ctx->dbit, uptr, "sim_tape_sprecsf(unit=%d, count=%d)\n", (int)(uptr-ctx->dptr->units), count);
while (*skipped < count) { /* loopo */ while (*skipped < count) { /* loop */
st = sim_tape_sprecf (uptr, &tbc); /* spc rec */ st = sim_tape_sprecf (uptr, &tbc); /* spc rec */
if (st != MTSE_OK) if (st != MTSE_OK)
return st; return st;
@ -2967,7 +2967,7 @@ if (ctx == NULL) /* if not properly attac
return sim_messagef (SCPE_IERR, "Bad Attach\n"); /* that's a problem */ return sim_messagef (SCPE_IERR, "Bad Attach\n"); /* that's a problem */
sim_debug_unit (ctx->dbit, uptr, "sim_tape_sprecsr(unit=%d, count=%d)\n", (int)(uptr-ctx->dptr->units), count); sim_debug_unit (ctx->dbit, uptr, "sim_tape_sprecsr(unit=%d, count=%d)\n", (int)(uptr-ctx->dptr->units), count);
while (*skipped < count) { /* loopo */ while (*skipped < count) { /* loop */
st = sim_tape_sprecr (uptr, &tbc); /* spc rec rev */ st = sim_tape_sprecr (uptr, &tbc); /* spc rec rev */
if (st != MTSE_OK) if (st != MTSE_OK)
return st; return st;
@ -3028,7 +3028,7 @@ if (check_leot) {
} }
*skipped = 0; *skipped = 0;
*recsskipped = 0; *recsskipped = 0;
while (*skipped < count) { /* loopo */ while (*skipped < count) { /* loop */
while (1) { while (1) {
st = sim_tape_sprecsf (uptr, 0x1ffffff, &filerecsskipped);/* spc recs */ st = sim_tape_sprecsf (uptr, 0x1ffffff, &filerecsskipped);/* spc recs */
*recsskipped += filerecsskipped; *recsskipped += filerecsskipped;
@ -3134,7 +3134,7 @@ if (ctx == NULL) /* if not properly attac
return sim_messagef (SCPE_IERR, "Bad Attach\n"); /* that's a problem */ return sim_messagef (SCPE_IERR, "Bad Attach\n"); /* that's a problem */
sim_debug_unit (ctx->dbit, uptr, "sim_tape_spfilebyrecr(unit=%d, count=%d)\n", (int)(uptr-ctx->dptr->units), count); sim_debug_unit (ctx->dbit, uptr, "sim_tape_spfilebyrecr(unit=%d, count=%d)\n", (int)(uptr-ctx->dptr->units), count);
while (*skipped < count) { /* loopo */ while (*skipped < count) { /* loop */
while (1) { while (1) {
st = sim_tape_sprecsr (uptr, 0x1ffffff, &filerecsskipped);/* spc recs rev */ st = sim_tape_sprecsr (uptr, 0x1ffffff, &filerecsskipped);/* spc recs rev */
*recsskipped += filerecsskipped; *recsskipped += filerecsskipped;
@ -3250,7 +3250,7 @@ if (flags & MTPOS_M_OBJ) {
uint32 skipped; uint32 skipped;
uint32 objsremaining = objs; uint32 objsremaining = objs;
while (*objectsskipped < objs) { /* loopo */ while (*objectsskipped < objs) { /* loop */
if (flags & MTPOS_M_REV) /* reverse? */ if (flags & MTPOS_M_REV) /* reverse? */
r = sim_tape_sprecsr (uptr, objsremaining, &skipped); r = sim_tape_sprecsr (uptr, objsremaining, &skipped);
else else
@ -3456,7 +3456,7 @@ if (((last_bc != TPC_EOM) &&
if (tpos > tape_size) if (tpos > tape_size)
sim_debug_unit (MTSE_DBG_STR, uptr, "tpc_map: ERROR next record position %" T_ADDR_FMT "u beyond EOT: %" T_ADDR_FMT "u\n", tpos, tape_size); sim_debug_unit (MTSE_DBG_STR, uptr, "tpc_map: ERROR next record position %" T_ADDR_FMT "u beyond EOT: %" T_ADDR_FMT "u\n", tpos, tape_size);
if (objc == countmap[0]) if (objc == countmap[0])
sim_debug_unit (MTSE_DBG_STR, uptr, "tpc_map: ERROR tape cnly contains tape marks\n"); sim_debug_unit (MTSE_DBG_STR, uptr, "tpc_map: ERROR tape only contains tape marks\n");
free (countmap); free (countmap);
free (recbuf); free (recbuf);
return 0; return 0;
@ -3582,7 +3582,7 @@ while (r == SCPE_OK) {
break; break;
} }
if (0 != memcmp (buf_f, buf_r, bc_f)) { if (0 != memcmp (buf_f, buf_r, bc_f)) {
sim_printf ("%d byte record contents differ when read forward amd backwards start from position %" T_ADDR_FMT "u\n", bc_f, pos_f); sim_printf ("%d byte record contents differ when read forward and backwards start from position %" T_ADDR_FMT "u\n", bc_f, pos_f);
r = MTSE_RECE; r = MTSE_RECE;
break; break;
} }
@ -4565,7 +4565,7 @@ static void ansi_fill_text_buffer (FILE *f, char *buf, size_t buf_size, size_t r
move_size = rec_size; move_size = rec_size;
else else
move_size = buf_size - offset; move_size = buf_size - offset;
/* We've got a line that stradles a block boundary */ /* We've got a line that straddles a block boundary */
memcpy (buf + offset, tmp, move_size); memcpy (buf + offset, tmp, move_size);
offset += move_size; offset += move_size;
if (offset == buf_size) { if (offset == buf_size) {
@ -5010,7 +5010,7 @@ while (!feof (f) && !error) {
size_t runt = 0; size_t runt = 0;
data_read = fread (block, 1, tape->block_size, f); data_read = fread (block, 1, tape->block_size, f);
if (max_record_size > 0) /* always will be true but XCode thinks otherwise */ if (max_record_size > 0) /* always will be true but Xcode thinks otherwise */
runt = data_read % max_record_size; /* data_read (=0) % anypositivenumber == 0 */ runt = data_read % max_record_size; /* data_read (=0) % anypositivenumber == 0 */
/* Pad short records with zeros */ /* Pad short records with zeros */
if (runt > 0) { if (runt > 0) {

View file

@ -914,7 +914,7 @@ if (sim_calb_tmr != tmr) {
new_rtime = sim_os_msec (); /* wall time */ new_rtime = sim_os_msec (); /* wall time */
if (!sim_signaled_int_char && if (!sim_signaled_int_char &&
((new_rtime - sim_last_poll_kbd_time) > 500)) { ((new_rtime - sim_last_poll_kbd_time) > 500)) {
sim_debug (DBG_CAL, &sim_timer_dev, "sim_rtcn_calb(tmr=%d) gratuitious keyboard poll after %d msecs\n", tmr, (int)(new_rtime - sim_last_poll_kbd_time)); sim_debug (DBG_CAL, &sim_timer_dev, "sim_rtcn_calb(tmr=%d) gratuitous keyboard poll after %d msecs\n", tmr, (int)(new_rtime - sim_last_poll_kbd_time));
(void)sim_poll_kbd (); (void)sim_poll_kbd ();
} }
++rtc->calibrations; /* count calibrations */ ++rtc->calibrations; /* count calibrations */
@ -1025,7 +1025,7 @@ for (itmr=0; itmr<=SIM_NTIMERS; itmr++) {
if ((itmr != tmr) && (irtc->hz != 0)) if ((itmr != tmr) && (irtc->hz != 0))
irtc->currd = (rtc->currd * ticksper) / irtc->hz; irtc->currd = (rtc->currd * ticksper) / irtc->hz;
} }
AIO_SET_INTERRUPT_LATENCY(rtc->currd * ticksper); /* set interrrupt latency */ AIO_SET_INTERRUPT_LATENCY(rtc->currd * ticksper); /* set interrupt latency */
return rtc->currd; return rtc->currd;
} }
@ -1641,7 +1641,7 @@ act_cyc = act_ms * sim_idle_cyc_ms;
if (cyc_since_idle > sim_idle_cyc_sleep) if (cyc_since_idle > sim_idle_cyc_sleep)
act_cyc -= sim_idle_cyc_sleep / 2; /* account for half an interval's worth of cycles */ act_cyc -= sim_idle_cyc_sleep / 2; /* account for half an interval's worth of cycles */
else else
act_cyc -= (int32)cyc_since_idle; /* acount for cycles executed */ act_cyc -= (int32)cyc_since_idle; /* account for cycles executed */
sim_interval = sim_interval - act_cyc; /* count down sim_interval to reflect idle period */ sim_interval = sim_interval - act_cyc; /* count down sim_interval to reflect idle period */
sim_idle_end_time = sim_gtime(); /* save idle completed time */ sim_idle_end_time = sim_gtime(); /* save idle completed time */
if (sim_clock_queue == QUEUE_LIST_END) if (sim_clock_queue == QUEUE_LIST_END)
@ -1906,7 +1906,7 @@ switch (sim_throt_state) {
(int)delta_ms, delta_inst, sim_vm_interval_units); (int)delta_ms, delta_inst, sim_vm_interval_units);
sim_throt_wait = (int32)(delta_inst * SIM_THROT_WMUL); sim_throt_wait = (int32)(delta_inst * SIM_THROT_WMUL);
sim_throt_inst_start = sim_gtime(); sim_throt_inst_start = sim_gtime();
sim_idle_ms_sleep (sim_idle_rate_ms); /* start on a tick boundart to calibrate */ sim_idle_ms_sleep (sim_idle_rate_ms); /* start on a tick boundary to calibrate */
sim_throt_ms_start = sim_os_msec (); sim_throt_ms_start = sim_os_msec ();
} }
else { /* long enough */ else { /* long enough */
@ -2050,7 +2050,7 @@ static void _sim_timer_adjust_cal(void)
} }
} }
/* Clock assist activites */ /* Clock assist activities */
t_stat sim_timer_tick_svc (UNIT *uptr) t_stat sim_timer_tick_svc (UNIT *uptr)
{ {
int32 tmr = (int32)(uptr-sim_timer_units); int32 tmr = (int32)(uptr-sim_timer_units);
@ -2396,7 +2396,7 @@ return NULL;
standard devices or possibly when a clock device exists but its standard devices or possibly when a clock device exists but its
use is optional. use is optional.
Additonally, when a host system has a natural clock tick ( Additionally, when a host system has a natural clock tick (
or minimal sleep time) which is greater than the tick size that or minimal sleep time) which is greater than the tick size that
a simulator wants to run a clock at, we run this clock at the a simulator wants to run a clock at, we run this clock at the
rate implied by the host system's minimal sleep time or 50Hz. rate implied by the host system's minimal sleep time or 50Hz.
@ -3315,9 +3315,9 @@ return result; /* Not found. */
The default calibration determines a way to limit activities The default calibration determines a way to limit activities
to 1Mhz for each call to sim_rom_read_with_delay(). If a to 1Mhz for each call to sim_rom_read_with_delay(). If a
simulator needs a different delay factor, the 1 Mhz initial simulator needs a different delay factor, the 1 MHz initial
value can be queried with sim_get_rom_delay_factor() and the value can be queried with sim_get_rom_delay_factor() and the
result can be adjusted as nessary and the operating delay result can be adjusted as necessary and the operating delay
can be set with sim_set_rom_delay_factor(). can be set with sim_set_rom_delay_factor().
*/ */

View file

@ -68,7 +68,7 @@
tmxr_detach_ln - reset line and close per line listener and outgoing destination tmxr_detach_ln - reset line and close per line listener and outgoing destination
tmxr_getc_ln - get character for line tmxr_getc_ln - get character for line
tmxr_get_packet_ln - get packet from line tmxr_get_packet_ln - get packet from line
tmxr_get_packet_ln_ex - get packet from line with separater byte tmxr_get_packet_ln_ex - get packet from line with separator byte
tmxr_poll_rx - poll receive tmxr_poll_rx - poll receive
tmxr_putc_ln - put character for line tmxr_putc_ln - put character for line
tmxr_put_packet_ln - put packet on line tmxr_put_packet_ln - put packet on line
@ -224,7 +224,7 @@
sim> attach MUX Line=2,port{;notelnet}|{;nomessage} sim> attach MUX Line=2,port{;notelnet}|{;nomessage}
Direct computer to computer connections (Virutal Null Modem cables) may Direct computer to computer connections (Virtual Null Modem cables) may
be established using the telnet protocol or via raw tcp sockets. be established using the telnet protocol or via raw tcp sockets.
sim> attach MUX Line=2,Connect=host:port{;notelnet} sim> attach MUX Line=2,Connect=host:port{;notelnet}
@ -374,7 +374,7 @@
#define TN_NAOCRD 10 /* Output Carriage-Return Disposition */ #define TN_NAOCRD 10 /* Output Carriage-Return Disposition */
#define TN_NAOHTS 11 /* Output Horizontal Tab Stops */ #define TN_NAOHTS 11 /* Output Horizontal Tab Stops */
#define TN_NAOHTD 12 /* Output Horizontal Tab Stop Disposition */ #define TN_NAOHTD 12 /* Output Horizontal Tab Stop Disposition */
#define TN_NAOFFD 13 /* Output Forfeed Disposition */ #define TN_NAOFFD 13 /* Output Formfeed Disposition */
#define TN_NAOVTS 14 /* Output Vertical Tab Stop */ #define TN_NAOVTS 14 /* Output Vertical Tab Stop */
#define TN_NAOVTD 15 /* Output Vertical Tab Stop Disposition */ #define TN_NAOVTD 15 /* Output Vertical Tab Stop Disposition */
#define TN_NAOLFD 16 /* Output Linefeed Disposition */ #define TN_NAOLFD 16 /* Output Linefeed Disposition */
@ -1079,7 +1079,7 @@ if (mp->last_poll_time == 0) { /* first poll initializa
UNIT *uptr = mp->uptr; UNIT *uptr = mp->uptr;
if (!uptr) /* Attached ? */ if (!uptr) /* Attached ? */
return -1; /* No connections are possinle! */ return -1; /* No connections are possible! */
uptr->tmxr = (void *)mp; /* Connect UNIT to TMXR */ uptr->tmxr = (void *)mp; /* Connect UNIT to TMXR */
uptr->dynflags |= UNIT_TM_POLL; /* Tag as polling unit */ uptr->dynflags |= UNIT_TM_POLL; /* Tag as polling unit */
@ -1356,7 +1356,7 @@ for (i = 0; i < mp->lines; i++) { /* check each line in se
if (lp->connecting) { if (lp->connecting) {
snprintf (msg, sizeof (msg) -1, "tmxr_poll_conn() - aborting outgoing line connection attempt to: %s", lp->destination); snprintf (msg, sizeof (msg) -1, "tmxr_poll_conn() - aborting outgoing line connection attempt to: %s", lp->destination);
tmxr_debug_connect_line (lp, msg); tmxr_debug_connect_line (lp, msg);
sim_close_sock (lp->connecting); /* abort our as yet unconnnected socket */ sim_close_sock (lp->connecting); /* abort our as yet unconnected socket */
lp->connecting = 0; lp->connecting = 0;
} }
} }
@ -1556,7 +1556,7 @@ return tmxr_clear_modem_control_passthru_state (mp, TRUE);
3 This API will only change the state of the modem control processing 3 This API will only change the state of the modem control processing
of this library if there are no listening ports, serial ports or of this library if there are no listening ports, serial ports or
outgoing connecctions associated with the specified multiplexer outgoing connections associated with the specified multiplexer
*/ */
t_stat tmxr_clear_modem_control_passthru (TMXR *mp) t_stat tmxr_clear_modem_control_passthru (TMXR *mp)
@ -2493,7 +2493,7 @@ if ((lp->conn && (TXBUF_AVAIL(lp) > 1)) || /* connected and room fo
sim_oline = NULL; /* save output socket */ sim_oline = NULL; /* save output socket */
fputc (chr, lp->txlog); /* log to actual file */ fputc (chr, lp->txlog); /* log to actual file */
sim_oline = save_oline; /* resture output socket */ sim_oline = save_oline; /* restore output socket */
} }
sim_exp_check (&lp->expect, chr); /* process expect rules as needed */ sim_exp_check (&lp->expect, chr); /* process expect rules as needed */
if (!sim_is_running && /* attach message or other non simulation time message? */ if (!sim_is_running && /* attach message or other non simulation time message? */
@ -2515,12 +2515,12 @@ return SCPE_STALL; /* char not sent */
*lp = pointer to line descriptor *lp = pointer to line descriptor
*buf = pointer to packet data *buf = pointer to packet data
size = size of packet size = size of packet
frame_char = inter-packet franing character (0 means no frame character) frame_char = inter-packet framing character (0 means no frame character)
Outputs: Outputs:
status = ok, connection lost, or stall status = ok, connection lost, or stall
Implementation notea: Implementation notes:
1. If the line is not connected, SCPE_LOST is returned. 1. If the line is not connected, SCPE_LOST is returned.
2. If prior packet transmission still in progress, SCPE_STALL is 2. If prior packet transmission still in progress, SCPE_STALL is
@ -4451,7 +4451,7 @@ if (r != SCPE_OK) /* error? */
return r; return r;
uptr->filename = tmxr_mux_attach_string (uptr->filename, mp);/* save */ uptr->filename = tmxr_mux_attach_string (uptr->filename, mp);/* save */
if (uptr->filename == NULL) /* avoid dangling NULL pointer */ if (uptr->filename == NULL) /* avoid dangling NULL pointer */
uptr->filename = (char *)calloc (1, 1); /* provide an emptry string */ uptr->filename = (char *)calloc (1, 1); /* provide an empty string */
uptr->flags = uptr->flags | UNIT_ATT; /* no more errors */ uptr->flags = uptr->flags | UNIT_ATT; /* no more errors */
uptr->tmxr = (void *)mp; uptr->tmxr = (void *)mp;
if ((mp->lines > 1) || if ((mp->lines > 1) ||
@ -4850,7 +4850,7 @@ if (!(uptr->dynflags & UNIT_TM_POLL))
sooner = _tmxr_activate_delay (uptr, 0x7FFFFFFF); sooner = _tmxr_activate_delay (uptr, 0x7FFFFFFF);
if (sooner != 0x7FFFFFFF) { if (sooner != 0x7FFFFFFF) {
if (sooner < 0) { if (sooner < 0) {
sim_debug (TIMER_DBG_MUX, &sim_timer_dev, "tmxr_activate_after() - scheduling %s for %u usecs produced overflow interval %d instructions, sceduling for %d instructions\n", sim_uname (uptr), usecs_walltime, sooner, 0x7FFFFFFF); sim_debug (TIMER_DBG_MUX, &sim_timer_dev, "tmxr_activate_after() - scheduling %s for %u usecs produced overflow interval %d instructions, scheduling for %d instructions\n", sim_uname (uptr), usecs_walltime, sooner, 0x7FFFFFFF);
sooner = _tmxr_activate_delay (uptr, 0x7FFFFFFF); /* Breakpoint here on unexpected value */ sooner = _tmxr_activate_delay (uptr, 0x7FFFFFFF); /* Breakpoint here on unexpected value */
} }
sim_debug (TIMER_DBG_MUX, &sim_timer_dev, "tmxr_activate_after() - scheduling %s after %d instructions rather than %u usecs\n", sim_uname (uptr), sooner, usecs_walltime); sim_debug (TIMER_DBG_MUX, &sim_timer_dev, "tmxr_activate_after() - scheduling %s after %d instructions rather than %u usecs\n", sim_uname (uptr), sooner, usecs_walltime);
@ -5134,7 +5134,7 @@ else {
fprintf (st, "while processing the list, the end is reached the connection will be\n"); fprintf (st, "while processing the list, the end is reached the connection will be\n");
fprintf (st, "rejected.\n\n"); fprintf (st, "rejected.\n\n");
} }
fprintf (st, "Direct computer to computer connections (Virutal Null Modem cables) may\n"); fprintf (st, "Direct computer to computer connections (Virtual Null Modem cables) may\n");
fprintf (st, "be established using the telnet protocol or via raw tcp sockets.\n\n"); fprintf (st, "be established using the telnet protocol or via raw tcp sockets.\n\n");
fprintf (st, " sim> ATTACH %s Line=n,Connect=host:port{;notelnet}|{;nomessage}\n\n", dptr->name); fprintf (st, " sim> ATTACH %s Line=n,Connect=host:port{;notelnet}|{;nomessage}\n\n", dptr->name);
fprintf (st, "Computer to computer virtual connections can be one way (as illustrated\n"); fprintf (st, "Computer to computer virtual connections can be one way (as illustrated\n");
@ -5636,7 +5636,7 @@ idx = 0; /* initialize the index
while (*cptr != '\0') { /* while characters remain in the command string */ while (*cptr != '\0') { /* while characters remain in the command string */
if (strncasecmp (cptr, "ALL;", 4) == 0) { /* if the parameter is "ALL" */ if (strncasecmp (cptr, "ALL;", 4) == 0) { /* if the parameter is "ALL" */
if ((val != 0) || ((idx > 0) && (idx <= max))) /* then if some lines are restrictied or unspecified */ if ((val != 0) || ((idx > 0) && (idx <= max))) /* then if some lines are restricted or unspecified */
for (line = (uint32)min; line <= (uint32)max; line++)/* then fill them in sequentially */ for (line = (uint32)min; line <= (uint32)max; line++)/* then fill them in sequentially */
if (set [line] == FALSE) /* setting each unspecified line */ if (set [line] == FALSE) /* setting each unspecified line */
list [idx++] = line; /* into the line order */ list [idx++] = line; /* into the line order */
@ -5816,7 +5816,7 @@ t_stat tmxr_show_sync (FILE* st, UNIT* uptr, int32 val, CONST void *desc)
fprintf(st, " network support not available in simulator\n"); fprintf(st, " network support not available in simulator\n");
else else
if (number == 0) if (number == 0)
fprintf(st, " no dddcmp synchronous link devices are available\n"); fprintf(st, " no ddcmp synchronous link devices are available\n");
else { else {
int i; int i;
for (i=0; i<number; i++) { for (i=0; i<number; i++) {
@ -5870,7 +5870,7 @@ static struct {
{TN_NAOCRD, "TN_NAOCRD"}, /* Output Carriage-Return Disposition */ {TN_NAOCRD, "TN_NAOCRD"}, /* Output Carriage-Return Disposition */
{TN_NAOHTS, "TN_NAOHTS"}, /* Output Horizontal Tab Stops */ {TN_NAOHTS, "TN_NAOHTS"}, /* Output Horizontal Tab Stops */
{TN_NAOHTD, "TN_NAOHTD"}, /* Output Horizontal Tab Stop Disposition */ {TN_NAOHTD, "TN_NAOHTD"}, /* Output Horizontal Tab Stop Disposition */
{TN_NAOFFD, "TN_NAOFFD"}, /* Output Forfeed Disposition */ {TN_NAOFFD, "TN_NAOFFD"}, /* Output Formfeed Disposition */
{TN_NAOVTS, "TN_NAOVTS"}, /* Output Vertical Tab Stop */ {TN_NAOVTS, "TN_NAOVTS"}, /* Output Vertical Tab Stop */
{TN_NAOVTD, "TN_NAOVTD"}, /* Output Vertical Tab Stop Disposition */ {TN_NAOVTD, "TN_NAOVTD"}, /* Output Vertical Tab Stop Disposition */
{TN_NAOLFD, "TN_NAOLFD"}, /* Output Linefeed Disposition */ {TN_NAOLFD, "TN_NAOLFD"}, /* Output Linefeed Disposition */

View file

@ -96,7 +96,7 @@ typedef struct SERPORT *SERHANDLE;
#define TMUF_NOASYNCH (1u << TMUF_V_NOASYNCH) /* This flag can be defined */ #define TMUF_NOASYNCH (1u << TMUF_V_NOASYNCH) /* This flag can be defined */
/* statically in a unit's flag field */ /* statically in a unit's flag field */
/* This will disable the unit from */ /* This will disable the unit from */
/* supporting asynchronmous mux behaviors */ /* supporting asynchronous mux behaviors */
/* Receive line speed limits */ /* Receive line speed limits */
#define TMLN_SPD_50_BPS 200000 /* usec per character */ #define TMLN_SPD_50_BPS 200000 /* usec per character */

View file

@ -641,7 +641,7 @@ int i, n;
if (vid_gamepad_inited++) if (vid_gamepad_inited++)
return; return;
/* Chech that the SDL_GameControllerFromInstanceID function is /* Check that the SDL_GameControllerFromInstanceID function is
available at run time. */ available at run time. */
SDL_GetVersion(&ver); SDL_GetVersion(&ver);
vid_gamepad_ok = (ver.major > 2 || vid_gamepad_ok = (ver.major > 2 ||
@ -2778,7 +2778,7 @@ while (SDL_PushEvent (&user_event) < 0)
#else #else
vid_beep_event (); vid_beep_event ();
#endif #endif
SDL_Delay (vid_beep_duration + 100);/* Wait for sound to finnish */ SDL_Delay (vid_beep_duration + 100);/* Wait for sound to finish */
} }
#else /* !(defined(USE_SIM_VIDEO) && defined(HAVE_LIBSDL)) */ #else /* !(defined(USE_SIM_VIDEO) && defined(HAVE_LIBSDL)) */