Commit Graph
100 Commits
Author SHA1 Message Date
Antonio Niño Díaz 64585eebf6 Merge branch 'makedepend'
Signed-off-by: Antonio Niño Díaz <[email protected]>
2017-04-17 19:29:25 +01:00
Antonio Niño Díaz 1050acc290 Remove useless link in documentation
Signed-off-by: Antonio Niño Díaz <[email protected]>
2017-04-17 18:21:08 +01:00
Antonio Niño Díaz 466bb9ed0b Fix links in man pages
Signed-off-by: Antonio Niño Díaz <[email protected]>
2017-04-17 18:14:49 +01:00
Antonio Niño Díaz 83348100f3 Improve MinGW target of Makefile
It works now with an install of MinGW for both Win32 and Win64. It needs
libpng and zlib.

Signed-off-by: Antonio Niño Díaz <[email protected]>
2017-04-17 17:28:07 +01:00
Antonio Niño Díaz 57bf32f35a Point at the documentation from README
Signed-off-by: Antonio Niño Díaz <[email protected]>
2017-04-17 14:49:57 +01:00
Antonio Niño Díaz 0030e0371a Rename object file format description man page
Signed-off-by: Antonio Niño Díaz <[email protected]>
2017-04-17 14:15:46 +01:00
Antonio Niño Díaz 42400ec6a0 Fix links in HTML documentation
Signed-off-by: Antonio Niño Díaz <[email protected]>
2017-04-16 23:08:33 +01:00
Antonio Niño Díaz 2e793fb7dc Clean wwwman target of Makefile
The substitution of OpenBSD by General is not portable.

Signed-off-by: Antonio Niño Díaz <[email protected]>
2017-04-16 22:52:10 +01:00
Antonio Niño Díaz ac69e9863e Fix documentation in HTML format
For some reason, `No` looks weird in the HTML version of the docs.

Some other random fixes.

Tables in src/asm/rgbasm.5 are still broken in the HTML docs.

Signed-off-by: Antonio Niño Díaz <[email protected]>
2017-04-16 22:50:54 +01:00
Antonio Niño Díaz 59c065cf31 Merge pull request #165 from AntonioND/an/rgbasm-manual
Add documentation of rgbds to man pages and cleanup code

Signed-off-by: Antonio Niño Díaz <[email protected]>
2017-04-16 20:13:49 +01:00
Antonio Niño Díaz 729683fb1f Remove RPN_RANGECHECK
Leftover code from ASMotor.

Signed-off-by: Antonio Niño Díaz <[email protected]>
2017-04-16 19:55:00 +01:00
Antonio Niño Díaz ed6e4c4769 Clean object file format code and documentation
Remove unused code.

Signed-off-by: Antonio Niño Díaz <[email protected]>
2017-04-16 19:54:58 +01:00
Antonio Niño Díaz d92c284b85 Add documentation about the object file format
Copied from the HTML documentation and updated.

Signed-off-by: Antonio Niño Díaz <[email protected]>
2017-04-16 19:54:55 +01:00
Antonio Niño Díaz 26af7fcffe Add complete documentation of rgbds to man pages
Copied from the old html documentation and fixed where it was needed.

Signed-off-by: Antonio Niño Díaz <[email protected]>
2017-04-16 19:54:50 +01:00
Antonio Niño Díaz f7f697c267 Fix parsing of first line of included linkerscripts
When including a linkerscript from a parent one, the lexer didn't
include a newline character because the INCLUDE command was handled
before reaching the newline. This behaviour is needed to parse the last
line of a linkerscript correctly (it doesn't have a newline character).

However, this meant that when the included file was being parsed, the
first line was considered a continuation of the last line of the parent
script (the INCLUDE command), which means that the first line of an
included linkerscript could only contain a comment (or nothing at all).

This patch adds a newline character to the buffer used by the lexer so
that the parser will receive a newline and it will handle the first line
of the included file as expected.

Signed-off-by: Antonio Niño Díaz <[email protected]>
2017-04-14 17:07:01 +01:00
Antonio Niño Díaz 554b5292de Rename ISO 8601 timestamp defines
The previous names were ridiculously long.

Signed-off-by: Antonio Niño Díaz <[email protected]>
2017-04-12 22:19:53 +01:00
Antonio Niño Díaz a7393d7e45 Merge pull request #163 from AntonioND/an/iso-8601
Add equates with ISO 8601 date and time

Signed-off-by: Antonio Niño Díaz <[email protected]>
2017-04-10 23:34:12 +01:00
Antonio Niño Díaz fe9e4f0583 Merge pull request #169 from AntonioND/an/travis-test
Add Travis CI configuration file

Signed-off-by: Antonio Niño Díaz <[email protected]>
2017-04-10 22:59:10 +01:00
Antonio Niño Díaz 362aea22bd Fix conflict in yacc
`LD HL,n16` and `LD SP,n16` are handled in a different rule as
`LD r16,n16`, but they are also part of that rule.

This patch converts the `LD r16,n16` rule into two rules, one for doing
`LD BC,n16` and other one for `LD DE,n16`.

Signed-off-by: Antonio Niño Díaz <[email protected]>
2017-04-10 22:57:05 +01:00
Antonio Niño Díaz 9bc6083e49 Add Travis CI configuration file
Signed-off-by: Antonio Niño Díaz <[email protected]>
2017-04-10 22:10:26 +01:00
Antonio Niño Díaz 2b5ad9dc38 Make test scripts return error code
Make them executable.

Signed-off-by: Antonio Niño Díaz <[email protected]>
2017-04-10 22:10:10 +01:00
Antonio Niño Díaz 5679c7066b Restore behaviour of option -w and add option -d
rgblink option -w has been restored to its previous behaviour: make WRAM
a continous section instead of spliting it into WRAM0 and WRAMX.

To enable DMG mode, option -d has to be used instead. This option
automatically enables -w.

Update tests.

Signed-off-by: Antonio Niño Díaz <[email protected]>
2017-04-10 20:03:52 +01:00
Antonio Niño Díaz 4395ed893a Merge pull request #168 from Ben10do/fix-implicit-yyparse
Fix implicit declaration of yyparse()

Signed-off-by: Antonio Niño Díaz <[email protected]>
2017-04-10 19:51:28 +01:00
Antonio Niño Díaz 7097b9885e Fix clean target of the Makefile
Two html documentation files weren't cleaned as expected.

Signed-off-by: Antonio Niño Díaz <[email protected]>
2017-04-09 22:06:49 +01:00
Antonio Niño Díaz f2c207cb44 Remove EX instruction
This is leftover code from ASMotor.

Signed-off-by: Antonio Niño Díaz <[email protected]>
2017-04-09 21:51:30 +01:00
Antonio Niño Díaz be50f2d302 Remove unused patch enum element
If the next release is going to break compatibility with older object
file formats it doesn't make sense to keep this.

Signed-off-by: Antonio Niño Díaz <[email protected]>
2017-04-09 21:25:20 +01:00
Antonio Niño Díaz fa767f3228 Merge pull request #161 from AntonioND/an/linkerscript-include
Add support for including files in linkerscript

Signed-off-by: Antonio Niño Díaz <[email protected]>
2017-04-09 17:19:13 +01:00
Antonio Niño Díaz 5cfa15f963 Add equates with ISO 8601 date and time
Added `__TIMESTAMP_ISO_8601_LOCAL__` and `__TIMESTAMP_ISO_8601_UTC__`,
with the correct ISO 8601 representation of time and date from years to
seconds (including local timezone in the local time string).

Also, if the current time cannot be obtained from the OS, it will output
a warning and the time strings will be filled with '?' instead of
numbers and characters.

Signed-off-by: Antonio Niño Díaz <[email protected]>
2017-04-09 16:49:34 +01:00
Antonio Niño Díaz 23584a584f Fix __FILE__, __TIME__ and __DATE__
If they don't have quotes when passed to sym_AddString() they can't be
used at all by the assembler. I suppose nobody actually used them, they
seem to have been broken forever.

Added a comment to the function to say how to use it correctly for
strings.

Signed-off-by: Antonio Niño Díaz <[email protected]>
2017-04-09 15:40:06 +01:00
Antonio Niño Díaz 53fa608161 Deprecate IMPORT keyword
IMPORT is simply useless, any symbol that isn't found in the current
file is automatically flagged as imported symbol.

Signed-off-by: Antonio Niño Díaz <[email protected]>
2017-04-08 18:47:10 +01:00
Antonio Niño Díaz 1154a173cc Merge pull request #153 from AntonioND/an/opcode-ref
Add GBZ80 opcode reference man page

Signed-off-by: Antonio Niño Díaz <[email protected]>
2017-04-08 18:43:21 +01:00
Antonio Niño Díaz ca3e55cc45 Update remaining dates in man pages
Signed-off-by: Antonio Niño Díaz <[email protected]>
2017-04-08 18:18:59 +01:00
Antonio Niño Díaz 206275df57 Add support for including files in linkerscript
Files can now be included with the following syntax:

    INCLUDE "path.link"

The maximum include depth is 5.

Fixed linkerscript parser and lexer error messages so that they are more
informative (show file and line of the error).

Man page updated.

Signed-off-by: Antonio Niño Díaz <[email protected]>
2017-04-08 18:10:24 +01:00
Antonio Niño Díaz 3d8396b86f Remove progname variable
The error message shouldn't specify the name of the binary, that's
supposed to be known by the caller.

Update test reference outputs.

Signed-off-by: Antonio Niño Díaz <[email protected]>
2017-04-08 18:10:14 +01:00
Antonio Niño Díaz 77546e9c58 Make WARN output a warning instead of an error
This is the expected behaviour.

Signed-off-by: Antonio Niño Díaz <[email protected]>
2017-04-08 18:09:02 +01:00
Antonio Niño Díaz 540f8597d4 Update history in man pages
Fix format in LICENSE file.

Signed-off-by: Antonio Niño Díaz <[email protected]>
2017-04-08 18:08:57 +01:00
Antonio Niño Díaz e3109af2f8 Rename OPT_CONTWRAM to OPT_DMG_MODE
Now, it will also make sure that VRAM bank 1 isn't used.

Man page updated.

Tests added.

Signed-off-by: Antonio Niño Díaz <[email protected]>
2017-04-08 18:08:51 +01:00
Antonio Niño Díaz cf99f33dd6 Fix reference list of hex codes
Fix tabulations.

Add missing byte to STOP.

Add comments about where HL+ and HL- are used.

Signed-off-by: Antonio Niño Díaz <[email protected]>
2017-04-08 17:43:06 +01:00
Antonio Niño Díaz 0b6438ae0a Add GBZ80 opcode reference man page
Signed-off-by: Antonio Niño Díaz <[email protected]>
2017-04-08 17:38:04 +01:00
AntonioND 928b347dfc Merge pull request #158 from Ben10do/remove-legacy-object-files
Remove support for legacy object files
2017-04-08 13:30:15 +01:00
AntonioND ce21cfad4e Merge pull request #160 from AntonioND/an/high-low
Implement HIGH() and LOW() operators
2017-04-08 13:30:10 +01:00
Antonio Niño Díaz dda3a066be Add test for HIGH() and LOW()
It compares the results of the operators with the expected result if
doing the same thing manually.

Signed-off-by: Antonio Niño Díaz <[email protected]>
2017-04-06 22:40:38 +01:00
Antonio Niño Díaz a6a47ff66d Implement HIGH() and LOW() operators
They work with the 16-bit registers BC, DE and HL, returning the
corresponding 8-bit register. HIGH() works with AF as well, returning A.

They also work with any kind of constant or symbol, generating a RPN
patch in the object file if the value is not defined at assembly time.

They work with macro arguments as well.

Signed-off-by: Antonio Niño Díaz <[email protected]>
2017-04-06 22:40:34 +01:00
AntonioND 07861b3b4a Output warning with deprecated section types
Code that uses keywords HOME, DATA, CODE or BSS generates warnings.

Signed-off-by: AntonioND <[email protected]>
2017-04-06 20:30:21 +01:00
AntonioND 24439003f3 Remove newlines from warning message strings
Signed-off-by: AntonioND <[email protected]>
2017-04-06 20:30:21 +01:00
AntonioND 3c43cc14d9 Remove unused code
Signed-off-by: AntonioND <[email protected]>
2017-04-06 20:30:21 +01:00
AntonioND 52081f32f0 Add flag -w to rgbasm to disable warnings
A lot of warnings are being added (and more will come) so it makes sense
to be able to disable them in legacy source that generates warnings but
is otherwise correct.

Signed-off-by: AntonioND <[email protected]>
2017-04-06 20:30:21 +01:00
Antonio Niño Díaz 2783a36b17 Add missing license header to man page
Signed-off-by: Antonio Niño Díaz <[email protected]>
2017-04-06 00:00:56 +01:00
AntonioND 0f3b708dce Merge pull request #157 from AntonioND/an/error-undef-diff
Output error message if diff of labels not defined
2017-04-05 23:08:37 +01:00
AntonioND 7eb9101d43 Update README and LICENSE files
Add history of RGBDS and original license.

Signed-off-by: AntonioND <[email protected]>
2017-04-05 01:24:36 +01:00
AntonioND 7e107ab41a Update references of linker tests
Signed-off-by: AntonioND <[email protected]>
2017-04-04 23:13:42 +01:00
AntonioND a009a372c5 Remove noyywrap from src/link/lexer.l
Workaround for flex version 2.6.3.

Signed-off-by: AntonioND <[email protected]>
2017-04-04 23:13:36 +01:00
AntonioND 5f299bfe6c Fix whitespace
Replace spaces by tabs for consistency. The rest of the codebase uses
tabs, so the linkerscript parser has to change.

Removed trailing tabs in all codebase.

Signed-off-by: AntonioND <[email protected]>
2017-04-04 22:14:46 +01:00
AntonioND 07cc4fb8fd Remove warnings when calculating banks
getsymbank() is used for more things than just when the code explicitly
has a BANK() operator, which causes a lot of noise when building code
that has more than one object file and places variables on HRAM or OAM.

Signed-off-by: AntonioND <[email protected]>
2017-04-04 21:56:22 +01:00
AntonioND 720ae59af8 Merge pull request #154 from AntonioND/an/tiny-contwram
Make the options -t and -w of rgblink consistent
2017-04-04 21:42:20 +01:00
AntonioND e63e801e9c Output error message if diff of labels not defined
When calculating the difference of addresses between two labels, for it
to be defined, either:

- Both of them must have their absolute address defined.
- They belong to the same section, so their relative addresses are
  compatible.

This patch adds a check to make sure that any other case is detected so
that the programmer can correct the code.

This applies to rgbasm. The difference of labels can be used, for
example, as argument of DS. The linker can't resize sections, which
means that the final value must be defined when creating the object
file.

Signed-off-by: AntonioND <[email protected]>
2017-04-04 21:40:59 +01:00
AntonioND 2abdc9c59d Add whitespace to error and warning messages
Test reference output updated.

Signed-off-by: AntonioND <[email protected]>
2017-04-03 23:46:19 +01:00
AntonioND be200593d6 Fix typo in README
This is the correct name since 2016.

Signed-off-by: AntonioND <[email protected]>
2017-04-03 23:43:32 +01:00
AntonioND 43228f16f0 Improve README
Signed-off-by: AntonioND <[email protected]>
2017-04-03 22:17:20 +01:00
AntonioND f14b061ea7 Add script to update references of rgbasm tests
Update test references.

Signed-off-by: AntonioND <[email protected]>
2017-04-03 21:36:42 +01:00
AntonioND f431b384a2 Add tests for rgblink options -t and -w
Signed-off-by: AntonioND <[email protected]>
2017-04-03 21:29:22 +01:00
AntonioND 7e3720b627 Make options -t and -w consistent
Instead of converting from ROMX to ROM0 with -t and preventing the use
of WRAMX at all with -w, make each option prohibit the type of section
they affect.

This is a good idea because it can prevent a developer from making
mistakes when switching from using the options to not using them.
Generally, a change from using one single bank to multiple banks is
something that will take a lot of effort, and forgetting sections in
ROM0 or WRAM0 will only make the free space of those areas to be
reduced (and maybe prevent compilation), but it won't cause any problems
because of a forgotten bank swap in the code.

Signed-off-by: AntonioND <[email protected]>
2017-04-03 21:22:16 +01:00
AntonioND e9ed81074b Rename OPT_SMALL to OPT_TINY
This way it is easier to identify the flag passed to the binary (-t).

Signed-off-by: AntonioND <[email protected]>
2017-04-03 21:22:16 +01:00
AntonioND e16af28676 Automate and improve rgblink test
Check all sections when testing BANK().

Add scripts to verify the tests and update the reference if needed.

Signed-off-by: AntonioND <[email protected]>
2017-04-03 21:19:39 +01:00
AntonioND 25be5c6561 Improve error and warning output
Improve error messages generated by `errx()`, `warnx()` and similar.

Set `progname` to a static string with the name of the program so that
the path of the binary isn't included in error messages.

Signed-off-by: AntonioND <[email protected]>
2017-04-03 21:16:43 +01:00
AntonioND e4b4e427f1 Return bank 0 for labels in HRAM
Instead of returning the internal representation of the linker, return
0 when using BANK() on a label in HRAM.

Also, generate a warning when calculating the bank of labels in OAM
and HRAM, as there is no valid reason for doing it, so it's likely a
programming mistake.

Signed-off-by: AntonioND <[email protected]>
2017-04-03 21:15:14 +01:00
AntonioND 2138bb46fd Fix generation of html man page in Makefile
Signed-off-by: AntonioND <[email protected]>
2017-04-02 21:08:53 +01:00
AntonioND ec5eb4f9ff Merge pull request #152 from Ben10do/update-readme-for-mac
Update the README’s Mac-specific instructions
2017-04-02 18:08:47 +01:00
AntonioND e50e3e5a23 Remove trailing whitespace
Signed-off-by: AntonioND <[email protected]>
2017-04-02 17:46:14 +01:00
AntonioND f63339472e Update reference output of tests
Due to recent changes, lots of tests generated a slightly different
error output.

- bank-noexist : This test doesn't generate any error output now as
  unknown labels are left for the linker to resolve.

- null-in-macro : This test used to crash. Now, the parser verifies that
  a MACRO ends in ENDM, generating an error message if not.

Signed-off-by: AntonioND <[email protected]>
2017-04-02 17:18:08 +01:00
AntonioND 43fd1ee024 Fix some signed/unsigned comparison warnings
Signed-off-by: AntonioND <[email protected]>
2017-04-02 17:08:12 +01:00
AntonioND d61a0a8a8f Cleanup Makefile
Signed-off-by: AntonioND <[email protected]>
2017-04-02 17:07:40 +01:00
AntonioND ec44b554e8 Merge pull request #150 from Ben10do/deprecation-positions
Add a warning() function, similiar to other error handlers
2017-04-02 17:03:03 +01:00
AntonioND 01a710a47d Remove Zero Page linker patch RPN_PCEZP
This patch isn't used because it's meant to be an optimization for
labels in the memory region 0x2000-0x20FF. That memory region doesn't
have anything special on the Game Boy, and there are no instructions
optimized to read or write from there, so it was probably meant for
another hardware that was supported by ASMotor in the past.

Signed-off-by: AntonioND <[email protected]>
2017-04-02 16:19:45 +01:00
AntonioND 53842cd07d Create man5 folder when installing
`make install` would blindly try to copy `rgblink.5` even if the
destination folder didn't exist.

Signed-off-by: AntonioND <[email protected]>
2017-04-02 00:40:35 +01:00
AntonioND 85ff75d2d3 Merge pull request #146 from AntonioND/an/same-name
Prohibit sections from having the same name
2017-04-02 00:36:28 +01:00
AntonioND adef2e18cc Fix bank assignments from linkerscript
Even though the bank number was read from the linkerscript and the
linker verified that each section could be mapped in the final rom, the
bank number was never actually set by the linkerscript parser.

Signed-off-by: AntonioND <[email protected]>
2017-04-02 00:22:37 +01:00
AntonioND 5ba8405dfa Prohibit sections from having the same name
To make the behaviour of the linkerscript consistent, every section read
from an object file must have an unique name. This is needed as the
linkerscript uses the name of sections to place them and it expects
every section to have a different name.

This doesn't break compatibility with the old behaviour that allowed to
continue sections if they had the same name, bank number and starting
address. That's still allowed because `rgbasm` outputs a single section
if this functionality is used, it is transparent to `rgblink`.

Signed-off-by: AntonioND <[email protected]>
2017-04-01 15:33:17 +01:00
AntonioND f0d4750ebc Fix rgblink.5 man page installation path
The man page rgblink.5 was installed in the `man1` folder instead of
`man5` as expected.
2017-04-01 15:06:26 +01:00
AntonioND eed098ac8e Merge pull request #140 from AntonioND/an/linkerscript
Implement linkerscript
2017-04-01 10:33:49 +01:00
AntonioND 64dbcc0912 Update README.md
Inform about the actual dependencies.

Signed-off-by: AntonioND <[email protected]>
2017-03-28 22:19:50 +01:00
AntonioND 5947ca10dc Document linkerscript format in manpage
Signed-off-by: AntonioND <[email protected]>
2017-03-28 22:19:50 +01:00
AntonioND d1ed4fbded Use linkerscript parser in rgblink
Signed-off-by: AntonioND <[email protected]>
2017-03-28 22:19:50 +01:00
AntonioND 22d4a10cb6 Implement linkerscript parser
Signed-off-by: AntonioND <[email protected]>
2017-03-28 22:19:45 +01:00
AntonioND dfb99618f5 Document missing build options
Signed-off-by: AntonioND <[email protected]>
2017-03-28 19:37:18 +01:00
AntonioND 6b21e02c95 Merge pull request #143 from Sanqui/parametrize-makefile
Parametrize install arguments in Makefile
2017-03-28 12:49:23 +01:00
AntonioND 8eb1a42e31 Merge pull request #141 from AntonioND/an/deprecate-jp-hl
Declare some opcodes obsolete
2017-03-24 23:23:43 +00:00
AntonioND c51aac0c20 Declare some opcodes obsolete
They are still working, they just output a warning.

`jp [hl]` is confusing as it may be thought that the CPU reads the value
pointed by hl and jumps to it.

`ldi a,hl` and `ldd a,hl` are also confusing as they load from the
address pointed by `hl`, the correct mnemonic should say `[hl]`.

Signed-off-by: AntonioND <[email protected]>
2017-03-24 23:22:30 +00:00
AntonioND 6feaba2343 Document -w option of rgblink
This option hadn't been added to the manpage.

Signed-off-by: AntonioND <[email protected]>
2017-03-23 22:12:06 +00:00
AntonioND 0867476bde Allow ',' to be escaped in string literals
It should only be needed for macro arguments, added to string parsing
function as well for consistency.
2017-03-19 00:05:50 +00:00
AntonioND fa962b9470 Merge pull request #139 from chastai/escape-cb
Allow { and } to be escaped in string literals
2017-03-18 23:54:59 +00:00
AntonioND 317b206fa8 Improve map file output
Print the name of each section along with the size, base and end
addresses. If a section is empty, don't print the end address, as it
can overflow if the base address is 0.

Signed-off-by: AntonioND <[email protected]>
2017-03-15 23:52:56 +00:00
AntonioND 469e3e7c86 Merge branch 'contiguous-wram' of git://github.com/TwitchPlaysPokemon/rgbds into TwitchPlaysPokemon-contiguous-wram 2017-03-15 21:00:06 +00:00
AntonioND 9193710ff9 Merge pull request #131 from Sanqui/overlay
Add overlay to rgblink
2017-03-15 20:42:32 +00:00
AntonioND 947d767c64 Merge pull request #135 from Ben10do/improve-assign-error-messages
Improve assignment error messages
2017-03-12 17:06:54 +00:00
AntonioND 82cf3eb48f Merge pull request #134 from Ben10do/oam-sections
Add support for OAM Sections
2017-03-11 12:18:40 +00:00
AntonioND 4f86a12539 Merge pull request #125 from Ben10do/section-alignment
Implement byte alignment for data
2017-03-02 09:17:46 +00:00
AntonioND 7b8d4de35c Merge pull request #16 from yenatch/eval-rpn-bank
rgbasm: Evaluate BANK() arguments to verify they exist.
2017-02-27 21:21:45 +00:00
AntonioND c7fe281c86 Merge pull request #114 from Ben10do/fix-asm-tests
Fix issues in rgbasm raised by the tests
2017-02-27 21:09:04 +00:00
AntonioND fa8f25a4de Merge pull request #123 from Ben10do/deduplicate-e-doc
Remove duplicate documentation of -E
2017-02-27 20:35:13 +00:00