mirror of
https://github.com/fadden/6502bench.git
synced 2026-04-20 04:16:47 +00:00
Optionally treat BRKs as two-byte instructions
Early data sheets listed BRK as one byte, but RTI after a BRK skips the following byte, effectively making BRK a 2-byte instruction. Sometimes, such as when diassembling Apple /// SOS code, it's handy to treat it that way explicitly. This change makes two-byte BRKs optional, controlled by a checkbox in the project settings. In the system definitions it defaults to true for Apple ///, false for all others. ACME doesn't allow BRK to have an arg, and cc65 only allows it for 65816 code (?), so it's emitted as a hex blob for those assemblers. Anyone wishing to target those assemblers should stick to 1-byte mode. Extension scripts have to switch between formatting one byte of inline data and formatting an instruction with a one-byte operand. A helper function has been added to the plugin Util class. To get some regression test coverage, 2022-extension-scripts has been configured to use two-byte BRK. Also, added/corrected some SOS constants. See also issue #44.
This commit is contained in:
@@ -188,6 +188,7 @@ namespace SourceGen {
|
||||
public class SerProjectProperties {
|
||||
public string CpuName { get; set; }
|
||||
public bool IncludeUndocumentedInstr { get; set; }
|
||||
public bool TwoByteBrk { get; set; }
|
||||
public int EntryFlags { get; set; }
|
||||
public string AutoLabelStyle { get; set; }
|
||||
public SerAnalysisParameters AnalysisParams { get; set; }
|
||||
@@ -199,6 +200,7 @@ namespace SourceGen {
|
||||
public SerProjectProperties(ProjectProperties props) {
|
||||
CpuName = Asm65.CpuDef.GetCpuNameFromType(props.CpuType);
|
||||
IncludeUndocumentedInstr = props.IncludeUndocumentedInstr;
|
||||
TwoByteBrk = props.TwoByteBrk;
|
||||
EntryFlags = props.EntryFlags.AsInt;
|
||||
AutoLabelStyle = props.AutoLabelStyle.ToString();
|
||||
AnalysisParams = new SerAnalysisParameters(props.AnalysisParams);
|
||||
@@ -495,6 +497,7 @@ namespace SourceGen {
|
||||
// Deserialize ProjectProperties: misc items.
|
||||
proj.ProjectProps.CpuType = Asm65.CpuDef.GetCpuTypeFromName(spf.ProjectProps.CpuName);
|
||||
proj.ProjectProps.IncludeUndocumentedInstr = spf.ProjectProps.IncludeUndocumentedInstr;
|
||||
proj.ProjectProps.TwoByteBrk = spf.ProjectProps.TwoByteBrk;
|
||||
proj.ProjectProps.EntryFlags = Asm65.StatusFlags.FromInt(spf.ProjectProps.EntryFlags);
|
||||
if (Enum.TryParse<AutoLabel.Style>(spf.ProjectProps.AutoLabelStyle,
|
||||
out AutoLabel.Style als)) {
|
||||
|
||||
Reference in New Issue
Block a user