Release 2.0.0
This commit is contained in:
parent
9df1c01c50
commit
a529d5c6ec
|
@ -4,7 +4,7 @@ This is a GTK+ 3.0 implementation of an AT&T / Teletype DMD 5620 emulator.
|
|||
|
||||
## Status
|
||||
|
||||
Version: 1.4.1
|
||||
Version: 2.0.0
|
||||
|
||||
This is an actively developed project.
|
||||
|
||||
|
@ -42,8 +42,6 @@ AT&T DMD 5620 Terminal emulator.
|
|||
|
||||
-h, --help display help and exit
|
||||
-v, --version display version and exit
|
||||
-V, --verbose display verbose output
|
||||
-D, --delete backspace sends ^? (DEL) instead of ^H
|
||||
-t, --trace FILE trace to FILE
|
||||
-d, --device DEV serial port name
|
||||
-s, --shell SHELL execute SHELL instead of default user shell
|
||||
|
|
37
dmd5620.man
37
dmd5620.man
|
@ -5,11 +5,9 @@ dmd5620 \- AT&T DMD 5620 Terminal Emulator
|
|||
.B dmd5620
|
||||
[\fB\--help\fR]
|
||||
[\fB\--version\fR]
|
||||
[\fB\--verbose\fR]
|
||||
[\fB\--delete\fR]
|
||||
[\fB\--shell\fR \fISHELL\fR|\fB\--device\fR \fIDEVICE\fR]
|
||||
[\fB\--nvram\fR \fIFILE\fR]
|
||||
[\fB\--trace\fR \fIFILE\fR]
|
||||
[\fB\--firmware\fR \fI"VERSION"\fR]
|
||||
.SH DESCRIPTION
|
||||
.B dmd5620
|
||||
AT&T DMD 5620 Terminal emulator with support for XT layers protocol.
|
||||
|
@ -21,16 +19,8 @@ Displays help and exits.
|
|||
.BR \-v ", " \-\-version
|
||||
Displays version and exits.
|
||||
.TP
|
||||
.BR \-V ", " \-\-verbose
|
||||
Print verbose logging to stdout.
|
||||
.TP
|
||||
.BR \-D ", " \-\-delete
|
||||
Send a delete character ^? (0x7F hex) when the backspace key is pressed. By
|
||||
default, ^H (0x08 hex) is sent.
|
||||
.TP
|
||||
.BR \-s ", " \-\-shell " " \fISHELL\fR
|
||||
Execute the program \fISHELL\fR, e.g. \"/bin/sh\". (Either
|
||||
\fB\-\-shell\fR or \fB\-\-device\fR is required)
|
||||
Execute the program \fISHELL\fR, e.g. "/bin/sh".
|
||||
.TP
|
||||
.BR \-d ", " \-\-device " " \fIDEVICE\fR
|
||||
Connect to physical device \fIDEVICE\fR, e.g. "/dev/ttyS0" or
|
||||
|
@ -39,8 +29,10 @@ Connect to physical device \fIDEVICE\fR, e.g. "/dev/ttyS0" or
|
|||
.BR \-n ", " \-\-nvram " " \fIFILE\fR
|
||||
Store NVRAM state in file \fIFILE\fR. No default.
|
||||
.TP
|
||||
.BR \-t ", " \-\-trace " " \fIFILE\fR
|
||||
Allow logging verbose system execution trace to \fIFILE\fR.
|
||||
.BR \-f ", " \-\-firmware " " \fI"VERSION"\fR
|
||||
Select firmare version. \fI"VERSION"\fR is a string, and must
|
||||
be one of either \fB"8;7;3"\fR or \fB"8;7;5"\fR. The default version
|
||||
if not specified is \fB"8;7;5"\fR.
|
||||
.SH KEYMAP
|
||||
.TP
|
||||
.BR F1\-F8
|
||||
|
@ -52,9 +44,6 @@ Terminal SETUP key
|
|||
.BR SHIFT\+F9
|
||||
Terminal RESET key
|
||||
.TP
|
||||
.BR F10
|
||||
Enable or disable execution tracing, if the \fB\-\-trace\fR option has
|
||||
been used.
|
||||
.SH CONNECTING TO VIRTUAL SERIAL PORTS
|
||||
The \fB\-\-device\fR option can be used with \fBsocat\fR to set up a
|
||||
virtual serial port to a SIMH instance. For example:
|
||||
|
@ -67,11 +56,6 @@ This command on Linux will open a virtual serial port connected to
|
|||
\fB192.168.80.100\fR on port \fB8888\fR. The port device will be
|
||||
something like \fB/dev/pts/1\fR, and the \fB\-\-device\fR flag can
|
||||
then be used to connect to this virtual serial port.
|
||||
.SH TERMINAL EXECUTION TRACING
|
||||
The \fB\-\-trace\fR option allows verbose tracing of WE32100 CPU
|
||||
instructions to the specified file. Tracing is turned on or off by
|
||||
pressing the \fBF10\fR key. \fITracing execution is extremely expensive
|
||||
and should be used with care, it will degrade performance!\fR
|
||||
.SH USING SVR3 LAYERS
|
||||
One of the primary featuers of dmd5620 is support for the System V Release 3
|
||||
\fIlayers\fR program. Real DMD5620 terminals were hard-wired directly
|
||||
|
@ -87,6 +71,15 @@ Options", either with the mouse or by pressing F2. Next, select toggle
|
|||
.PP
|
||||
"Encoding" will ensure that telnet and SSH control characters are properly
|
||||
escaped.
|
||||
.SH SAVING NVRAM
|
||||
All terminal settings are forgotten on shutdown. To save terminal
|
||||
settings, the contents of NVRAM must be stored in a file using
|
||||
the \fB\-\-nvram\fR flag.
|
||||
.PP
|
||||
\fINote that the NVRAM format is different between firmware versions!\fR
|
||||
Using the same NVRAM file on an \fB8;7;5\fR firmware terminal
|
||||
and an \fB8;7;3\fR firwmare terminal is NOT SUPPORTED and will result
|
||||
in undesirable behavior!
|
||||
.SH KNOWN ISSUES
|
||||
.IP \(bu 3
|
||||
System V Release 3 \fIlayers\fR does not work when using Telnet to connect to a
|
||||
|
|
2
dmd_core
2
dmd_core
|
@ -1 +1 @@
|
|||
Subproject commit 24acb4415d7c719aaa9280cbb15c184cd6268699
|
||||
Subproject commit 03d0d36061e1dad2f3b0e3d1d670c817f0cf056f
|
|
@ -73,8 +73,6 @@ gint64 previous_clock = -1;
|
|||
uint8_t previous_vram[VIDRAM_SIZE];
|
||||
struct pollfd fds[2];
|
||||
pid_t shell_pid;
|
||||
int erase_is_delete = FALSE;
|
||||
int verbose = FALSE;
|
||||
volatile int window_beep = FALSE;
|
||||
volatile int dmd_thread_run = TRUE;
|
||||
int sigint_count = 0;
|
||||
|
@ -389,18 +387,12 @@ pty_io_poll()
|
|||
|
||||
for (i = 0; i < b_read; i++) {
|
||||
dmd_rs232_rx(tx_buf[i] & 0xff);
|
||||
if (verbose) {
|
||||
printf("<--- PTY rx_char[%02d]: %02x %c\n", i, tx_buf[i] & 0xff, PCHAR(tx_buf[i]));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
i = 0;
|
||||
while (dmd_rs232_tx(&txc) == 0) {
|
||||
if (verbose) {
|
||||
printf("---> PTY tx_char[%02d]: %02x %c\n", i++, txc & 0xff, PCHAR(txc));
|
||||
}
|
||||
if (write(pty_master, &txc, 1) < 0) {
|
||||
fprintf(stderr, "Error %d from write: %s\n", errno, strerror(errno));
|
||||
}
|
||||
|
@ -467,18 +459,12 @@ tty_io_poll()
|
|||
|
||||
for (i = 0; i < b_read; i++) {
|
||||
dmd_rs232_rx(tx_buf[i] & 0xff);
|
||||
if (verbose) {
|
||||
printf("<--- TTY rx_char[%02d]: %02x %c\n", i, tx_buf[i] & 0xff, PCHAR(tx_buf[i]));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
i = 0;
|
||||
while (dmd_rs232_tx(&txc) == 0) {
|
||||
if (verbose) {
|
||||
printf("---> TTY tx_char[%02d]: %02x %c\n", i++, txc & 0xff, PCHAR(txc));
|
||||
}
|
||||
if (write(tty_fd, &txc, 1) < 0) {
|
||||
fprintf(stderr, "error %d during write: %s\n", errno, strerror(errno));
|
||||
}
|
||||
|
@ -701,6 +687,8 @@ gtk_setup(int *argc, char ***argv)
|
|||
|
||||
gtk_widget_set_size_request(drawing_area, 800, 1024);
|
||||
|
||||
gtk_window_set_resizable(GTK_WINDOW(main_window), FALSE);
|
||||
|
||||
gtk_container_add(GTK_CONTAINER(main_window), drawing_area);
|
||||
|
||||
/* Set up the animation handler, which will step the simulation
|
||||
|
@ -736,7 +724,6 @@ gtk_setup(int *argc, char ***argv)
|
|||
struct option long_options[] = {
|
||||
{"help", no_argument, 0, 'h'},
|
||||
{"version", no_argument, 0, 'v'},
|
||||
{"verbose", no_argument, 0, 'V'},
|
||||
{"delete", no_argument, 0, 'D'},
|
||||
{"firmware", required_argument, 0, 'f'},
|
||||
{"shell", required_argument, 0, 's'},
|
||||
|
@ -752,21 +739,23 @@ void usage()
|
|||
printf("-h, --help display help and exit\n");
|
||||
printf("-v, --version display version and exit\n");
|
||||
printf("-f, --firmware VER Firmware version 1 or 2\n");
|
||||
printf("-V, --verbose display verbose output\n");
|
||||
printf("-D, --delete backspace sends ^? (DEL) instead of ^H\n");
|
||||
printf("-d, --device DEV serial port name\n");
|
||||
printf("-s, --shell SHELL execute SHELL instead of default user shell\n");
|
||||
printf("-n, --nvram FILE store nvram state in FILE\n");
|
||||
}
|
||||
|
||||
const char *FIRMWARE_873 = "8;7;3";
|
||||
const char *FIRMWARE_875 = "8;7;5";
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
int c, errflg = 0;
|
||||
char *shell = NULL;
|
||||
char *device = NULL;
|
||||
char *firmware = NULL;
|
||||
int size;
|
||||
int firmware_version = DEFAULT_FIRMWARE_VERSION;
|
||||
uint8_t nvram_buf[NVRAM_SIZE];
|
||||
FILE *fp;
|
||||
struct stat sb;
|
||||
|
@ -790,15 +779,9 @@ main(int argc, char *argv[])
|
|||
case 'h':
|
||||
usage();
|
||||
exit(0);
|
||||
case 'D':
|
||||
erase_is_delete = TRUE;
|
||||
break;
|
||||
case 'v':
|
||||
printf("Version: %s\n", VERSION_STRING);
|
||||
exit(0);
|
||||
case 'V':
|
||||
verbose = TRUE;
|
||||
break;
|
||||
case 'n':
|
||||
nvram = optarg;
|
||||
break;
|
||||
|
@ -809,7 +792,7 @@ main(int argc, char *argv[])
|
|||
device = optarg;
|
||||
break;
|
||||
case 'f':
|
||||
firmware_version = atoi(optarg);
|
||||
firmware = optarg;
|
||||
break;
|
||||
case '?':
|
||||
fprintf(stderr, "Unrecognized option: -%c\n", optopt);
|
||||
|
@ -852,14 +835,17 @@ main(int argc, char *argv[])
|
|||
tty_init(tty_fd);
|
||||
}
|
||||
|
||||
if (firmware_version != 1 && firmware_version != 2) {
|
||||
fprintf(stderr, "--firmware must be one of either '1' or '2'\n");
|
||||
/* Initialize the CPU */
|
||||
if (firmware == NULL || strncmp(FIRMWARE_875, firmware, 5) == 0) {
|
||||
dmd_init(2);
|
||||
} else if (strncmp(FIRMWARE_873, firmware, 5) == 0) {
|
||||
dmd_init(1);
|
||||
} else {
|
||||
fprintf(stderr, "--firmware must be one of either \"%s\" or \"%s\".\n",
|
||||
FIRMWARE_873, FIRMWARE_875);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Initialize the CPU */
|
||||
dmd_init(firmware_version);
|
||||
|
||||
/* Load NVRAM, if any */
|
||||
if (nvram != NULL) {
|
||||
fp = fopen(nvram, "r");
|
||||
|
|
|
@ -27,8 +27,8 @@
|
|||
#ifndef __VERSION_H__
|
||||
#define __VERSION_H__
|
||||
|
||||
#define VERSION_MAJOR 1
|
||||
#define VERSION_MINOR 4
|
||||
#define VERSION_MAJOR 2
|
||||
#define VERSION_MINOR 0
|
||||
#define VERSION_BUILD 0
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue