Skip to main content

Python bindings for the Pepp assembler and simulator

Project description

Pepp

CI Status GitHub file size in bytes Discord Invite Lines of Code

Table of Contents

  1. Building for Source
  2. Previous Works
  3. Pep/9 and /10 Virtual Machines
  4. Project Features
  5. Contributing
  6. Making Modifications

Build from Sources

When cloning this project, use --recurse-submodules to install relevant source code dependencies.

Required Build Tools Reason
Qt 6.10 or later Required for cross-platform GUIs. Under "Additional libraries", install Qt WebEngine and Qt WebView
CMake 3.24 or later Required build system; usually bundled with Qt
git lfs Required for binary assets, such as images an icons
Python 3.12+ Required for python bindings and compile-time changelog. Must be on your path.

While not required, the following tools enable additional features in built applications:

Optional Build Tools Reason
Qt Creator 14 or later Preferred IDE for this project
QT IFW 4.7 or later Creates Windows installers

It is recommended to build the application from within Qt Creator.

Additional Windows Build Steps

On Windows, the default build process does not set QML plugin search paths correctly. In most cases, this prevents the application from being run in Qt Creator or from the command line.

This is fixed with a custom build step. This build step must be added to each build configuration (e.g., build, release).

Line Value Description
Command <QT_ROOT>/bin/windeployqt6.exe On my PC, <QT_ROOT> is C:/Qt/6.9.1/msvc2022_64
Arguments %{buildDir}\output\pepp.exe --qmldir %{sourceDir} --qmldir is required for discovery of our dependencies
Working Directory (blank) This value does not matter and is unused

Relation to Pep9Suite

This project is a continuation of the Pep/9 computer's associated software suite, Pep9Suite.

When complete, this project will contain assembler and microcode simulators for Pep/8, Pep/9, and Pep/10, and we will deprecate older repos.

The goal for this new project is to reduce cross-generation maintenance, improve reliability, and reduce turn-around time for new features.

What are Pep/10 and Pep/9

Pep/10

The Pep/10 computer is a 16-bit complex instruction set computer (CISC). It is designed to teach computer architecture, assembly language programming, and computer organization principles as described in a future book. Pep/10 instructions are based on an expanding opcode and are either unary (one byte) or nonunary (three bytes). The eight addressing modes and six dot commands are designed for straightforward translation from C to assembly language.

It includes macros facilities to ease translation from C to assembly language.

Pep/9

The Pep/9 computer is a 16-bit complex instruction set computer (CISC). It is designed to teach computer architecture, assembly language programming, and computer organization principles as described in the text Computer Systems, J. Stanley Warford, 5th edition. Pep/9 instructions are based on an expanding opcode and are either unary (one byte) or nonunary (three bytes). The eight addressing modes and eight dot commands are designed for straightforward translation from C to assembly language.

What is Pepp?

The Pep project consists of many iterations of a 16-bit complex instruction set computer . Within this repository, the Pep/10 version (and soon the Pep/8 and Pep/9 versions) are represented across multiple levels of abstraction.

The project now consists of a single download for all virtual machines at all levels of abstraction. The terminal version was previously a stand-alone executable and is now part of the main download.

Assembler

Our Pepp IDE features an integrated text editor, error messages in red type that are inserted within the source code at the place where the error is detected, student-friendly machine language object code in hexadecimal format, the ability to code directly in machine language, bypassing the assembler.

The Pep/9 computer features the ability to redefine the mnemonics for the unimplemented opcodes that trigger synchronous traps.

The Pep/10 computer features the ability to define custom macros.

ISA

The simulator features simulated ROM that is not altered by store instructions, a small operating system burned into simulated ROM that includes a loader and a trap handler system, an integrated debugger that allows for break points, single and multi step execution, CPU tracing, and memory tracing, the option to trace an application, the loader, or the operating system, the ability to recover from endless loops, and the ability to modify the operating system by designing new trap handlers for the unimplemented opcodes.

Microcode

The CPU mode is a simulator allowing users to interact with the data sections of the Pep/9 and Pep/10 CPUs.

It contains two versions of the Pep/9 CPU data section – one with a one-byte wide data bus and another with a two-byte wide data bus. Using a GUI, students are able to set the control signals to direct the flow of data and change the state of the CPU. Alternatively, the Microcode IDE allows students to write microprogram code fragments to perform useful computations. An integrated unit test facility allows users to write pre- and post-conditions to verify correct behavior of arbitrary microprograms.

While debugging a microprogram fragment, the CPU simulator performs graphical tracing of data paths through the CPU. Using breakpoints, students may skip over previously debugged microstatments and resume debugging at a later point in the program.

ISA / Microcode Interface

Contained within IDE is a fully microcoded implementation of the Pep/9 and Pep/10 virtual machines. These extensions to their respective textbooks is dubbed PepMicro PepMicro adds a control section, missing in Pep9CPU, and extends the microcode language to allow conditional microcode branches. It integrates all the programming features of Pep/9 and the graphical CPU interaction of Pep9CPU to simulate the complete execution of assembly language programs.

  • Extend the assembler and CPU simulator so that complete assembly language programs can be executed at the microcode level spanning four levels of system abstraction – the assembly level, the operating system level, the ISA level, and the microcode level.
  • Runs both memory aligned and nonaligned programs. Assembly language programs that do not use optimal .ALIGN directives still execute correctly but slower.
  • Provides performance statistics in the form of statement execution counts at the microcode level and the ISA level. Students can measure the performance differences between aligned and nonaligned programs.
  • Retains the unit tests of the original Pep/9 CPU IDE so that students can write microcode fragments with the extended microinstruction format.
  • Supports new debugging features like step-into, step-out, and step-over so students can trace assembly programs more efficiently.

Terminal Support

The IDE includes a command-line version of the Pep/9 and Pep/10 virtual machine.s It uses the assembler from the PepIDE application to create a .pepo file, and the simulator to execute the .pepo file.

Teachers can script PepTerm to batch test assembly language homework submissions.

Contributing

Please see our Contribution Guidelines before contributing to this project.

Debugging WASM

Install the following plugin into chrome. See Qt help for aditional settings

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pypepp-0.15.1.tar.gz (5.0 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pypepp-0.15.1-cp312-abi3-win_arm64.whl (45.4 kB view details)

Uploaded CPython 3.12+Windows ARM64

pypepp-0.15.1-cp312-abi3-win_amd64.whl (49.2 kB view details)

Uploaded CPython 3.12+Windows x86-64

pypepp-0.15.1-cp312-abi3-musllinux_1_2_x86_64.whl (150.3 kB view details)

Uploaded CPython 3.12+musllinux: musl 1.2+ x86-64

pypepp-0.15.1-cp312-abi3-musllinux_1_2_aarch64.whl (145.9 kB view details)

Uploaded CPython 3.12+musllinux: musl 1.2+ ARM64

pypepp-0.15.1-cp312-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (52.1 kB view details)

Uploaded CPython 3.12+manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

pypepp-0.15.1-cp312-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (49.2 kB view details)

Uploaded CPython 3.12+manylinux: glibc 2.24+ ARM64manylinux: glibc 2.28+ ARM64

pypepp-0.15.1-cp312-abi3-macosx_11_0_arm64.whl (43.9 kB view details)

Uploaded CPython 3.12+macOS 11.0+ ARM64

pypepp-0.15.1-cp312-abi3-macosx_10_13_x86_64.whl (46.3 kB view details)

Uploaded CPython 3.12+macOS 10.13+ x86-64

File details

Details for the file pypepp-0.15.1.tar.gz.

File metadata

  • Download URL: pypepp-0.15.1.tar.gz
  • Upload date:
  • Size: 5.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pypepp-0.15.1.tar.gz
Algorithm Hash digest
SHA256 6558b69f2d0a03ed0df5129fef36c6b73616f9fc5d96bd4648340edd7b71d827
MD5 34ef416297463c0c453c4f84ad0fcf17
BLAKE2b-256 31c0a4a025a646b11c12916316feca7b80171890e1785170e632f2c243b24534

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypepp-0.15.1.tar.gz:

Publisher: ci.yml on Matthew-McRaven/Pepp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pypepp-0.15.1-cp312-abi3-win_arm64.whl.

File metadata

  • Download URL: pypepp-0.15.1-cp312-abi3-win_arm64.whl
  • Upload date:
  • Size: 45.4 kB
  • Tags: CPython 3.12+, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pypepp-0.15.1-cp312-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 19c4f31b2a936e3a700d514b1b1a5f3091222dcb2941038342ba4046195489d6
MD5 84a5ddaa653818fbc6de7f2caa4e6f5b
BLAKE2b-256 6915cce1a098d1dcd24f3db6cd16f64da2d9f02f0ff58e301ae843f1871fce67

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypepp-0.15.1-cp312-abi3-win_arm64.whl:

Publisher: ci.yml on Matthew-McRaven/Pepp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pypepp-0.15.1-cp312-abi3-win_amd64.whl.

File metadata

  • Download URL: pypepp-0.15.1-cp312-abi3-win_amd64.whl
  • Upload date:
  • Size: 49.2 kB
  • Tags: CPython 3.12+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pypepp-0.15.1-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 9a9ed32c4c3de3baef8f15d465b21da5c63915c0d20a3379d5d3a21bf9a10517
MD5 b61ef452811b784422de75ac42b662e9
BLAKE2b-256 1ad55fdd89f6ee42da1e256751e90bc162667e19dcb6f0262e4bcacfb9fd4166

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypepp-0.15.1-cp312-abi3-win_amd64.whl:

Publisher: ci.yml on Matthew-McRaven/Pepp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pypepp-0.15.1-cp312-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pypepp-0.15.1-cp312-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 85566b4d188d709fa665e50fca09f87edc956e3901963634c767e86407ee603c
MD5 a482421808c58b77754a47c6f7a7b3bb
BLAKE2b-256 e834fc69f9b6be7d56e95b9b1be39c2f75dafe31af69e6153b767e9b4bb73c61

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypepp-0.15.1-cp312-abi3-musllinux_1_2_x86_64.whl:

Publisher: ci.yml on Matthew-McRaven/Pepp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pypepp-0.15.1-cp312-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pypepp-0.15.1-cp312-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 4ea992a52ad36a96e8a2c8779fc7f393ab4f3deaaca115a14831cd987e41a890
MD5 86bc14949f9b05f293e2901ee842c959
BLAKE2b-256 35d7c6a15db0806492d5dd46b758767bce463a938af4477dfed60eedcd5e2a06

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypepp-0.15.1-cp312-abi3-musllinux_1_2_aarch64.whl:

Publisher: ci.yml on Matthew-McRaven/Pepp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pypepp-0.15.1-cp312-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pypepp-0.15.1-cp312-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 08d6fdda2f80513ba6dc123c9149a6e25bceb0611c3df9cc4c8294bbaf70068e
MD5 323c32444c599cf1f29e426f4e67ecb7
BLAKE2b-256 12eab4be140b9949f370df21a8002fceae7b55e9b099f0c80864cdb9d1d3afe3

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypepp-0.15.1-cp312-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: ci.yml on Matthew-McRaven/Pepp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pypepp-0.15.1-cp312-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pypepp-0.15.1-cp312-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 78d3f76ee7ba251ebf90249d84017ec791a7666d542c853e5d6b9b74afdd81a8
MD5 d2837afd96a204f3e403d739a11f4691
BLAKE2b-256 e6186962eab4af4fdf4ab6fbd6511c1b4c33aacf5ffeaedf0fcd84936de98e41

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypepp-0.15.1-cp312-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl:

Publisher: ci.yml on Matthew-McRaven/Pepp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pypepp-0.15.1-cp312-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pypepp-0.15.1-cp312-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c83bd9e766903d0f5c690f6700312d24a3497d6c9845660ba4effcd323b3a793
MD5 edf40d3e6435d3e712c61cf908dda5de
BLAKE2b-256 37bf285919a8aa01c7a9af9c22847660a295ef347d4ae844933d83665fbc0b8f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypepp-0.15.1-cp312-abi3-macosx_11_0_arm64.whl:

Publisher: ci.yml on Matthew-McRaven/Pepp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pypepp-0.15.1-cp312-abi3-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for pypepp-0.15.1-cp312-abi3-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 3116ad685eae4217f179d1145acca98b98fc62a873e92bf108ad90a405ea0e47
MD5 b553c846d5437f160bae605cfcafd3e7
BLAKE2b-256 e4edbc1420671e51063e14b76182f85a04054fd7d74781d8e7829402cd7caf0a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypepp-0.15.1-cp312-abi3-macosx_10_13_x86_64.whl:

Publisher: ci.yml on Matthew-McRaven/Pepp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page