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 Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

pypepp-0.0.2-cp312-abi3-win_arm64.whl (47.6 kB view details)

Uploaded CPython 3.12+Windows ARM64

pypepp-0.0.2-cp312-abi3-win_amd64.whl (51.5 kB view details)

Uploaded CPython 3.12+Windows x86-64

pypepp-0.0.2-cp312-abi3-win32.whl (47.5 kB view details)

Uploaded CPython 3.12+Windows x86

pypepp-0.0.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.0.2-cp312-abi3-musllinux_1_2_aarch64.whl (148.1 kB view details)

Uploaded CPython 3.12+musllinux: musl 1.2+ ARM64

pypepp-0.0.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.0.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.0.2-cp312-abi3-macosx_11_0_arm64.whl (46.2 kB view details)

Uploaded CPython 3.12+macOS 11.0+ ARM64

pypepp-0.0.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.0.2-cp312-abi3-win_arm64.whl.

File metadata

  • Download URL: pypepp-0.0.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.0.2-cp312-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 4c8f0995373d466a900965cb383e5caea22d5a18b8aa1786de0eb23d91fd4bc3
MD5 e257302a3f6f418c370b5ecd2a3092fd
BLAKE2b-256 493cb83bb47c04d18a9dfd6c9565f9706b55bce675f4465aeaa9f0c9cdafb3af

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pypepp-0.0.2-cp312-abi3-win_amd64.whl
  • Upload date:
  • Size: 51.5 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.0.2-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 b6673b18fc21c1c58166fb66b93c7e6737bbb78caabce5b5cc6bb0e747857da3
MD5 d0056a27bc9cd66b8be478c70ae216ea
BLAKE2b-256 8de64c5df2be32a5cbc52a10807e4b484286ff7dc10a4bb82b95421bdfe4912a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypepp-0.0.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.0.2-cp312-abi3-win32.whl.

File metadata

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

File hashes

Hashes for pypepp-0.0.2-cp312-abi3-win32.whl
Algorithm Hash digest
SHA256 b8dccb22bffea10119551de6863089845db280ccb5b8aa90c8f0d56ddadb02fc
MD5 f720378d3f93a9b26a01f4915dac5371
BLAKE2b-256 47a8bdfb180774125f09af4fe23e11df92ff98cd293513e7ddd0fff32a27c300

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypepp-0.0.2-cp312-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 227760669c1aa9d0ca5a5026903c4cc58dfbd01a39b7b2f9aa4c149378daf42e
MD5 3c56b8e91b85bb0c2d303a8fae944e35
BLAKE2b-256 cdcee0f5cf60ffe6d2cfc937107127ac9574e643c22516010e7943503da0a41c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypepp-0.0.2-cp312-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 351eef93096df5c093d98e6a423f5886e27e6872bc45cac50fe4dcc9039e0a5d
MD5 e778111a0f1544103e569bf52b5c2f21
BLAKE2b-256 30c8dac4f72ef92d80c195399df93dd3b46bd153a29e63a6730bf10f7b7075b0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypepp-0.0.2-cp312-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 264389ff6f7868ba7564ef06f491b0348c9ecd7be6c11d540556234ef2647e29
MD5 666919daeae00109a8eeed30e5536e44
BLAKE2b-256 4403492a2ab52dc7e0fed861d40b109626f5b2eb34533e75d1b461e28a1bcd8e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypepp-0.0.2-cp312-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 56b79da096daacc7d3dc40acc464b39fd460cebbd4e975645bcaa162ae97d523
MD5 c6e2b00feb6055d77e011860eefb3668
BLAKE2b-256 8026498dd390633e57c36bafd9b93f14fea6edde169546babfd5463d83f43938

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypepp-0.0.2-cp312-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 195e591e47d832dba710eefabd647e88b824421fcad19e2e49d574e819fd6dfd
MD5 cdb376c595925f3a3e92dbaefd6bc1cf
BLAKE2b-256 c411e77eba955cf51b20469f8cc5d48ef78c0c3ffe17e9dd7a7bbcc57fb7ee47

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypepp-0.0.2-cp312-abi3-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 f24198afb1fbb0319680538b6289002b151ac0414e53f7cbba00101f1605d90d
MD5 e006fe55b9fda1edaf381e0b070795b0
BLAKE2b-256 884199a535190cc5f86c6d21640d31829a3620a5d122bec7511348b7309f37be

See more details on using hashes here.

Provenance

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