mirror of
https://github.com/irmen/prog8.git
synced 2024-11-16 22:09:56 +00:00
document limited fp support
This commit is contained in:
parent
3f64782023
commit
91045afbee
@ -68,7 +68,7 @@ Language features
|
|||||||
- ``in`` expression for concise and efficient multi-value/containment test
|
- ``in`` expression for concise and efficient multi-value/containment test
|
||||||
- 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.
|
- Variable data types include signed and unsigned bytes and words, arrays, strings.
|
||||||
- Floating point math also supported if the target system provides floating point library routines (C64 and Cx16 both do).
|
- Floating point math also supported on select compiler targets (C64, Cx16 and virtual).
|
||||||
- Strings can contain escaped characters but also many symbols directly if they have a PETSCII equivalent, such as "♠♥♣♦π▚●○╳". Characters like ^, _, \\, {, } and | are also accepted and converted to the closest PETSCII equivalents.
|
- Strings can contain escaped characters but also many symbols directly if they have a PETSCII equivalent, such as "♠♥♣♦π▚●○╳". Characters like ^, _, \\, {, } and | are also accepted and converted to the closest PETSCII equivalents.
|
||||||
- High-level code optimizations, such as const-folding (zero-allocation constants that are optimized away in expressions), expression and statement simplifications/rewriting.
|
- High-level code optimizations, such as const-folding (zero-allocation constants that are optimized away in expressions), expression and statement simplifications/rewriting.
|
||||||
- Many built-in functions, such as ``sin``, ``cos``, ``abs``, ``sqrt``, ``msb``, ``rol``, ``ror``, ``sort`` and ``reverse``
|
- Many built-in functions, such as ``sin``, ``cos``, ``abs``, ``sqrt``, ``msb``, ``rol``, ``ror``, ``sort`` and ``reverse``
|
||||||
|
@ -220,6 +220,10 @@ Provides string manipulation routines.
|
|||||||
|
|
||||||
floats
|
floats
|
||||||
------
|
------
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Floating point support is only available on c64, cx16 and virtual targets for now.
|
||||||
|
|
||||||
Provides definitions for the ROM/Kernal subroutines and utility routines dealing with floating
|
Provides definitions for the ROM/Kernal subroutines and utility routines dealing with floating
|
||||||
point variables. This includes ``print_f``, the routine used to print floating point numbers,
|
point variables. This includes ``print_f``, the routine used to print floating point numbers,
|
||||||
``fabs`` to get the absolute value of a floating point number, and a dozen or so floating point
|
``fabs`` to get the absolute value of a floating point number, and a dozen or so floating point
|
||||||
|
@ -255,11 +255,13 @@ This saves a lot of memory and may be faster as well.
|
|||||||
Floating point numbers
|
Floating point numbers
|
||||||
^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
Floats are stored in the 5-byte 'MFLPT' format that is used on CBM machines,
|
Floats are stored in the 5-byte 'MFLPT' format that is used on CBM machines.
|
||||||
and currently all floating point operations are specific to the Commodore 64.
|
Floating point support is available on the c64 and cx16 (and virtual) compiler targets.
|
||||||
This is because routines in the C64 BASIC and Kernal ROMs are used for that.
|
On the c64 and cx16, the rom routines are used for floating point operations,
|
||||||
So floating point operations will only work if the C64 BASIC ROM (and Kernal ROM)
|
so on both systems the correct rom banks have to be banked in to make this work.
|
||||||
are banked in.
|
Although the C128 shares the same floating point format, Prog8 currently doesn't support
|
||||||
|
using floating point on that system (because the c128 fp routines require the fp variables
|
||||||
|
to be in another ram bank than the program, something Prog8 doesn't do).
|
||||||
|
|
||||||
Also your code needs to import the ``floats`` library to enable floating point support
|
Also your code needs to import the ``floats`` library to enable floating point support
|
||||||
in the compiler, and to gain access to the floating point routines.
|
in the compiler, and to gain access to the floating point routines.
|
||||||
@ -268,10 +270,6 @@ to worry about this yourself)
|
|||||||
|
|
||||||
The largest 5-byte MFLPT float that can be stored is: **1.7014118345e+38** (negative: **-1.7014118345e+38**)
|
The largest 5-byte MFLPT float that can be stored is: **1.7014118345e+38** (negative: **-1.7014118345e+38**)
|
||||||
|
|
||||||
.. note::
|
|
||||||
On the Commander X16, to use floating point operations, ROM bank 4 has to be enabled (BASIC).
|
|
||||||
Importing the ``floats`` library will do this for you if needed.
|
|
||||||
|
|
||||||
|
|
||||||
Arrays
|
Arrays
|
||||||
^^^^^^
|
^^^^^^
|
||||||
|
@ -42,7 +42,6 @@ For 9.0 major changes
|
|||||||
|
|
||||||
Need help with
|
Need help with
|
||||||
^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^
|
||||||
- c128 target: various machine specific things (free zp locations, how banking works, getting the floating point routines working, ...)
|
|
||||||
- atari target: more details details about the machine, fixing library routines. I have no clue whatsoever.
|
- atari target: more details details about the machine, fixing library routines. I have no clue whatsoever.
|
||||||
- see the :ref:`portingguide` for details on what information is needed.
|
- see the :ref:`portingguide` for details on what information is needed.
|
||||||
|
|
||||||
@ -68,11 +67,10 @@ Compiler:
|
|||||||
But all library code written in asm uses .proc already..... (textual search/replace when writing the actual asm?)
|
But all library code written in asm uses .proc already..... (textual search/replace when writing the actual asm?)
|
||||||
Once new codegen is written that is based on the IR, this point is mostly moot anyway as that will have its own dead code removal on the IR level.
|
Once new codegen is written that is based on the IR, this point is mostly moot anyway as that will have its own dead code removal on the IR level.
|
||||||
- Zig-like try-based error handling where the V flag could indicate error condition? and/or BRK to jump into monitor on failure? (has to set BRK vector for that) But the V flag is also set on certain normal instructions
|
- Zig-like try-based error handling where the V flag could indicate error condition? and/or BRK to jump into monitor on failure? (has to set BRK vector for that) But the V flag is also set on certain normal instructions
|
||||||
|
- For c128 target; put floating point variables in bank 1 to make the FP routines work (is this even worth it? very few people will use fp)
|
||||||
|
|
||||||
Libraries:
|
Libraries:
|
||||||
|
|
||||||
- fix the problems in c128 target, and flesh out its libraries.
|
|
||||||
- fix the problems in atari target, and flesh out its libraries.
|
- fix the problems in atari target, and flesh out its libraries.
|
||||||
- c64: make the graphics.BITMAP_ADDRESS configurable (VIC banking)
|
- c64: make the graphics.BITMAP_ADDRESS configurable (VIC banking)
|
||||||
- optimize several inner loops in gfx2 even further?
|
- optimize several inner loops in gfx2 even further?
|
||||||
|
Loading…
Reference in New Issue
Block a user