From 3cb1596d9078fb23c313fd263c56accc1aa04a7e Mon Sep 17 00:00:00 2001 From: Andy McFadden Date: Tue, 30 Oct 2018 15:42:13 -0700 Subject: [PATCH] Add more bugs & quirks --- SourceGen/RuntimeData/Help/codegen.html | 8 ++++++++ SourceGen/RuntimeData/Help/editors.html | 6 ++++-- SourceGen/RuntimeData/Help/intro.html | 5 +++++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/SourceGen/RuntimeData/Help/codegen.html b/SourceGen/RuntimeData/Help/codegen.html index 7f4021b..f54096e 100644 --- a/SourceGen/RuntimeData/Help/codegen.html +++ b/SourceGen/RuntimeData/Help/codegen.html @@ -166,6 +166,7 @@ code, but also needs to know how to handle the corner cases.

  • PC relative branches don't wrap around at bank boundaries.
  • BRK <arg> is assembled to opcode $05 rather than $00.
  • WDM is not supported.
  • +
  • Source file names must not have spaces in them on Windows.
  • Quirks:

    @@ -179,6 +180,11 @@ code, but also needs to know how to handle the corner cases.

    SourceGen currently generates require parenthesis.)
  • Undocumented opcodes: SBX ($cb) uses the mnemonic AXS. All other opcodes match up with the "unintended opcodes" document.
  • +
  • ca65 is implemented as a single-pass assembler, so label widths + can't always be known in time. For example, if you .ORG $0000 after + the point where the labels are used, the assembler will already have + generated them as absolute values. Width disambiguation must be applied + to instructions that aren't ambiguous to multi-pass assemblers.
  • @@ -190,6 +196,8 @@ code, but also needs to know how to handle the corner cases.

    Quirks:

    diff --git a/SourceGen/RuntimeData/Help/editors.html b/SourceGen/RuntimeData/Help/editors.html index cc2a58f..1b0abba 100644 --- a/SourceGen/RuntimeData/Help/editors.html +++ b/SourceGen/RuntimeData/Help/editors.html @@ -39,8 +39,10 @@ is set to 65816.

    Edit Label

    Sets or clears a label at the selected offset. The label must have -the proper form, and not have the same name as another symbol. If -you edit an auto-generated label you will be required to change the name.

    +the +proper form, and not have the same +name as another symbol. If you edit an auto-generated label you will +be required to change the name.

    The label may be marked as local, global, or global and exported. Local labels may be modified by the assembly code generator to have a more convenient form, such as a local loop identifier. Global labels are diff --git a/SourceGen/RuntimeData/Help/intro.html b/SourceGen/RuntimeData/Help/intro.html index a3d42b7..eaa252b 100644 --- a/SourceGen/RuntimeData/Help/intro.html +++ b/SourceGen/RuntimeData/Help/intro.html @@ -378,6 +378,11 @@ with most assemblers:

    Label comparisons are case-sensitive, as is customary for programming languages.

    +

    Some assemblers restrict the set of valid labels further. For example, +64tass uses a leading underscore to indicate a local label, and reserves +a double leading underscore (e.g. __label) for its own +purposes. In such cases, the label will be modified to comply with the +target assembler syntax.

    Platform symbols are defined in platform symbol files. These are named with a ".sym65" extension, and have a fairly straightforward