Rangi
3c049983f1
Fixed-point functions can take specific precision ( #1086 )
2022-10-02 16:56:08 +02:00
Rangi
8553b61a94
Fixed-point values can use all 32-Q magnitude bits ( #1085 )
2022-10-02 11:08:38 +02:00
Rangi
106ad30e5a
Allow fixed-point constants to have unsigned range ( #1084 )
...
For example with Q.4, $F0 is 15.0, which no longer warns
2022-10-01 23:32:34 +02:00
Rangi
969412af24
Parse HEX palettes ( #1081 )
...
Addresses one item of #1065
2022-10-01 12:45:00 -04:00
Rangi
ddb1d0b6aa
Parse GPL palettes, and fix PSP palette parsing ( #1080 )
...
Addresses one item of #1065
2022-10-01 10:46:13 +02:00
Rangi and Eldred Habert
08545643cf
Only define @ and _NARG when they have values ( #1073 )
...
Fixes #1069
Co-authored-by: Eldred Habert <[email protected] >
2022-10-01 01:04:03 +02:00
Rangi
a47da5f71f
Deprecate __FILE__ and __LINE__ ( #1072 )
...
Unlike C, these constants are not convenient for logging in macros,
since they always report the same data (their location in the macro).
Fixes #1068
2022-09-30 19:48:30 +02:00
Rangi
68ad926279
Patch projects so CI will build ( #1071 )
...
Fixes #1070
2022-09-30 12:19:11 +02:00
Rangi and Eldred Habert
dec4133e84
SECTION(symbol) returns the name of a symbol's section (#1066 )
...
Fixes #963
Co-authored-by: Eldred Habert <[email protected] >
2022-09-30 01:59:33 +02:00
Rangi
c35cb6ac32
Warning levels -Wunmapped-char=0/1/2 ( #1061 )
...
Fixes #1058
2022-09-29 18:14:04 -04:00
Rangi
023884d2b0
Redefine the trig functions to divide circles into 1.0 turns ( #1060 )
...
This makes their behavior consistent across Q settings
Fixes #1059
2022-09-29 10:57:29 +02:00
Rangi
b1a241233e
Preserve Unix line endings for .bash and .flags files ( #1054 )
...
Fixes #955
2022-09-25 11:18:44 +02:00
Rangi
f88968ec20
Fix rgbasm -b and rgbasm -g ( #1052 )
...
Fixes #1051
2022-09-25 10:22:55 +02:00
Rangi
5ad8a8c958
Warn when a duplicate CLI argument overrides a previous one ( #1053 )
...
Fixes #1050
2022-09-25 10:04:30 +02:00
Rangi and Eldred Habert
2827374505
Use STD*_FILENO constants ( #1055 )
...
These are defined in platform.h, but not consistently used
Co-authored-by: Eldred Habert <[email protected] >
2022-09-25 10:02:53 +02:00
Rangi and ISSOtm
b8385a50e3
Support -P/--preinclude to pre-INCLUDE a file ( #1043 )
...
Fixes #1041
Co-authored-by: ISSOtm <[email protected] >
2022-09-24 12:37:16 -04:00
Rangi and ISSOtm
98a6dffbca
Implement opt Q for fixed-point precision, and q literals (e.g. 12.34q8) ( #958 )
...
Fixes #957
Co-authored-by: ISSOtm <[email protected] >
2022-09-05 00:47:32 +02:00
Rangi
c01317e08d
Only increment the unique \@ ID when it is first used per context ( #1030 )
...
This avoids changes to generated `\@` labels just by adding or
removing macros or loops which do not actually use `\@`.
Fixes #1019
2022-08-31 17:45:21 -04:00
Rangi
4363ffcad4
Clarify the JR documentation based on its usage ( #1032 )
...
Fixes #1020
2022-08-28 15:42:04 -04:00
Rangi
14e6a79adc
Deprecate the old macro syntax ( #1025 )
...
Fixes #1011
2022-08-28 15:22:21 -04:00
Rangi
7a2ee26792
rgbasm -r sets the maximum recursion depth (#1026 )
...
Previously it set the minimum failure depth (off by one)
Fixes #978
2022-08-28 15:21:29 -04:00
Rangi and Eldred Habert
1a1f1365e6
Clarify the FOR loop documentation ( #1031 )
...
Clarify the FOR loop documentation
Fixes #1003
Co-authored-by: Eldred Habert <[email protected] >
2022-08-28 15:16:49 -04:00
Rangi
f97139461c
Clarify the linkerscript example ( #1028 )
...
* Clarify the linkerscript example
* Explain that backslash escape sequences are supported
Fixes #1006
2022-08-28 15:13:43 -04:00
Rangi
8207dc57b7
Add a -Wunmapped-char warning for characters not in the charmap ( #1023 )
...
Fixes #1022
2022-08-28 15:12:43 -04:00
Rangi
b9fd85470e
Reword docs now that SET is deprecated ( #946 )
...
- '=' constants are "variables" (not "mutable constants")
- EQU constants are "numeric constants" (not "immutable constants")
- EQUS constants are "string constants" (not "string equates")
- DS declarations are "static allocations" (not "variables")
2021-11-22 17:08:29 -05:00
Rangi
ec6d63bce3
Allow underscores in gfx literals ( #951 )
...
Fixes #950
2021-11-21 16:18:23 -05:00
Rangi
bdcef6f252
Refactor error reporting to simplify BSD-style err ( #949 )
2021-11-21 16:16:54 -05:00
Rangi
438963fb24
Remove unused #include "extern/utf8decoder.h" ( #940 )
...
Fixes #937
2021-11-12 23:37:19 +01:00
Rangi
0bb815edc0
Implement -Wnumeric-string[=0|1|2] ( #935 )
...
Fixes #934
2021-11-12 23:09:35 +01:00
Rangi
55a02981b5
Small updates to documentation wording ( #939 )
...
Fixes #936
2021-11-12 23:06:02 +01:00
Rangi
47442941b6
Support ! operator for condition codes ( #720 )
...
Fixes #719
2021-11-02 00:16:52 +01:00
Rangi and ISSOtm
11a6a81169
Implement -Wtruncation=level ( #931 )
...
* Implement -Wtruncation=level
-Wtruncation=0 is the same as the current -Wno-truncation.
-Wtruncation=2 is the same as the current -Wtruncation.
-Wtruncation=1 is the new default; it's less strict, allowing
N-bit values to be between -2**N and 2**N (exclusive).
* Implement generic "parametrized warning" system
* Test more `Wtruncation` variants
Co-authored-by: ISSOtm <[email protected] >
2021-10-31 17:47:31 -04:00
Rangi
9782f7d942
Factor out endCapture to go with startCapture ( #904 )
...
This also refactors `startCapture` to modify the
capture body as an argument.
2021-07-04 16:08:59 -04:00
Rangi
6d2db2ef64
make checkdiff does CI documentation checks (#900 )
...
Fixes #744
2021-06-24 17:49:08 -04:00
Rangi
5ad48851ed
Allow error messages for subsequent syntax errors ( #892 )
...
Fixes #891
2021-05-21 17:04:27 -04:00
Rangi
d17e9c663e
Update the tested commits of pokecrystal, pokered, and ucity ( #859 )
...
These are the latest commits as of today. The pokecrystal and
pokered commits use rgbds 0.5.0 features; ucity does not but
is compatible with it.
2021-04-26 10:47:32 -04:00
Rangi
52797b6f68
Implement SIZEOF("Section") and STARTOF("Section") ( #766 )
...
Updates the object file revision to 8
Fixes #765
2021-04-17 18:36:26 -04:00
Rangi
9923fa3eee
Fix expansions that start from the end of another expansion ( #839 )
...
Do not free an expansion until its offset is *past* its size.
This means potentially freeing a nested stack of expansions
all at once.
Fixes #696
2021-04-17 13:14:40 -04:00
Rangi
ee5da4468d
Fix interpolation/STRFMT overflow issues ( #838 )
...
Widths and fractional widths greater than 255 would overflow a
uint8_t and wrap around to smaller values.
Total formatted lengths greater than the avilable buffer size
would overflow it and potentially corrupt memory.
Fixes #830
Closes #831
2021-04-17 00:52:55 -04:00
Rangi
5c852c7651
Store the nested expansions starting from the deepest one ( #829 )
...
This shortens the lexer by 100 lines and simplifies
access to expansion contents, since it usually needs the
deepest one, not the top-level one.
Fixes #813
2021-04-16 09:54:13 -04:00
Rangi
57d966d6e0
Merge pull request #804 from Rangi42/normal-backslash
...
Backslash in normal lexer mode must be a line continuation
2021-03-26 13:33:11 -04:00
Rangi
0a0427afbb
windows-xbuild CI uses ubuntu-18.04 for its gcc 7.3.0 ( #784 )
...
GitHub's ubuntu-18.04 environment installs gcc 7.3.0.
The latest ubuntu-20.04 environment installs gcc 9.3.0.
Version 9.3.0 is incompatible with building libpng 1.6.37,
as of 2021-03-04.
Fixes #783
2021-03-05 11:27:12 -05:00
Rangi
c878ff8775
Report slack totals at the end of the .map file ( #781 )
...
Fixes #777
2021-03-05 08:53:27 -05:00
Rangi
e7d6ddf593
Fix linking tiny overlay files ( #755 )
...
* Fix compatibility of rgblink -O and -t
The -t "tiny mode" option makes ROM0 cover 0x8000 bytes,
not 0x4000. The -O "overlay" option fills areas uncovered
by sections with data from an overlay file. These needed
to cooperate so that the calculated uncovered overlay size
does not exceed the actual size of the ROM.
Fixes #754
* Print link test names like asm tests do
* Make the three test.sh scripts more similar
2021-02-24 23:04:51 -05:00
Rangi
5fd636ac4b
Implement floored / and divisor-sign % operators ( #745 )
...
Fixes #703
2021-02-21 16:14:44 -05:00
Rangi
a6d844a9a5
Add more test cases for IF, REPT, and MACRO ( #748 )
2021-02-19 19:34:21 -05:00
Rangi
d049ffc0f0
Handle string literals within macro arguments ( #685 )
...
Fixes #683 and #691
The lexer's raw mode for reading macro args already attempted
to handle semicolons inside string literals, versus outside ones
which start comments. This change reuses the same function for
reading string literals in normal and raw modes, also handling:
- Commas in strings versus between macro args
- Character escapes
- {Interpolations} and \1-\9 args inside vs. outside strings
- Multi-line string literals
Macro args now allow escaping '\', '"', and '\\'.
A consistent model for expanding macro args and interpolations,
within macro args, string literals, and normal context:
- "{S}" should always equal the contents of S
- "\1" should always act like quoting the value of \1
2021-02-16 22:44:25 -05:00
Rangi
8c0275480c
Allow ds to take multiple values to repeat for a count ( #725 )
...
Fixes #722
2021-02-16 22:01:23 -05:00
Rangi
2bc12447e2
Update rgbds(5) object file format documentation ( #740 )
2021-02-16 16:36:37 -05:00
Rangi
cb61da8842
-Wmacro-shift warns about shifting macro arguments too far ( #741 )
...
Fixes #735
2021-02-16 16:31:01 -05:00
Rangi
a70ecba06f
Implement PRINT and PRINTLN ( #672 )
...
Fixes #669
Closes #368
Closes #624
Deprecate PRINTT, PRINTV, PRINTI, and PRINTF
Default STRFMT("%f") to 5 fractional digits like "{f:}"
Any use of string formatting will share this default
2021-01-02 02:37:32 +01:00
Rangi
895ec5564d
Update mathematical functions ( #675 )
...
Document the existing `ROUND`, `CEIL`, and `FLOOR` functions
Also update the trig function docs for searchability
Implement `POW` and `LOG`
Addresses part of #675
Implement ** for integer exponents
** has higher precedence than -, like Python, so -3**4 == -(3**4) == 81
2021-01-02 01:39:20 +01:00
Rangi
7bb6f71f0b
Change FOREACH to FOR ( #680 )
2021-01-02 00:46:26 +01:00
Rangi
2a9d52871b
Make dbgPrint in lexer.c report the correct colNo ( #676 )
...
Fixes #656
2021-01-01 18:44:47 +01:00
Rangi
c0ce1da4c3
Implement STRFMT and more printf-like format specifiers for string interpolation ( #646 )
...
Fixes #570
Fixes #178
Use errors for inapplicable format spec flags instead of -Wstring-format
2020-12-29 22:53:15 +01:00
Rangi
6874f694e5
Implement FOREACH ( #658 )
...
This acts like `REPT` with a variable automatically
incremented across a range of values
Fixes #432
2020-12-29 21:30:42 +01:00