2018-11-17 18:42:18 +00:00
|
|
|
# AT&T DMD5620 Core
|
|
|
|
|
2018-12-10 02:45:58 +00:00
|
|
|
[![Build Status](https://travis-ci.org/sethm/dmd_core.svg?branch=master)](https://travis-ci.org/sethm/dmd_core)
|
|
|
|
|
2018-11-17 18:42:18 +00:00
|
|
|
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.
|
|
|
|
|
2021-09-02 01:37:57 +00:00
|
|
|
![DMD 5620 Terminal](https://loomcom.com/images/pages/dmd_5620.jpg)
|
2018-11-17 18:42:18 +00:00
|
|
|
|
|
|
|
This project implements the core logic needed to emulate a DMD 5620
|
|
|
|
terminal, including:
|
|
|
|
|
|
|
|
- ROM
|
|
|
|
- RAM
|
|
|
|
- WE32100 CPU
|
|
|
|
- I/O
|
|
|
|
|
2018-12-10 01:57:42 +00:00
|
|
|
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.
|
|
|
|
|
2018-12-19 16:01:25 +00:00
|
|
|
## Changelog
|
|
|
|
|
2022-09-11 23:56:16 +00:00
|
|
|
0.7.1: This change fixes a critical bug in how the TX register status
|
|
|
|
bits are set.
|
|
|
|
|
2022-09-10 18:50:38 +00:00
|
|
|
0.7.0: The simulated DMD 5620 can now run either 8;7;5 or 8;7;3
|
|
|
|
firmware.
|
|
|
|
|
2022-09-03 23:48:45 +00:00
|
|
|
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.
|
|
|
|
|
2018-12-31 00:49:33 +00:00
|
|
|
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`)
|
|
|
|
|
2018-12-30 01:45:07 +00:00
|
|
|
0.6.2: Fix UART character delay timing.
|
|
|
|
|
2018-12-29 19:19:48 +00:00
|
|
|
0.6.1: Fix failing tets.
|
|
|
|
|
2018-12-29 19:09:13 +00:00
|
|
|
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.
|
|
|
|
|
2018-12-22 01:00:43 +00:00
|
|
|
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.
|
|
|
|
|
2018-12-20 05:47:25 +00:00
|
|
|
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.
|
|
|
|
|
2018-12-19 16:01:25 +00:00
|
|
|
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.
|
|
|
|
|
2018-12-29 19:09:13 +00:00
|
|
|
## Emulator Reference Implementations
|
|
|
|
|
|
|
|
Two implementations of DMD 5620 emulator use this core library.
|
|
|
|
|
|
|
|
* The Linux native GTK application `dmd5620`: [https://github.com/sethm/dmd_gtk](https://github.com/sethm/dmd_gtk)
|
|
|
|
|
|
|
|
* The Macintosh native Cocoa application `DMD 5620`: [https://github.com/sethm/dmd_mac](https://github.com/sethm/dmd_mac)
|
2018-12-10 01:57:42 +00:00
|
|
|
|
2018-12-29 19:09:13 +00:00
|
|
|
A Windows native application is in the works.
|