/erc

A small program for the emulation of retro computers

Primary LanguageGoMIT LicenseMIT

erc

The erc (emulator of retro computers) system is designed to emulate an Apple IIe (enhanced) computer and run software for it. It is written to be flexible enough to handle multiple machine architectures, and may be extended to do just that in the future.

It's a rewrite of an older project (https://github.com/pevans/erc-c), by the same name, that was written in C code. This project is instead written in Go, which has much better tooling for code formatting and testing--something that I felt was lacking in the previous iteration. I also just really like Go! I regret nothing.

The soul of the work here, which is emulation of the Apple II, has been a hobby of mine going back more than a decade. I am enormously grateful to Rodney Zaks for his book Programming the 6502, Jim Sather for his work Understanding the Apple II, Apple--beyond building the machine, they published a wealth of technical reference material for it--and, of course, Steve Wozniak, without whom the Apple II and Apple-as-we-know-it would not exist.

What's in here?

  • The main command (erc) is located in the cmd/erc subdirectory.
  • Code for the MOS 65c02 processor is in pkg/mos65c02.
  • Code for the Apple II architecture is in pkg/a2.
  • There's random other code for things generally within the pkg dir.

What can I do here?

You can:

  • Build the executable erc by running make build.
  • Run the thing immediately by running make run DSK=somerom.
  • Install tools for linting and testing with make tools. (Note: the tool installation currently makes an obnoxious assumption that you have access to brew, and thereby that you use macOS.)
  • Run various tests, including:
    • make lint for linting
    • make test for unit tests
    • make coverage to see test coverage