1
0
mirror of https://github.com/fadden/6502bench.git synced 2024-05-31 22:41:37 +00:00
6502bench/SourceGen/RuntimeData/SystemDefs.json
Andy McFadden dfd5bcab1b 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.
2019-10-09 14:55:56 -07:00

311 lines
7.3 KiB
JSON

{
"_copyright" : "Copyright 2018 faddenSoft. All rights reserved.",
"_license" : "Apache 2.0; see LICENSE.txt for details",
"Contents" : "6502bench SourceGen sysdef v1",
"Defs" : [
{
"Name" : "Apple //e",
"GroupName" : "Apple",
"Cpu" : "65C02",
"Speed" : "1.023",
"Description" : "Deluxe 8-bit Apple II system, configured for ProDOS.",
"SymbolFiles" : [
"RT:Apple/F8-ROM.sym65",
"RT:Apple/Cxxx-IO.sym65",
"RT:Apple/ProDOS8.sym65"
],
"ExtensionScripts" : [
"RT:Apple/ProDOS8.cs"
],
"Parameters" : {
"load-address":"0x2000"
}
},
{
"Name" : "Apple ][+",
"GroupName" : "Apple",
"Cpu" : "6502",
"Speed" : "1.023",
"Description" : "Early 8-bit Apple II system, configured for DOS 3.3.",
"SymbolFiles" : [
"RT:Apple/F8-ROM.sym65",
"RT:Apple/Cxxx-IO.sym65",
"RT:Apple/DOS33.sym65"
],
"ExtensionScripts" : [
],
"Parameters" : {
"load-address":"0x2000"
}
},
{
"Name" : "Apple IIgs (P8)",
"GroupName" : "Apple",
"Cpu" : "65816",
"Speed" : "2.8",
"Description" : "Apple IIgs, configured for ProDOS 8.",
"SymbolFiles" : [
"RT:Apple/F8-ROM.sym65",
"RT:Apple/Cxxx-IO.sym65",
"RT:Apple/ProDOS8.sym65",
"RT:Apple/IIgs-ROM.sym65"
],
"ExtensionScripts" : [
"RT:Apple/ProDOS8.cs"
],
"Parameters" : {
"load-address":"0x2000",
"entry-flags":"emulation"
}
},
{
"Name" : "Apple IIgs (GS/OS)",
"GroupName" : "Apple",
"Cpu" : "65816",
"Speed" : "2.8",
"Description" : "Apple IIgs, configured for GS/OS.",
"SymbolFiles" : [
"RT:Apple/Cxxx-IO.sym65",
"RT:Apple/IIgs-ROM.sym65",
"RT:Apple/GSOS.sym65"
],
"ExtensionScripts" : [
"RT:Apple/GSOS.cs",
"RT:Apple/IIgs-Toolbox.cs"
],
"Parameters" : {
"load-address":"0x2000",
"entry-flags":"native-long"
}
},
{
"Name" : "Apple ///",
"GroupName" : "Apple",
"Cpu" : "6502",
"Speed" : "2",
"Description" : "Apple /// system, configured for SOS.",
"SymbolFiles" : [
"RT:Apple/A3-ROM.sym65",
"RT:Apple/A3-IO.sym65",
"RT:Apple/SOS.sym65"
],
"ExtensionScripts" : [
"RT:Apple/SOS.cs"
],
"Parameters" : {
"load-address":"0x2000",
"two-byte-brk":"true"
}
},
{
"Name" : "Atari 800",
"GroupName" : "Atari",
"Cpu" : "6502B",
"Speed" : "1.79",
"Description" : "Atari 800 [placeholder].",
"SymbolFiles" : [
],
"ExtensionScripts" : [
],
"Parameters" : {
}
},
{
"Name" : "Atari 2600",
"GroupName" : "Atari",
"Cpu" : "6507",
"Speed" : "1.19",
"Description" : "Atari 2600 video game system.",
"SymbolFiles" : [
"RT:Atari/2600.sym65"
],
"ExtensionScripts" : [
],
"Parameters" : {
"load-address":"0xf000"
}
},
{
"Name" : "Atari 5200",
"GroupName" : "Atari",
"Cpu" : "6502C",
"Speed" : "1.79",
"Description" : "Atari 5200 [placeholder].",
"SymbolFiles" : [
],
"ExtensionScripts" : [
],
"Parameters" : {
}
},
{
"Name" : "Atari Lynx",
"GroupName" : "Atari",
"Cpu" : "65SC02",
"Speed" : "4",
"Description" : "Atari Lynx handheld game console.",
"SymbolFiles" : [
"RT:Atari/Lynx.sym65"
],
"ExtensionScripts" : [
],
"Parameters" : {
}
},
{
"Name" : "Atari Arcade Cabinet",
"GroupName" : "Atari",
"Cpu" : "6502",
"Speed" : "1.512",
"Description" : "Atari arcade cabinet, e.g. Battlezone [placeholder].",
"SymbolFiles" : [
],
"ExtensionScripts" : [
],
"Parameters" : {
}
},
{
"Name" : "Commodore 64 (PRG)",
"GroupName" : "Commodore",
"Cpu" : "6510",
"Speed" : "1.023",
"Description" : "Commodore 64 home computer. The first two bytes hold the load address.",
"SymbolFiles" : [
"RT:Commodore/C64-Kernal.sym65"
],
"ExtensionScripts" : [
],
"Parameters" : {
"first-word-is-load-addr":"true",
"default-text-encoding":"c64-petscii"
}
},
{
"Name" : "Commodore 64 (BIN)",
"GroupName" : "Commodore",
"Cpu" : "6510",
"Speed" : "1.023",
"Description" : "Commodore 64 home computer. General binary file.",
"SymbolFiles" : [
"RT:Commodore/C64-Kernal.sym65"
],
"ExtensionScripts" : [
],
"Parameters" : {
"default-text-encoding":"c64-petscii"
}
},
{
"Name" : "Commodore 128",
"GroupName" : "Commodore",
"Cpu" : "8502",
"Speed" : "2",
"Description" : "Commodore 128 home computer.",
"SymbolFiles" : [
"RT:Commodore/C64-Kernal.sym65",
"RT:Commodore/C128-Kernal.sym65"
],
"ExtensionScripts" : [
],
"Parameters" : {
"default-text-encoding":"c64-petscii"
}
},
{
"Name" : "Commodore Pet 2001",
"GroupName" : "Commodore",
"Cpu" : "6502",
"Speed" : "1",
"Description" : "Commodore Pet [placeholder].",
"SymbolFiles" : [
],
"ExtensionScripts" : [
],
"Parameters" : {
"default-text-encoding":"c64-petscii"
}
},
{
"Name" : "NES",
"GroupName" : "Nintendo",
"Cpu" : "2A03",
"Speed" : "1.79",
"Description" : "Nintendo Entertainment System.",
"SymbolFiles" : [
"RT:Nintendo/NES.sym65"
],
"ExtensionScripts" : [
],
"Parameters" : {
}
},
{
"Name" : "Super NES",
"GroupName" : "Nintendo",
"Cpu" : "5A22",
"Speed" : "3.58",
"Description" : "Super Nintendo Entertainment System [placeholder].",
"SymbolFiles" : [
],
"ExtensionScripts" : [
],
"Parameters" : {
}
},
{
"Name" : "Generic 6502",
"GroupName" : "Generic",
"Cpu" : "6502",
"Speed" : "1",
"Description" : "Generic 6502-based system.",
"SymbolFiles" : [
],
"ExtensionScripts" : [
],
"Parameters" : {
}
},
{
"Name" : "Generic 6502 + Undoc",
"GroupName" : "Generic",
"Cpu" : "6502",
"Speed" : "1",
"Description" : "Generic 6502-based system, with undocumented opcodes enabled.",
"SymbolFiles" : [
],
"ExtensionScripts" : [
],
"Parameters" : {
"undocumented-opcodes":"true"
}
},
{
"Name" : "Generic 65C02",
"GroupName" : "Generic",
"Cpu" : "65C02",
"Speed" : "1",
"Description" : "Generic 65C02-based system.",
"SymbolFiles" : [
],
"ExtensionScripts" : [
],
"Parameters" : {
}
},
{
"Name" : "Generic 65816",
"GroupName" : "Generic",
"Cpu" : "65816",
"Speed" : "1",
"Description" : "Generic 65816-based system.",
"SymbolFiles" : [
],
"ExtensionScripts" : [
],
"Parameters" : {
}
}
]
}