Some instruction encoding combinations are not documented
in the Cray manuals. These were asserted upon previously.
This causes crashes if those instructions are encountered.
Obviously not ideal for "production" code. The new behavior
replaces these by the exceptions that can be supressed.
The cray simulator would not start after a system wide boost update. Re-building also failed as the code relied on stuff that has been depreciated in boost 1.87. This commit provides a fix.
Fixes:
- Fixed unstable tmux hooks
Additions:
- Automation to install and boot COS
- Automation to create custom disks with specified file
- Automation to load file from custom disk and execute it
- Updated menu and options in interactive mode
```
Usage: ./run_tmux {start|stop|restart|kill|attach|status}
start - Start cray simulator session
stop - Stop cray simulator session
restart - Restart cray simulator session
kill - Kill cray simulator session (unsafe)
attach - Attach to cray simulator session
status - List running cray simulator and consoles
Advanced Usage:
./run_tmux cos_install - Automated COS installation (Do only once)
./run_tmux cos_boot - Automated COS boot (Do only after installation)
./run_tmux cos_shell - Automated log on to COS interactive shell (Do only after boot)
./run_tmux cos_boot_shell - Automated COS boot and log on to interactive shell
Advanced CLI Usage:
./run_tmux cos_exec <binary> - Execute a COS binary (do only after interactive shell logon)
./run_tmux cos_gen_disk <binary> - Create a COS extender disk with specified binary
./run_tmux cos_run_disk <binary> - Same as above and execute it (do only after interactive shell logon)
```
**Alternate Terminal Support for Linux**
The `run` script with `cos_117.cfg` spawns xterms for consoles, but users may prefer other terminals such as konsole, gnome-terminal or even cool-retro-term.
To resolve, this commit adds alternate terminal support via:
+ gen_term_run_cfg - Generates run script and config combo for any alternate terminal.
Benefits:
- Consoles will launch in the user's desired terminal when the generated script is executed.
Usage:
```
gen_term_run_cfg <terminal-name>
```
Full Usage:
```
Generate run script and configuration for cray_sim
to launch consoles in alternate terminals instead of
xterm.
Usage: ./gen_term_run_cfg <terminal-name>
Example - ./gen_term_run_cfg cool-retro-term
```
Tests:
- The script was checked in shellcheck with no issues detected.
- Tested on Ubuntu 22.04.3 LTS (aarch64)
- Tested on Arch Linux (x86_64)
**tmux Support for Linux**
The `run` script with `cos_117.cfg` spawns xterms for consoles, which works well on desktops but not on VPS/servers without X forwarding or for users preferring SSH/shell/mosh.
To resolve, this commit adds tmux support via:
+ run_tmux - Script that manages a cray simulator session.
+ cos_117_tmux.cfg - Modified config that spawns tmux windows instead of xterms.
Benefits:
- Organizes cray simulator and consoles as tmux windows in a tmux session.
- Allows attaching, detaching, and exiting without stopping the simulator.
- Console windows can be scripted to pass input / output for development.
Usage:
```
run_tmux start
run_tmux attach
or execute `run_tmux` and select from menu.
```
Full Usage:
```
Usage: run_tmux {start|stop|restart|kill|attach|status}
start - Start the Cray simulator session
stop - Stop the Cray simulator session
restart - Restart the Cray simulator session
kill - Kill the Cray simulator session (unsafe)
attach - Attach to the Cray simulator session
status - List running Cray simulator and consoles
Use keys 'Ctrl b <0 to ...>' to move to specific windows
Use keys 'Ctrl b n' to move to the next window
Use keys 'Ctrl b p' to move to the previous window
Use keys 'Ctrl b d' to detach from the simulator session.
```
Tests:
- The script was checked in shellcheck with minimal issues detected.
- Tested on Ubuntu 22.04.3 LTS (aarch64)
- Tested on Arch Linux (x86_64)
**Experimental tmux Support for Linux**
The `run` script with `cos_117.cfg` spawns xterms for consoles, which works well on desktops but not on VPS/servers without X forwarding or for users preferring SSH/shell/mosh.
To resolve, this commit adds tmux support via:
+ tmux_run - Script that manages a cray simulator session.
+ cos_117_tmux.cfg - Modified config that spawns tmux windows instead of xterms.
Benefits:
- Organizes cray simulator and consoles as tmux windows in a tmux session.
- Allows attaching, detaching, and exiting without stopping the simulator.
Usage:
```
tmux_run start
tmux_run attach
or execute `tmux_run` and select from menu.
```
Full Usage:
```
Usage: tmux_run {start|stop|restart|kill|attach|status}
start - Start the Cray simulator session
stop - Stop the Cray simulator session
restart - Restart the Cray simulator session
kill - Kill the Cray simulator session (unsafe)
attach - Attach to the Cray simulator session
status - List running Cray simulator and consoles
Use keys 'Ctrl b <0 to ...>' to move to specific windows
Use keys 'Ctrl b n' to move to the next window
Use keys 'Ctrl b p' to move to the previous window
Use keys 'Ctrl b d' to detach from the simulator session.
```
Tests:
All options work as intended, except repeated starts/stops may cause race conditions, requiring the `kill` option.
The script passed shellcheck with no issues detected.
The original static linking works on distributions like Ubuntu that provide static libraries, but it would fail on some distributions like Arch Linux that primarily provide dynamic libraries.
This commit adds dynamic linking support to accommodate these distributions.
Usage:
```
make LINK_TYPE=dynamic build
```
Fixes build error:
```
g++ -std=c++14 -c -ffunction-sections -fdata-sections -g -Wall -Wno-unused-local-typedefs -Wno-reorder -fno-strict-aliasing -Wno-unused-variable -Wno-unused-result -Wno-psabi -Werror -gdwarf-2 -O3 -I. -I../sim_lib -I../httpd -DCRAY_HOST_SYSTEM=linux -D_FILE_OFFSET_BITS=64 cray_channels.cpp -c -g -o ../_obj/linux_release/cray_channels.o
In file included from sim_iop_con.h:22,
from sim_iop.h:24,
from cray_mainframe.h:18,
from cray_channels.cpp:8:
console.h:106:31: error: field ‘mReceiveBuf’ has incomplete type ‘boost::array<char, 1>’
106 | boost::array<char, 1> mReceiveBuf;
| ^~~~~~~~~~~
In file included from /usr/include/boost/lexical_cast/detail/converter_lexical.hpp:52,
from /usr/include/boost/lexical_cast/try_lexical_convert.hpp:32,
from /usr/include/boost/lexical_cast.hpp:33,
from /usr/include/boost/date_time/format_date_parser.hpp:14,
from /usr/include/boost/date_time/date_generator_parser.hpp:20,
from /usr/include/boost/date_time/date_facet.hpp:25,
from /usr/include/boost/date_time/gregorian/gregorian_io.hpp:16,
from /usr/include/boost/date_time/gregorian/gregorian.hpp:31,
from /usr/include/boost/date_time/posix_time/time_formatters.hpp:12,
from /usr/include/boost/date_time/posix_time/posix_time.hpp:24,
from /usr/include/boost/date_time/local_time/local_time.hpp:11,
from /usr/include/boost/date_time.hpp:15,
from logger.h:17,
from cray_logger.h:5,
from cray_channels.h:18,
from cray_channels.cpp:7:
/usr/include/boost/lexical_cast/detail/converter_lexical_streams.hpp:88:11: note: declaration of ‘class boost::array<char, 1>’
88 | class array;
| ^~~~~
make[1]: *** [../engine.mak:217: ../_obj/linux_release/cray_channels.o] Error 1
```
- Updated to boost 1.82
- Fixed TAP driver enumeration change
- Added .bat files to start simulator
- Updated to platform tolset v143
- Removed NuGET boost dependency
- Added gitignore to hide most stuff that we don't want to track
- Removed profile from putty command line
- Changed TAP driver name to what is the default with OpenVPN install
"COS FRONT-END PROTOCOL INTERNAL REFERENCE MANUAL SM-0042", and make it
compatible with the implementation in DtCyber, the CDC Cyber 6000 series
emulator.