pa28 / PiDP-8-sim-cpp

A PDP-8 simulator for the Raspberry Pi aimed at running efficiently on the A+ model and working with the PiDP8 kit, implemented in C++17.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

PiDP-8 Simulator in C++17 Build Status codecov

Definitely not ready for prime-time, this project is under heavy development and may change or stop working without notice. Not much is working at the moment anyway, but you are welcome to poke around and try things out if you are brave and have lots of time.

After a four year hiatus I am starting work on this again. I'm no longer sure what my original goals are, but I recently got my PiDP 8I running again on a Modle A Plus. I'm looking for a system that lets me re-live my youth working with a simple PDP 8e teleprinter and paper tape. The simd software available is great, but overkill for me.

Prerequisites.

Antlr4 and Antlr4 C++ Runtime for C++17 Google Test

Most of the prerequisites are included as submodules of this repository, but you will need pthreads installed for Google Test and the multi-threaded parts of the program.

Since the git repository contains the source code for the parser, you don't need to build it. But if you want to experiment with the assembler syntax you will need the antlr 4.7 complete JAR to compile Asm.g4 into the parser source files. Get if from here:

curl -O https://www.antlr.org/download/antlr-4.7-complete.jar

and move it to a standard location. I used /usr/local/lib but you can use a different location and update the CMakeLists.txt file.

Building on a Raspberry Pi

You will need a modern build environment. First you will need a C++ compiler conformant with C++17. I recommend gcc-8.1.0. Follow the instructions found at Raspberry Pi - Install GCC 8 and compile C++17 programs

Then you will need an up-to-date version of cmake. I suggest you follow the instructions at Installing CMake and get version 3.12.0

Continuous Integration

I'm not a fan of continuous integration (CI) per-se. But there is one feature of CI that I believe is essential for any project that may be used by more than one person; that is building from scratch -- and testing -- on a previously unconfigured system. This helps prevent problems that arise when the prerequisites are not fully documented. For this project I am using Travis CI. Travis CI integrates nicely with GitHub.

Code Coverage

I am using a test driven design methodology on this project. This methodology suffers without a clear understanding of the code coverage those tests are achieving. For code coverage analysis I am using Codecov.io which also integrates nicely with GitHub and Travis CI.

Change Log

See the change log.

Resources

About

A PDP-8 simulator for the Raspberry Pi aimed at running efficiently on the A+ model and working with the PiDP8 kit, implemented in C++17.

License:GNU General Public License v3.0


Languages

Language:C++ 95.9%Language:CMake 2.8%Language:ANTLR 0.8%Language:Shell 0.3%Language:C 0.3%