diff --git a/SourceGen/AsmGen/IGenerator.cs b/SourceGen/AsmGen/IGenerator.cs
index fc33913..1449acd 100644
--- a/SourceGen/AsmGen/IGenerator.cs
+++ b/SourceGen/AsmGen/IGenerator.cs
@@ -58,6 +58,9 @@ namespace SourceGen.AsmGen {
///
AssemblerQuirks Quirks { get; }
+ ///
+ /// Label localization object. Behavior is assembler-specific.
+ ///
LabelLocalizer Localizer { get; }
///
@@ -73,8 +76,7 @@ namespace SourceGen.AsmGen {
/// is primarily intended for undocumented ops, which don't have standard mnemonics,
/// and hence can vary between assemblers.
///
- ///
- ///
+ /// Opcode to replace.
/// Replacement mnemonic, an empty string if the original is fine, or
/// null if the op is not supported at all and should be emitted as hex.
string ReplaceMnemonic(OpDef op);
@@ -83,10 +85,10 @@ namespace SourceGen.AsmGen {
/// Generates an opcode/operand pair for a short sequence of bytes (1-4 bytes).
/// Does not produce any source output.
///
- ///
- ///
- ///
- ///
+ /// Offset to data.
+ /// Number of bytes (1-4).
+ /// Opcode mnemonic.
+ /// Formatted operand.
void GenerateShortSequence(int offset, int length, out string opcode, out string operand);
///
@@ -99,21 +101,21 @@ namespace SourceGen.AsmGen {
///
/// Outputs one or more lines of data for the specified offset.
///
- ///
+ /// Offset to data.
void OutputDataOp(int offset);
///
/// Outputs an equate directive. The numeric value is already formatted.
///
- ///
- ///
- ///
+ /// Symbol label.
+ /// Formatted value.
+ /// End-of-line comment.
void OutputEquDirective(string name, string valueStr, string comment);
///
/// Outputs a code origin directive.
///
- ///
+ /// 24-bit address.
void OutputOrgDirective(int address);
///
@@ -122,33 +124,47 @@ namespace SourceGen.AsmGen {
/// Merlin32 always sets both values (e.g. "MX %00"), cc65 sets each register
/// individually (".A16", ".I8"). We need to accommodate both styles.
///
- ///
- ///
- ///
- ///
- ///
+ /// Offset of change.
+ /// Previous value for M flag.
+ /// Previous value for X flag.
+ /// New value for M flag.
+ /// New value for X flag.
void OutputRegWidthDirective(int offset, int prevM, int prevX, int newM, int newX);
///
- /// Output a line of source code. All elements must be fully formatted. The
- /// items will be padded with spaces to fit specific column widths.
+ /// Output a line of source code. All elements must be fully formatted, except for
+ /// certain assembler-specific things like ':' on labels. The items will be padded
+ /// with spaces to fit specific column widths.
///
- ///
- ///
- ///
- ///
+ /// Optional label.
+ /// Opcode mnemonic.
+ /// Operand; may be empty.
+ /// Optional comment.
void OutputLine(string label, string opcode, string operand, string comment);
///
- /// Output a line of source code.
+ /// Output a line of source code. This will be output as-is.
///
- ///
+ /// Full text of line to outut.
void OutputLine(string fullLine);
}
public class AssemblerQuirks {
+ ///
+ /// Are the arguments to MVN/MVP reversed?
+ ///
public bool BlockMoveArgsReversed { get; set; }
+
+ ///
+ /// Does the assembler configure assembler widths based on SEP/REP, but doesn't
+ /// track the emulation bit?
+ ///
public bool TracksSepRepNotEmu { get; set; }
+
+ ///
+ /// Is the assembler unable to generate relative branches that wrap around banks?
+ /// (Note this affects long-distance BRLs that don't appear to wrap.)
+ ///
public bool NoPcRelBankWrap { get; set; }
}
}
\ No newline at end of file
diff --git a/SourceGen/RuntimeData/Apple/Cxxx-IO.sym65 b/SourceGen/RuntimeData/Apple/Cxxx-IO.sym65
index 55a6ad8..bd4ad3a 100644
--- a/SourceGen/RuntimeData/Apple/Cxxx-IO.sym65
+++ b/SourceGen/RuntimeData/Apple/Cxxx-IO.sym65
@@ -30,7 +30,7 @@ CLR80VID @ $C00C ;W 40 columns
SET80VID @ $C00D ;W 80 columns
CLRALTCHAR @ $C00E ;W primary char set
SETALTCHAR @ $C00F ;W alternate char set
-KBDSTRB @ $C010 ;WR keyboard strobe
+KBDSTRB @ $C010 ;RW keyboard strobe
RDLCBNK2 @ $C011 ;R status of selected $Dx bank
RDLCRAM @ $C012 ;R status of $Dx ROM / $Dx RAM
RDRAMRD @ $C013 ;R status of main/aux RAM reading
@@ -86,7 +86,7 @@ DIAGTYPE @ $C046 ;W self-test diagnostics
CLRVBLINT @ $C047 ;W clear VBL interrupt
CLRXYINT @ $C048 ;W clear XY interrupt
-EMUBYTE @ $C04F ;WR used by emulators to identify themselves
+EMUBYTE @ $C04F ;RW used by emulators to identify themselves
TXTCLR @ $C050 ;RW display graphics
TXTSET @ $C051 ;RW display text