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.3.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.3-cp312-abi3-win_arm64.whl (45.4 kB view details)

Uploaded CPython 3.12+Windows ARM64

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

Uploaded CPython 3.12+Windows x86-64

pypepp-0.15.3-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.3-cp312-abi3-musllinux_1_2_aarch64.whl (145.9 kB view details)

Uploaded CPython 3.12+musllinux: musl 1.2+ ARM64

pypepp-0.15.3-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.3-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.3-cp312-abi3-macosx_11_0_arm64.whl (43.9 kB view details)

Uploaded CPython 3.12+macOS 11.0+ ARM64

pypepp-0.15.3-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.3.tar.gz.

File metadata

  • Download URL: pypepp-0.15.3.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.3.tar.gz
Algorithm Hash digest
SHA256 afbc68afeda28b2e434f83c2bcb85f4f3aa2a4b2e76607ed7988d41faf61cbf7
MD5 78583fbb8bdcf175a7e34b50302c5176
BLAKE2b-256 dd648385589d4b098e75c8d3945b8611928be5bda8aef889f4eee19fea5b187e

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypepp-0.15.3.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.3-cp312-abi3-win_arm64.whl.

File metadata

  • Download URL: pypepp-0.15.3-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.3-cp312-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 23d76783ee024aef2d4ef39a6d9b6f1b90c172bd3ec067fa4320c5fd3db42f78
MD5 dfcb9d9f03de54bb54c601826257e3fb
BLAKE2b-256 1b777930b4b6f8bd9a667c3e139a1e0e8d761ceeee16798f83359bad110265db

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypepp-0.15.3-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.3-cp312-abi3-win_amd64.whl.

File metadata

  • Download URL: pypepp-0.15.3-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.3-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 82ce091d5166261c3d7d8abdb0d51830d4d42738408df4f9343e72981a09c439
MD5 0c008f20f27e2d21a61af8c8f7a61616
BLAKE2b-256 577529e239d58b7504bd178745f7c0bc75a692df46be64d428c179cd893adbb0

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypepp-0.15.3-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.3-cp312-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pypepp-0.15.3-cp312-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3f8160be00aa94881ca04987b48e56cf2ba9001cedd7b8bde974c1394f22e32d
MD5 8392e434dad8c1d76d9d9d17c133fdb4
BLAKE2b-256 182fe17a1af08cc89ef3499f6c321bcc898aae5fd791383270277ce499d03e36

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypepp-0.15.3-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.3-cp312-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pypepp-0.15.3-cp312-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 56580df0ee45681a48d3bac44fcd7f0278a4179a8fad2a2c0079c3129707d2b1
MD5 73ca791682e33652c9a835c91e877f55
BLAKE2b-256 34f531fce28d24eefd40ff514757bd49a9b5479ae81960e8264b25b335f56954

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypepp-0.15.3-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.3-cp312-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pypepp-0.15.3-cp312-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0ab0a956edf215caf038ab12d16a4e0ad12d14004afeaa8303726e85e5fa7f5b
MD5 1077bc0f86a063e9cfeab8a5207276f4
BLAKE2b-256 3da5d31a4ad503a133676ad308f953cddc6ad3263fdc89d67ee181eaac430a94

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypepp-0.15.3-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.3-cp312-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pypepp-0.15.3-cp312-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 793c5162f96b21106e8d7f8a2ce7ff5f36c4a3167f1dd28a23200fd5f0ffaa07
MD5 7e39344b971554617403f4a5d8417f15
BLAKE2b-256 c2351e884f9685d326d75ef23e82cf9904ea655865ab5d07c964f3b1bfe952dd

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypepp-0.15.3-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.3-cp312-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pypepp-0.15.3-cp312-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7aace8a19e6daaa1c706b172b2e5bd7cc4f172a20e88daba2119e2be7b8ea6a3
MD5 bc09444f996fa9927efcb8296a829baf
BLAKE2b-256 fa61f09c2599f5a97cfeeb542a1b8b69b21eca3bd5ab2dba360113ee86bdf9b7

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypepp-0.15.3-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.3-cp312-abi3-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for pypepp-0.15.3-cp312-abi3-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 0725cfaf249b9f86d2a36909b90cdc63308b17135a318c25fc97f89464993e0d
MD5 dfcee038a6fe636d45de5f0481a300c1
BLAKE2b-256 80b94754b424483f1d681c79516d6ed5b7e0ad43643c9ea66598fa40eddcfd8a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypepp-0.15.3-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