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.9 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

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.2.tar.gz (4.9 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.2-cp312-abi3-win_arm64.whl (47.6 kB view details)

Uploaded CPython 3.12+Windows ARM64

pypepp-0.14.2-cp312-abi3-win_amd64.whl (51.4 kB view details)

Uploaded CPython 3.12+Windows x86-64

pypepp-0.14.2-cp312-abi3-musllinux_1_2_x86_64.whl (152.5 kB view details)

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

pypepp-0.14.2-cp312-abi3-musllinux_1_2_aarch64.whl (148.1 kB view details)

Uploaded CPython 3.12+musllinux: musl 1.2+ ARM64

pypepp-0.14.2-cp312-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (54.4 kB view details)

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

pypepp-0.14.2-cp312-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (51.5 kB view details)

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

pypepp-0.14.2-cp312-abi3-macosx_11_0_arm64.whl (46.2 kB view details)

Uploaded CPython 3.12+macOS 11.0+ ARM64

pypepp-0.14.2-cp312-abi3-macosx_10_13_x86_64.whl (48.5 kB view details)

Uploaded CPython 3.12+macOS 10.13+ x86-64

File details

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

File metadata

  • Download URL: pypepp-0.14.2.tar.gz
  • Upload date:
  • Size: 4.9 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.2.tar.gz
Algorithm Hash digest
SHA256 cc29830532cf78957b55ddbc50b68ba6a059deadf4a611dd063ee8b751ec16d0
MD5 77e76cf064fee75892212b0f5403a6f9
BLAKE2b-256 a1a06b86f60b946269d708460a7b35a9bd9297f16a498d6f1b6ca87a8a454c03

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pypepp-0.14.2-cp312-abi3-win_arm64.whl
  • Upload date:
  • Size: 47.6 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.2-cp312-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 c07190a2cfcd720b19a0d5a71b673b5655a89938db19a7c1cbc16267858a5dd2
MD5 b61d0f3930f4d1c9528d8286f4775fd5
BLAKE2b-256 13c26450bba2d4a2617a2a07b874a7d63507ffe0f93d15ad7b0f9ca1b1c1a802

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pypepp-0.14.2-cp312-abi3-win_amd64.whl
  • Upload date:
  • Size: 51.4 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.2-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 4da09ed0a5feb9577c470ed9b37013b3b40b009e337a986eec2abe05ab525224
MD5 e40834aa715dc3107ee34fdf8209a5d4
BLAKE2b-256 2ab812f344054b93ae81c287f212f38524014e96b3575f0b0ca7f513ffb70a9b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypepp-0.14.2-cp312-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9ea72d1726fddce4a40701098abdf87033787d437adc828f6e5fa29253cf84a8
MD5 a6d946a1b5c5dc9cb729666af4c79f00
BLAKE2b-256 006ce3c5d7a1f2e07c445225242c72d1ae04974a5f4854726e696d94dce0810e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypepp-0.14.2-cp312-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 6c159eaa38f2427a019cfb7e5366a68d437988a94e2931395ca5865f840f2f86
MD5 0d3d6050479dd109bf8d773bb08b4b22
BLAKE2b-256 21f23885573cfc32873832d0b41fa44a46706515a2cc18b71bb613e365248c08

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypepp-0.14.2-cp312-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 85659ce1269eb53991d8596c0f4332e04be17f3a7c6536dbfedb104247d5c37a
MD5 99b2df14b73bde3cdc4b77690062a3e8
BLAKE2b-256 456bfe042fb21a4572113001931f5270ab4c03f9cc04f79258a220780dc48bfb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypepp-0.14.2-cp312-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 55e5565ea2e6a04c37805eb3b96742957a9e234752757c282647046560245d59
MD5 65fa1b3100f955a473e0d3ea28389ac2
BLAKE2b-256 9fb8f4c85290fa8097817ad393efce9aaa4f0d817389f4195ab6844488310639

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypepp-0.14.2-cp312-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 940c27b1b3b3dc83c673fe5b3876a72bbc21de3452749f6d78e710f8b57115ad
MD5 dc1063227329f84e9a5535d94e0177c6
BLAKE2b-256 fd01a9bb4d2f8a783a000b7ca96d16f965d8cf3efe1895c45089cbe7ce09a6d5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypepp-0.14.2-cp312-abi3-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 b7638fae12a04b676dfc1710794f8e3a148b67e58edb46fd1cc017f58b68c17b
MD5 3cb25c889e0315b806f5e1a1cc5467fa
BLAKE2b-256 0a716d19d7518ba8f0b1786b68be787b2198a117822f2ca11b60576fd11dac77

See more details on using hashes here.

Provenance

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