Commit Graph

20 Commits

Author SHA1 Message Date
ISSOtm
4877bb783c Add more tests for unionized sections + fix bugs
Implementing those tests found a few bugs... oops
2020-03-22 11:14:04 +01:00
ISSOtm
cb52ae0f26 Implement unionized sections in RGBASM
This touched a lot more code than initially expected, for two reasons.

First, this broke a big RGBASM assumption: that sections are always being
written to at their end. This plus other problems required touching
basically the entirety of `section.c`.

Second, I tried different solutions to solve the above problem, and along
the way I cleaned up many things around. (I believe that keeping this to
"cleanup" commits yields subpar results, and since it's boring they get
postponed anyways.)

RGBLINK support still needs to be added, but this will come next.
2020-03-22 11:06:17 +01:00
ISSOtm
af22cf182b Simplify out_PCRelByte by using PC 2020-03-20 20:22:19 +01:00
ISSOtm
5a0fcda4c8 Prevent POPS within LOAD blocks 2020-03-20 18:57:37 +01:00
ISSOtm
deb91f679d Reset symbol scope on every section change 2020-03-20 17:59:47 +01:00
ISSOtm
fb5e768142 Prevent using LOAD blocks outide code sections 2020-03-20 16:37:10 +01:00
ISSOtm
5bca1172ff Fix section continuation when only one bank exists 2020-03-19 23:07:07 +01:00
ISSOtm
0d31afaff8 Correct four code style issues 2020-03-07 18:09:00 +01:00
ISSOtm
4cc24f4369 Add ds cnt, byte syntax
As suggested by https://github.com/rednex/rgbds/issues/350#issuecomment-498030458
The order `count` then `byte` was decided after some discussion:
- First argument consistent with single-arg syntax
- Intuitive at least to some people other than myself
- Consistent with other assemblers, at least ca65
2020-02-23 22:43:50 +01:00
ISSOtm
cdabc057a0 Allow unseekable files with INCBIN
Go figure the use case, but the feature is there now
2020-02-10 03:39:09 +01:00
ISSOtm
eb0d75711a Implement LOAD/ENDL blocks
Basically implements and closes rednex#274.
2020-02-10 03:39:09 +01:00
ISSOtm
d9c1b66931 Deduplicate value output function code 2020-02-10 03:37:43 +01:00
ISSOtm
2f60e0a59e Use meaningful types for byte output functions 2020-02-10 03:36:51 +01:00
ISSOtm
ffe9e92b48 Skip double-checking overflow in byte output 2020-02-10 03:36:51 +01:00
ISSOtm
aa90a53f34 Move 1-byte overflow check to out_AbsByte
This check is already performed in bulk by all functions calling it except
`out_AbsByte`, adding extra overhead to those.
2020-02-10 03:36:51 +01:00
ISSOtm
598c923506 Use callback for PC's value
This causes it to auto-update whenever the current section's attributes are
updated, simplifying the code and eliminating redundancy.
This should also overall reduce overhead (one extra function call on each
PC evaluation, but less bookkeeping for each byte output)
2020-02-10 03:36:51 +01:00
ISSOtm
8c4b473d6f Add more checks to section creation in RGBASM
Fixes rednex#471, but also backports a couple more checks from RGBLINK
2020-02-10 03:35:55 +01:00
ISSOtm
a4fe274c25 Unify all section declarations 2020-02-10 03:35:55 +01:00
ISSOtm
34597ce6a0 Mark some section functions as const 2020-02-10 03:34:58 +01:00
ISSOtm
d0ec35628f Split section management into its own file 2020-02-10 03:34:58 +01:00