mirror of
https://github.com/irmen/prog8.git
synced 2024-12-22 18:30:01 +00:00
readme
This commit is contained in:
parent
e6079dfd71
commit
8e3ebc84f0
11
README.md
11
README.md
@ -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:*
|
||||||
|
|
||||||
|
@ -1 +1 @@
|
|||||||
6.2
|
6.3-SNAPSHOT
|
||||||
|
@ -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.
|
||||||
|
@ -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()
|
||||||
|
Loading…
Reference in New Issue
Block a user