Code Monkey home page Code Monkey logo

pdp-11's Introduction

PDP-11 Emulator

Usage

Emulator

  1. make
  2. ./pdp.bin *name of program to execute*.

Ex: ./pdp.bin programs/logo

Alternatively, for build one can use CMake with CMakeLists.txt present.

Bytecode generator

  1. cd assembler
  2. make
  3. ./asm *path to assembler code* *filename*.

Ex: ./asm ../programs/white_screen.s white_screen

GUI

Graphical Interface contains:

  • The values of the general purpose registers, as well as Processor Status Word flags (N, Z, V, C).
  • Number of CPU ticks from the start of the program execution, with and without pipeline optimisation.
  • Disassembly and byte code, showing the instructions executed so far.
  • The "Step" mode, allowing to execute instructions one by one.
  • Two modes for a program execution: the "Start" mode for the slow and the "Execute" mode for the quick execution.

Overall emulator architecture

  • emulator class is designed for the pipeline cycle execution (in our case, one cycle consists of fetch, decode, load operands, execute). Moreover, it's used for the communication with the GUI, providing the information about memory, registers and the progress of the program execution.
  • instructions contains the global instruction table and instruction callbacks.
  • memory contains registers and the continuous space of RAM, video memory and ROM (in this exact order). The sizes of these parts of memory can be modyfied in emulator/params.hpp.
  • pipeline counts the CPU ticks it could spend executing the instructions in two ways:
    • one by one
    • parallelizing with the pipeline.

The number of ticks one pipeline stage occupies can be modyfied in emulator/params.hpp.

Authors

  • GUI - @detininroman
  • Execution cycle, memory, simple pipeline - @pekashy
  • Commands, bytecode generator, example programs - @terana
  • Overall architecture - @FflushLife

pdp-11's People

Contributors

detininroman avatar terana avatar mikkksa avatar pekashy avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.