Skip to content

sethm/tek4404

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

66 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

About

The Tektronix 4404, code-named "Pegasus", was a mid-1980s AI workstation. Based around the Motorola 68010 CPU, it ran Smalltalk-80, supported up to 2 MB of RAM, and had a 45MB hard drive.

Status

This is a work in progress and completely unusable. The project is very young, in active development, and is skeletal.

As you can see, it does not yet work:

Tektronix 4404 Main Window

Requirements

The 4404 emulator uses SDL2, so you'll need SDL2 development libraries to build it.

Source Code Rust Docs

Rust Docs can be generated with the command

$ cargo doc --open

They are hosted here as well, but these may be out of date, as they are updated manually.

Usage

Tests

The emulator is written in Rust, and requires Rust 1.31 or later to compile. I have tried to avoid using Rust nightly features.

At the moment, the most interesting things are the unit tests, which can be run with:

$ cargo test

General Usage

Tektronix 4404 Emulator

USAGE:
    tek4404 [OPTIONS] --bootrom <bootrom>

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -a, --address <address>    Address to bind to [default: 0.0.0.0]
    -b, --bootrom <bootrom>    The path to the 32KB boot ROM image
    -i, --idle <idle>          Idle time between CPU loops (in ms) [default: 20]
    -l, --loglvl <loglvl>      Log level [io|trace|debug|info|error|none] [default: info]
    -p, --port <port>          Port to bind to [default: 9090]
    -s, --steps <steps>        CPU execution steps per loop [default: 10000]

To execute the boot ROM using cargo, type:

$ cargo run -- -b ./rom/boot.bin -s 20000 -i 5 -l info

or, from a built binary:

$ tek4404 -b ./rom/boot.bin -s 20000 -i 5 -l info

This enters an infinite CPU execution loop that does 20,000 machine cycles on each pass through the loop, with 25ms of idle time between executions. To kill the emulator, just use ^C (Control-C) or close the main display window.

At the moment, the only peripheral that is emulated is the debug ACIA. You can connect to the debug ACIA and issue interactive commands by telnetting to localhost, port 9090. You can change the default listening address and port with the --address and --port options.

Credits

The Tektronix 4404 emulator uses the Musashi Motorola 68000 core. Musashi is Copyright 1998-2002 by Karl Stenerud, and is distributed under the MIT License.

License

Copyright 2020 Seth Morabito <web@loomcom.com>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Releases

No releases published

Packages

No packages published