AT&T / Teletype DMD 5620 Terminal Emulator core library
Go to file
Seth Morabito 00c0cb77b1 Clean up clippy suggestions 2023-09-02 10:20:21 -07:00
doc More complete execution trace support 2021-04-23 13:43:50 -07:00
src Clean up clippy suggestions 2023-09-02 10:20:21 -07:00
.gitignore Start of DMD machine-level 2018-11-18 21:13:09 -08:00
.travis.yml Added .travis.yml 2018-12-09 18:48:34 -08:00
Cargo.toml Remove dependency on ringbuffer 2022-11-20 10:26:24 -08:00
LICENSE.txt Separate README/LICENSE 2018-11-17 10:45:38 -08:00
README.md Update README and Cargo.toml for 0.7.1 2022-09-11 16:56:16 -07:00
rustfmt.toml Introduce janky trace log debugging 2021-04-23 05:50:15 -07:00

README.md

AT&T DMD5620 Core

Build Status

Core logic for an AT&T / Teletype DMD 5620 terminal emulator

Description

The AT&T / Teletype DMD 5620 terminal was a portrait display, programmable, windowing terminal produced in the early 1980s. It came out of research pioneered by Rob Pike and Bart Locanthi Jr., of AT&T Bell Labs.

DMD 5620 Terminal

This project implements the core logic needed to emulate a DMD 5620 terminal, including:

  • ROM
  • RAM
  • WE32100 CPU
  • I/O

Note that there is no user interface: This is a back-end library only. It may be used as a component to build a fully-fledged emulator, however.

Changelog

0.7.1: This change fixes a critical bug in how the TX register status bits are set.

0.7.0: The simulated DMD 5620 can now run either 8;7;5 or 8;7;3 firmware.

0.6.4: Tracing now shows correctly decoded instructions, plus raw bytes decoded from instruction stream. DUART delay calculation is improved. Effective address is now stored off onto operands. MOVTRW support (non-MMU) added.

0.6.3: Bug fixes: Video Ram starting address was not being updated correctly for video ram read; Implement read_word for DUART (needed to run gebaca)

0.6.2: Fix UART character delay timing.

0.6.1: Fix failing tets.

0.6.0: Breaking change. Refactor DMD a bit to rename the function read to read_word, and added a read_byte function as well. Also refactored the CPU mnemonic lookup to be more efficient using a lookup table instead of a HashMap. Lastly, fixed a bug in the DUART that set the wrong delay for one baud rate.

0.5.0: Non-breaking but major change. dmd_core now presents a C compatible API to make interacting with C and C++ code easier, without needed to write a full stub library.

0.4.0: Breaking change. TX to the keyboard from the terminal is now supported, so that clients can use it to detect when a bell (^G) request has been sent.

0.3.1: Added exception handling for memory errors, and a run function to free-run the CPU for a given number of steps.

0.3.0: Breaking change. Charater RX from RS-232 and keyboard are now handled by internal queues, and no longer return DuartError on failure.

0.2.1: Initial release.

Emulator Reference Implementations

Two implementations of DMD 5620 emulator use this core library.

A Windows native application is in the works.