SIMH: Fix spelling errors in comments and strings
This commit is contained in:
parent
e7b2431f11
commit
0f6bcb9682
34 changed files with 1893 additions and 1893 deletions
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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:
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
6
helpx
|
@ -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 **** */
|
||||||
|
|
||||||
|
|
6
makefile
6
makefile
|
@ -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
86
scp.c
|
@ -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
2
scp.h
|
@ -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);
|
||||||
|
|
||||||
|
|
10
scp_help.h
10
scp_help.h
|
@ -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
|
||||||
|
|
22
sim_card.c
22
sim_card.c
|
@ -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];
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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 */
|
||||||
|
|
10
sim_disk.c
10
sim_disk.c
|
@ -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 */
|
||||||
|
|
|
@ -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_
|
||||||
|
|
28
sim_ether.c
28
sim_ether.c
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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*/
|
||||||
|
|
|
@ -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.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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.
|
||||||
*
|
*
|
||||||
|
|
|
@ -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
|
||||||
*
|
*
|
||||||
|
|
26
sim_rev.h
26
sim_rev.h
|
@ -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
|
||||||
|
|
10
sim_scsi.c
10
sim_scsi.c
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
|
@ -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
|
||||||
|
|
24
sim_tape.c
24
sim_tape.c
|
@ -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) {
|
||||||
|
|
16
sim_timer.c
16
sim_timer.c
|
@ -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().
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
30
sim_tmxr.c
30
sim_tmxr.c
|
@ -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 */
|
||||||
|
|
|
@ -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 */
|
||||||
|
|
|
@ -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)) */
|
||||||
|
|
Loading…
Add table
Reference in a new issue