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

Uploaded CPython 3.12+Windows ARM64

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

Uploaded CPython 3.12+Windows x86-64

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

Uploaded CPython 3.12+musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.12+macOS 11.0+ ARM64

pypepp-0.14.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.14.3.tar.gz.

File metadata

  • Download URL: pypepp-0.14.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.14.3.tar.gz
Algorithm Hash digest
SHA256 78c9f79b0c32f5beb8e7ee3690fb7bf2707a02b76480a653a5c94c0f84b136cc
MD5 cfd7a3c1d0b4b370f18f283e2acd36f9
BLAKE2b-256 a386538a69c6fe8235db5ed15cb255178c17865bf58c40d2162a24d444ffb80d

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pypepp-0.14.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.14.3-cp312-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 c6ce7beeac46ce749272d53d7caf0730f31c57221237d98622faf4e26b5a1893
MD5 9cd5e8dc4cbb2166bf25dff8e5a861dc
BLAKE2b-256 64f1d844087eb866c77e35c1e0631dee15cd8781cdb342dea769a5ac07c2e0cc

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pypepp-0.14.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.14.3-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 a9b3ddc2bc72d0f9eae1be5e081cc1d0e6f54a6189a8f18296f9552def3683bf
MD5 52e9b50077b4fae81453c1a33e1a4180
BLAKE2b-256 08e78fd1ff4249f1ef4f04155c5aee8c6758911d500487a835cb84af57b5c488

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypepp-0.14.3-cp312-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 dd65762552c46c454109d1774318c5dd7645c77c406812b3f090e5f26aa64ae4
MD5 437640f4a97f7f2b79f9c1c687e61281
BLAKE2b-256 92390be476303039a29a578f29515e1ec55da882e354f21a1d240d35e2190254

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypepp-0.14.3-cp312-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 8645d1e648e37df9e739b9212e6c8cae18e2e5948ab3eba9e4c8b3594e3e7c96
MD5 914b9dc3c24cb14032dea181b46f64cf
BLAKE2b-256 b06e40e35a2e68d1b3f33b911abaea16f260a7bb49b275bc22e547e76bf81740

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypepp-0.14.3-cp312-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 aa00ea1e28b68452442162f0c975c9885f49c14e1a6745914031095f3a823769
MD5 99a0172682d7eaf8a2ef1574a7a9680d
BLAKE2b-256 7baf187f421358c74d83e43611b812c100a669a8c3b183d5750d7ead9dc835a3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypepp-0.14.3-cp312-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 99dae63cc95369b496e294cd7fb1df657b427908adb39827a9d822361e2c0062
MD5 13a64fe1a42a55e08c969a7a79e3a755
BLAKE2b-256 5f22b8cdfa529052fd9b2979059e0ffec8442c77511b5863f095ad59b5c83442

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypepp-0.14.3-cp312-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ce15d7e4c0028969a55146153deb98c8b7cb509421b5a79278269a441fa8f6d4
MD5 0a6cddbb17917558ef877b1b33af0c49
BLAKE2b-256 1c8b3fbdeb90cadc8500b8ac979a6a423f7d281948a91f69f530ff4a6f029c1d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypepp-0.14.3-cp312-abi3-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 f01cf59e29f29639b294f0e4b4d1e610c2c41defab9b938caaae9a7eb452898b
MD5 592dd698c3db37b56854fbc66d48ac7c
BLAKE2b-256 49b5cd4607eae33a68d625990762c8844adbe322ea69e5b210b47b7a7e6fa798

See more details on using hashes here.

Provenance

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