Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

AT&T DMD5620 Core

Build Status

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


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.


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.