This commit is contained in:
Irmen de Jong 2021-02-28 15:40:04 +01:00
parent e6079dfd71
commit 8e3ebc84f0
4 changed files with 11 additions and 9 deletions

View File

@ -23,13 +23,14 @@ https://prog8.readthedocs.io/
What does Prog8 provide? What does Prog8 provide?
------------------------ ------------------------
- big reduction of source code length over raw assembly - reduction of source code length over raw assembly
- modularity, symbol scoping, subroutines - modularity, symbol scoping, subroutines
- various data types other than just bytes (16-bit words, floats, strings) - various data types other than just bytes (16-bit words, floats, strings)
- automatic variable allocations, automatic string and array variables and string sharing - automatic variable allocations, automatic string and array variables and string sharing
- subroutines with an input- and output parameter signature - subroutines with input parameters and result values
- no stack frame allocations because parameters and local variables are automatically allocated statically - high-level program optimizations
- constant folding in expressions and other high-level program optimizations - small program boilerplate/compilersupport overhead
- sane variable initialization, programs can be restarted again just fine after exiting to basic
- conditional branches - conditional branches
- floating point operations (requires the C64 Basic ROM routines for this) - floating point operations (requires the C64 Basic ROM routines for this)
- 'when' statement to provide a concise jump table alternative to if/elseif chains - 'when' statement to provide a concise jump table alternative to if/elseif chains
@ -38,8 +39,10 @@ What does Prog8 provide?
- various powerful built-in libraries to do I/O, number conversions, graphics and more - various powerful built-in libraries to do I/O, number conversions, graphics and more
- convenience abstractions for low level aspects such as ZeroPage handling, program startup, explicit memory addresses - convenience abstractions for low level aspects such as ZeroPage handling, program startup, explicit memory addresses
- fast execution speed due to compilation to native assembly code - fast execution speed due to compilation to native assembly code
- variables are allocated statically
- inline assembly allows you to have full control when every cycle or byte matters - inline assembly allows you to have full control when every cycle or byte matters
- supports the sixteen 'virtual' 16-bit registers R0 .. R15 from the Commander X16, and provides them also on the C64. - supports the sixteen 'virtual' 16-bit registers R0 .. R15 from the Commander X16, and provides them also on the C64.
- encode strings and characters into petscii or screencodes as desired (C64/Cx16)
*Rapid edit-compile-run-debug cycle:* *Rapid edit-compile-run-debug cycle:*

View File

@ -1 +1 @@
6.2 6.3-SNAPSHOT

View File

@ -50,8 +50,9 @@ Language features
- Provide high level programming constructs but at the same time stay close to the metal; - Provide high level programming constructs but at the same time stay close to the metal;
still able to directly use memory addresses and ROM subroutines, still able to directly use memory addresses and ROM subroutines,
and inline assembly to have full control when every register, cycle or byte matters and inline assembly to have full control when every register, cycle or byte matters
- Arbitrary number of subroutine parameters, Complex nested expressions are possible - Subroutines with parameters and return values
- No stack frame allocations because parameters and local variables are automatically allocated statically - complex nested expressions are possible
- Variables are allocated statically
- Nested subroutines can access variables from outer scopes to avoids the overhead to pass everything via parameters - Nested subroutines can access variables from outer scopes to avoids the overhead to pass everything via parameters
- Variable data types include signed and unsigned bytes and words, arrays, strings and floats. - Variable data types include signed and unsigned bytes and words, arrays, strings and floats.
- High-level code optimizations, such as const-folding, expression and statement simplifications/rewriting. - High-level code optimizations, such as const-folding, expression and statement simplifications/rewriting.

View File

@ -4,8 +4,6 @@
main { main {
sub start() { sub start() {
; todo feedback: new routines at the end of the jump table so existing jump vectors remain unchanged
txt.lowercase() txt.lowercase()
vtui.initialize() vtui.initialize()