prog8/docs/source/index.rst
2018-09-15 16:21:05 +02:00

71 lines
2.4 KiB
ReStructuredText

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 <https://en.wikipedia.org/wiki/MOS_Technology_6502>`_ /
`6510 <https://en.wikipedia.org/wiki/MOS_Technology_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 <https://en.wikipedia.org/wiki/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 <https://sourceforge.net/projects/tass64/>`_ - 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`