Python bindings for the Pepp assembler and simulator
Project description
Pepp
Table of Contents
- Building for Source
- Previous Works
- Pep/9 and /10 Virtual Machines
- Project Features
- Contributing
- 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
78c9f79b0c32f5beb8e7ee3690fb7bf2707a02b76480a653a5c94c0f84b136cc
|
|
| MD5 |
cfd7a3c1d0b4b370f18f283e2acd36f9
|
|
| BLAKE2b-256 |
a386538a69c6fe8235db5ed15cb255178c17865bf58c40d2162a24d444ffb80d
|
Provenance
The following attestation bundles were made for pypepp-0.14.3.tar.gz:
Publisher:
ci.yml on Matthew-McRaven/Pepp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pypepp-0.14.3.tar.gz -
Subject digest:
78c9f79b0c32f5beb8e7ee3690fb7bf2707a02b76480a653a5c94c0f84b136cc - Sigstore transparency entry: 953230673
- Sigstore integration time:
-
Permalink:
Matthew-McRaven/Pepp@d0b796bb22f8c0f329939ea27edbe014dc84b24a -
Branch / Tag:
refs/tags/v0.14.3 - Owner: https://github.com/Matthew-McRaven
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@d0b796bb22f8c0f329939ea27edbe014dc84b24a -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c6ce7beeac46ce749272d53d7caf0730f31c57221237d98622faf4e26b5a1893
|
|
| MD5 |
9cd5e8dc4cbb2166bf25dff8e5a861dc
|
|
| BLAKE2b-256 |
64f1d844087eb866c77e35c1e0631dee15cd8781cdb342dea769a5ac07c2e0cc
|
Provenance
The following attestation bundles were made for pypepp-0.14.3-cp312-abi3-win_arm64.whl:
Publisher:
ci.yml on Matthew-McRaven/Pepp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pypepp-0.14.3-cp312-abi3-win_arm64.whl -
Subject digest:
c6ce7beeac46ce749272d53d7caf0730f31c57221237d98622faf4e26b5a1893 - Sigstore transparency entry: 953230676
- Sigstore integration time:
-
Permalink:
Matthew-McRaven/Pepp@d0b796bb22f8c0f329939ea27edbe014dc84b24a -
Branch / Tag:
refs/tags/v0.14.3 - Owner: https://github.com/Matthew-McRaven
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@d0b796bb22f8c0f329939ea27edbe014dc84b24a -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a9b3ddc2bc72d0f9eae1be5e081cc1d0e6f54a6189a8f18296f9552def3683bf
|
|
| MD5 |
52e9b50077b4fae81453c1a33e1a4180
|
|
| BLAKE2b-256 |
08e78fd1ff4249f1ef4f04155c5aee8c6758911d500487a835cb84af57b5c488
|
Provenance
The following attestation bundles were made for pypepp-0.14.3-cp312-abi3-win_amd64.whl:
Publisher:
ci.yml on Matthew-McRaven/Pepp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pypepp-0.14.3-cp312-abi3-win_amd64.whl -
Subject digest:
a9b3ddc2bc72d0f9eae1be5e081cc1d0e6f54a6189a8f18296f9552def3683bf - Sigstore transparency entry: 953230684
- Sigstore integration time:
-
Permalink:
Matthew-McRaven/Pepp@d0b796bb22f8c0f329939ea27edbe014dc84b24a -
Branch / Tag:
refs/tags/v0.14.3 - Owner: https://github.com/Matthew-McRaven
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@d0b796bb22f8c0f329939ea27edbe014dc84b24a -
Trigger Event:
push
-
Statement type:
File details
Details for the file pypepp-0.14.3-cp312-abi3-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: pypepp-0.14.3-cp312-abi3-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 150.3 kB
- Tags: CPython 3.12+, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dd65762552c46c454109d1774318c5dd7645c77c406812b3f090e5f26aa64ae4
|
|
| MD5 |
437640f4a97f7f2b79f9c1c687e61281
|
|
| BLAKE2b-256 |
92390be476303039a29a578f29515e1ec55da882e354f21a1d240d35e2190254
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pypepp-0.14.3-cp312-abi3-musllinux_1_2_x86_64.whl -
Subject digest:
dd65762552c46c454109d1774318c5dd7645c77c406812b3f090e5f26aa64ae4 - Sigstore transparency entry: 953230674
- Sigstore integration time:
-
Permalink:
Matthew-McRaven/Pepp@d0b796bb22f8c0f329939ea27edbe014dc84b24a -
Branch / Tag:
refs/tags/v0.14.3 - Owner: https://github.com/Matthew-McRaven
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@d0b796bb22f8c0f329939ea27edbe014dc84b24a -
Trigger Event:
push
-
Statement type:
File details
Details for the file pypepp-0.14.3-cp312-abi3-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: pypepp-0.14.3-cp312-abi3-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 145.9 kB
- Tags: CPython 3.12+, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8645d1e648e37df9e739b9212e6c8cae18e2e5948ab3eba9e4c8b3594e3e7c96
|
|
| MD5 |
914b9dc3c24cb14032dea181b46f64cf
|
|
| BLAKE2b-256 |
b06e40e35a2e68d1b3f33b911abaea16f260a7bb49b275bc22e547e76bf81740
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pypepp-0.14.3-cp312-abi3-musllinux_1_2_aarch64.whl -
Subject digest:
8645d1e648e37df9e739b9212e6c8cae18e2e5948ab3eba9e4c8b3594e3e7c96 - Sigstore transparency entry: 953230677
- Sigstore integration time:
-
Permalink:
Matthew-McRaven/Pepp@d0b796bb22f8c0f329939ea27edbe014dc84b24a -
Branch / Tag:
refs/tags/v0.14.3 - Owner: https://github.com/Matthew-McRaven
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@d0b796bb22f8c0f329939ea27edbe014dc84b24a -
Trigger Event:
push
-
Statement type:
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
- Download URL: pypepp-0.14.3-cp312-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 52.1 kB
- Tags: CPython 3.12+, manylinux: glibc 2.24+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aa00ea1e28b68452442162f0c975c9885f49c14e1a6745914031095f3a823769
|
|
| MD5 |
99a0172682d7eaf8a2ef1574a7a9680d
|
|
| BLAKE2b-256 |
7baf187f421358c74d83e43611b812c100a669a8c3b183d5750d7ead9dc835a3
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pypepp-0.14.3-cp312-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
aa00ea1e28b68452442162f0c975c9885f49c14e1a6745914031095f3a823769 - Sigstore transparency entry: 953230680
- Sigstore integration time:
-
Permalink:
Matthew-McRaven/Pepp@d0b796bb22f8c0f329939ea27edbe014dc84b24a -
Branch / Tag:
refs/tags/v0.14.3 - Owner: https://github.com/Matthew-McRaven
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@d0b796bb22f8c0f329939ea27edbe014dc84b24a -
Trigger Event:
push
-
Statement type:
File details
Details for the file pypepp-0.14.3-cp312-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: pypepp-0.14.3-cp312-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 49.2 kB
- Tags: CPython 3.12+, manylinux: glibc 2.24+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
99dae63cc95369b496e294cd7fb1df657b427908adb39827a9d822361e2c0062
|
|
| MD5 |
13a64fe1a42a55e08c969a7a79e3a755
|
|
| BLAKE2b-256 |
5f22b8cdfa529052fd9b2979059e0ffec8442c77511b5863f095ad59b5c83442
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pypepp-0.14.3-cp312-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl -
Subject digest:
99dae63cc95369b496e294cd7fb1df657b427908adb39827a9d822361e2c0062 - Sigstore transparency entry: 953230683
- Sigstore integration time:
-
Permalink:
Matthew-McRaven/Pepp@d0b796bb22f8c0f329939ea27edbe014dc84b24a -
Branch / Tag:
refs/tags/v0.14.3 - Owner: https://github.com/Matthew-McRaven
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@d0b796bb22f8c0f329939ea27edbe014dc84b24a -
Trigger Event:
push
-
Statement type:
File details
Details for the file pypepp-0.14.3-cp312-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: pypepp-0.14.3-cp312-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 43.9 kB
- Tags: CPython 3.12+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ce15d7e4c0028969a55146153deb98c8b7cb509421b5a79278269a441fa8f6d4
|
|
| MD5 |
0a6cddbb17917558ef877b1b33af0c49
|
|
| BLAKE2b-256 |
1c8b3fbdeb90cadc8500b8ac979a6a423f7d281948a91f69f530ff4a6f029c1d
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pypepp-0.14.3-cp312-abi3-macosx_11_0_arm64.whl -
Subject digest:
ce15d7e4c0028969a55146153deb98c8b7cb509421b5a79278269a441fa8f6d4 - Sigstore transparency entry: 953230681
- Sigstore integration time:
-
Permalink:
Matthew-McRaven/Pepp@d0b796bb22f8c0f329939ea27edbe014dc84b24a -
Branch / Tag:
refs/tags/v0.14.3 - Owner: https://github.com/Matthew-McRaven
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@d0b796bb22f8c0f329939ea27edbe014dc84b24a -
Trigger Event:
push
-
Statement type:
File details
Details for the file pypepp-0.14.3-cp312-abi3-macosx_10_13_x86_64.whl.
File metadata
- Download URL: pypepp-0.14.3-cp312-abi3-macosx_10_13_x86_64.whl
- Upload date:
- Size: 46.3 kB
- Tags: CPython 3.12+, macOS 10.13+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f01cf59e29f29639b294f0e4b4d1e610c2c41defab9b938caaae9a7eb452898b
|
|
| MD5 |
592dd698c3db37b56854fbc66d48ac7c
|
|
| BLAKE2b-256 |
49b5cd4607eae33a68d625990762c8844adbe322ea69e5b210b47b7a7e6fa798
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pypepp-0.14.3-cp312-abi3-macosx_10_13_x86_64.whl -
Subject digest:
f01cf59e29f29639b294f0e4b4d1e610c2c41defab9b938caaae9a7eb452898b - Sigstore transparency entry: 953230678
- Sigstore integration time:
-
Permalink:
Matthew-McRaven/Pepp@d0b796bb22f8c0f329939ea27edbe014dc84b24a -
Branch / Tag:
refs/tags/v0.14.3 - Owner: https://github.com/Matthew-McRaven
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@d0b796bb22f8c0f329939ea27edbe014dc84b24a -
Trigger Event:
push
-
Statement type: