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

Uploaded CPython 3.12+Windows ARM64

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

Uploaded CPython 3.12+Windows x86-64

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

Uploaded CPython 3.12+musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.12+macOS 11.0+ ARM64

pypepp-0.15.2-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.2.tar.gz.

File metadata

  • Download URL: pypepp-0.15.2.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.2.tar.gz
Algorithm Hash digest
SHA256 bf188958679b97111ce51a1ed52f881ef348b951f67143e832fe67160fabb519
MD5 6b919752375cfb8b20441b6a87b8ff6e
BLAKE2b-256 1c9a1dc0c915826ee1fc767cb15190b32fda0f68eaef050a455f62a2760db8f5

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pypepp-0.15.2-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.2-cp312-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 83c0c66c49b34e0a4dce326c9ab01b8227307176541ad500aae9d0459f919e74
MD5 8febac8ec25f4fd3451cef20d4d0bebd
BLAKE2b-256 b051ba84695a3d5701a291ba8e881409a21419add41dfd1091803ece5a67dbad

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pypepp-0.15.2-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.2-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 385aca212e5dc57a066081b69942d53f60b4224c048228c154237c8372defea2
MD5 bf53e1374728f6485b3a08bb22beb1a8
BLAKE2b-256 2887b1a4cf18f765f8ab1afa10cbb34b62e3920e73e5dda5346a4fadc17e441d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypepp-0.15.2-cp312-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 bd217e053201d65066580a816785fef0d9207f55ebc009cdb91ddbfba6a58a62
MD5 097721a55498881ad6a13d8bb1acca06
BLAKE2b-256 7a35dc0f3eaf6e0a7c95f741537f0c834540c81fc6217a2cbe59d63b98726818

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypepp-0.15.2-cp312-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 b8453839be2bc7cd0745ed960ddcfde16dc39b06eb961bd98bbb7a3ecab7721f
MD5 bb13714dfff037d35982368bc222514f
BLAKE2b-256 b02e35f9e002bfc5b753a54120aded0fd12183f50530458e66c971d16c6c32fa

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypepp-0.15.2-cp312-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3b684a990824b7fd36d4f7276fc1b15fbc4792aaf86f75e33b40311a4655b177
MD5 36204a56728505e153553bde4c7be0f1
BLAKE2b-256 3eeee56ce0a9c80af707619786ecee0f9986fd14d2106be076c9dfb729486eaf

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypepp-0.15.2-cp312-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2ad054ee9cc4f6429c8fb8ef2a6c7616f1ba0853b1e9ba16f7da6aa95e35add8
MD5 a6fdf63355ecca2cdd916d22348d3608
BLAKE2b-256 726b450f3933f2f2859d0b35439b6e9233b8df69e13b791ee5f63c9df67681cc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypepp-0.15.2-cp312-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 57340e93ac4aa738f36cc11ae61d62a225dd70e366c79dea133c102e3ef4d1ff
MD5 e6c5f254cbcc382ec7556ce72f4908e3
BLAKE2b-256 9fea4672bd5137936eac9190b0cdadc492414c7d37d9563a8f5888bfb9c7d87f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypepp-0.15.2-cp312-abi3-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 94196c2bda384bb3cd59b9181a6836cd46ba2de3e08eb574f5f2706dbbc1c1f4
MD5 25bdc060483dc3c87f16d794efd2190c
BLAKE2b-256 a3847c658e21d93821aa1220c99b043dc35c1d33344ea71b335dbfbf94b4a950

See more details on using hashes here.

Provenance

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