Prog8 documentation - |version| =============================== .. image:: _static/logo.jpg :align: center :alt: Prog8 logo .. index:: what is Prog8 What is Prog8? -------------- This is an experimental compiled programming language targeting the 8-bit `6502 `_ / `6510 `_ microprocessor. This CPU is from the late 1970's and early 1980's and was used in many home computers from that era, such as the `Commodore-64 `_. The language aims to provide many conveniences over raw assembly code (even when using a macro assembler), while still being low level enough to create high performance programs. Prog8 is copyright © Irmen de Jong (irmen@razorvine.net | http://www.razorvine.net). This software is licensed under the GNU GPL 3.0, see https://www.gnu.org/licenses/gpl.html Design principles ----------------- - It is a cross-compiler running on modern machines (Linux, MacOS, Windows, ...) The generated output is a machine code program runnable on actual 8-bit 6502 hardware. - Based on simple and familiar imperative structured programming paradigm. - Modular programming and scoping via modules, code blocks, and subroutines. - Provide high level programming constructs but stay close to the metal; still able to directly use memory addresses, CPU registers and ROM subroutines - No dynamic memory allocation. All variables stay fixed size as determined at compile time. - Provide various quality of life language features specifically for the target platform. - Provide a convenient edit/compile/run cycle by being able to directly launch the compiled program in an emulator and provide debugging information to the emulator. - The compiler outputs a regular 6502 assembly source code file, it doesn't assemble this itself. The '64tass' third party cross-assembler tool is used to do this final step. - Goto is usually considered harmful, but not here: arbitrary control flow jumps are possible. - There are no complicated built-in error handling or overflow checks. Required tools -------------- `64tass `_ - cross assembler @TODO - java? - kotlin? .. toctree:: :maxdepth: 2 :caption: Contents of this manual: targetsystem.rst building.rst programming.rst syntaxreference.rst todo.rst Index ===== * :ref:`genindex`