2018-09-28 17:05:11 +00:00
|
|
|
{
|
|
|
|
"_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",
|
2020-07-11 20:23:46 +00:00
|
|
|
"RT:Apple/C08x-DiskII.sym65",
|
2018-09-28 17:05:11 +00:00
|
|
|
"RT:Apple/ProDOS8.sym65"
|
|
|
|
],
|
|
|
|
"ExtensionScripts" : [
|
2019-12-04 23:50:19 +00:00
|
|
|
"RT:Apple/ProDOS8.cs",
|
|
|
|
"RT:Apple/VisHiRes.cs"
|
2018-09-28 17:05:11 +00:00
|
|
|
],
|
|
|
|
"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",
|
2020-07-11 20:23:46 +00:00
|
|
|
"RT:Apple/C08x-DiskII.sym65",
|
2018-09-28 17:05:11 +00:00
|
|
|
"RT:Apple/DOS33.sym65"
|
|
|
|
],
|
|
|
|
"ExtensionScripts" : [
|
2019-12-04 23:50:19 +00:00
|
|
|
"RT:Apple/VisHiRes.cs"
|
2018-09-28 17:05:11 +00:00
|
|
|
],
|
|
|
|
"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",
|
2020-07-11 20:23:46 +00:00
|
|
|
"RT:Apple/C08x-DiskII.sym65",
|
Add Cxxx I/O locations in bank $e0 for Apple IIgs
On an Apple IIgs, the memory-mapped I/O locations are actually in
bank $e0, shadow-copied to bank $00. This adds a copy of the
relevant definitions from Cxxx-IO.sym65, with the addresses in bank
$e0 and "_GS" appended to the labels.
This is now included by default for the Apple IIgs system defintions.
(I thought about just adding them to Cxxx-IO.sym65, but then they
pollute the namespace for 8-bit systems. Stripping them out at run
time got a little complicated because the platform symbols are only
loaded once, and we'd have to reload them every time the CPU definition
changed. Further, there are a few aliases provided as constants, and
constants are allowed to be 32 bits on all systems, so those can't be
stripped. Rather than defining a new definition I figured it was
just easier to have a second file. Maintenance shouldn't be too taxing,
as definitions for 40-year-old machines don't change all that often.)
(I also thought about trying to make the address mirroring stuff work
for me here, but that would result in accesses being made to the
canonical address with an offset of +$e00000, which looks awful.)
2020-07-11 20:57:18 +00:00
|
|
|
"RT:Apple/E0Cxxx-IO.sym65",
|
2018-09-28 17:05:11 +00:00
|
|
|
"RT:Apple/ProDOS8.sym65",
|
|
|
|
"RT:Apple/IIgs-ROM.sym65"
|
|
|
|
],
|
|
|
|
"ExtensionScripts" : [
|
2019-12-04 23:50:19 +00:00
|
|
|
"RT:Apple/ProDOS8.cs",
|
|
|
|
"RT:Apple/VisHiRes.cs"
|
2018-09-28 17:05:11 +00:00
|
|
|
],
|
|
|
|
"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",
|
2020-07-11 20:23:46 +00:00
|
|
|
"RT:Apple/C08x-DiskII.sym65",
|
Add Cxxx I/O locations in bank $e0 for Apple IIgs
On an Apple IIgs, the memory-mapped I/O locations are actually in
bank $e0, shadow-copied to bank $00. This adds a copy of the
relevant definitions from Cxxx-IO.sym65, with the addresses in bank
$e0 and "_GS" appended to the labels.
This is now included by default for the Apple IIgs system defintions.
(I thought about just adding them to Cxxx-IO.sym65, but then they
pollute the namespace for 8-bit systems. Stripping them out at run
time got a little complicated because the platform symbols are only
loaded once, and we'd have to reload them every time the CPU definition
changed. Further, there are a few aliases provided as constants, and
constants are allowed to be 32 bits on all systems, so those can't be
stripped. Rather than defining a new definition I figured it was
just easier to have a second file. Maintenance shouldn't be too taxing,
as definitions for 40-year-old machines don't change all that often.)
(I also thought about trying to make the address mirroring stuff work
for me here, but that would result in accesses being made to the
canonical address with an offset of +$e00000, which looks awful.)
2020-07-11 20:57:18 +00:00
|
|
|
"RT:Apple/E0Cxxx-IO.sym65",
|
2018-09-28 17:05:11 +00:00
|
|
|
"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"
|
|
|
|
}
|
|
|
|
},
|
2018-09-28 23:10:05 +00:00
|
|
|
{
|
|
|
|
"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" : [
|
2019-08-02 23:06:27 +00:00
|
|
|
"RT:Apple/SOS.cs"
|
2018-09-28 23:10:05 +00:00
|
|
|
],
|
|
|
|
"Parameters" : {
|
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 21:55:56 +00:00
|
|
|
"load-address":"0x2000",
|
|
|
|
"two-byte-brk":"true"
|
2018-09-28 23:10:05 +00:00
|
|
|
}
|
|
|
|
},
|
2019-10-26 15:26:39 +00:00
|
|
|
{
|
|
|
|
"Name" : "Apple-1",
|
|
|
|
"GroupName" : "Apple",
|
|
|
|
"Cpu" : "6502",
|
|
|
|
"Speed" : "1",
|
|
|
|
"Description" : "Apple-1 system.",
|
|
|
|
"SymbolFiles" : [
|
|
|
|
"RT:Apple/Apple1.sym65"
|
|
|
|
],
|
|
|
|
"ExtensionScripts" : [
|
|
|
|
],
|
|
|
|
"Parameters" : {
|
|
|
|
}
|
|
|
|
},
|
2018-09-28 17:05:11 +00:00
|
|
|
{
|
|
|
|
"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" : [
|
2020-01-15 23:00:30 +00:00
|
|
|
"RT:Atari/Vis2600.cs"
|
2018-09-28 17:05:11 +00:00
|
|
|
],
|
|
|
|
"Parameters" : {
|
|
|
|
"load-address":"0xf000"
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"Name" : "Atari 5200",
|
|
|
|
"GroupName" : "Atari",
|
|
|
|
"Cpu" : "6502C",
|
|
|
|
"Speed" : "1.79",
|
|
|
|
"Description" : "Atari 5200 [placeholder].",
|
|
|
|
"SymbolFiles" : [
|
|
|
|
],
|
|
|
|
"ExtensionScripts" : [
|
|
|
|
],
|
|
|
|
"Parameters" : {
|
|
|
|
}
|
|
|
|
},
|
2018-10-02 20:18:45 +00:00
|
|
|
{
|
|
|
|
"Name" : "Atari Lynx",
|
|
|
|
"GroupName" : "Atari",
|
|
|
|
"Cpu" : "65SC02",
|
2018-10-08 19:49:26 +00:00
|
|
|
"Speed" : "4",
|
2018-10-11 21:49:40 +00:00
|
|
|
"Description" : "Atari Lynx handheld game console.",
|
2018-10-02 20:18:45 +00:00
|
|
|
"SymbolFiles" : [
|
2018-10-11 21:49:40 +00:00
|
|
|
"RT:Atari/Lynx.sym65"
|
2018-10-02 20:18:45 +00:00
|
|
|
],
|
|
|
|
"ExtensionScripts" : [
|
|
|
|
],
|
|
|
|
"Parameters" : {
|
|
|
|
}
|
|
|
|
},
|
2018-09-28 17:05:11 +00:00
|
|
|
{
|
2018-10-23 19:30:19 +00:00
|
|
|
"Name" : "Commodore 64 (PRG)",
|
2018-09-28 17:05:11 +00:00
|
|
|
"GroupName" : "Commodore",
|
|
|
|
"Cpu" : "6510",
|
|
|
|
"Speed" : "1.023",
|
2018-10-23 19:30:19 +00:00
|
|
|
"Description" : "Commodore 64 home computer. The first two bytes hold the load address.",
|
2018-09-28 17:05:11 +00:00
|
|
|
"SymbolFiles" : [
|
2018-10-11 16:49:49 +00:00
|
|
|
"RT:Commodore/C64-Kernal.sym65"
|
2018-09-28 17:05:11 +00:00
|
|
|
],
|
|
|
|
"ExtensionScripts" : [
|
2019-12-07 05:25:31 +00:00
|
|
|
"RT:Commodore/VisC64.cs"
|
2018-09-28 17:05:11 +00:00
|
|
|
],
|
|
|
|
"Parameters" : {
|
2019-08-15 00:59:52 +00:00
|
|
|
"first-word-is-load-addr":"true",
|
|
|
|
"default-text-encoding":"c64-petscii"
|
2018-09-28 17:05:11 +00:00
|
|
|
}
|
|
|
|
},
|
2018-10-23 19:30:19 +00:00
|
|
|
{
|
|
|
|
"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" : [
|
2019-12-07 05:25:31 +00:00
|
|
|
"RT:Commodore/VisC64.cs"
|
2018-10-23 19:30:19 +00:00
|
|
|
],
|
|
|
|
"Parameters" : {
|
2019-08-15 00:59:52 +00:00
|
|
|
"default-text-encoding":"c64-petscii"
|
2018-10-23 19:30:19 +00:00
|
|
|
}
|
|
|
|
},
|
2018-09-28 17:05:11 +00:00
|
|
|
{
|
|
|
|
"Name" : "Commodore 128",
|
|
|
|
"GroupName" : "Commodore",
|
|
|
|
"Cpu" : "8502",
|
|
|
|
"Speed" : "2",
|
2018-10-11 17:46:47 +00:00
|
|
|
"Description" : "Commodore 128 home computer.",
|
2018-09-28 17:05:11 +00:00
|
|
|
"SymbolFiles" : [
|
2018-10-11 17:46:47 +00:00
|
|
|
"RT:Commodore/C64-Kernal.sym65",
|
|
|
|
"RT:Commodore/C128-Kernal.sym65"
|
2018-09-28 17:05:11 +00:00
|
|
|
],
|
|
|
|
"ExtensionScripts" : [
|
2019-12-07 05:25:31 +00:00
|
|
|
"RT:Commodore/VisC64.cs"
|
2018-09-28 17:05:11 +00:00
|
|
|
],
|
|
|
|
"Parameters" : {
|
2019-08-15 00:59:52 +00:00
|
|
|
"default-text-encoding":"c64-petscii"
|
2018-09-28 17:05:11 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"Name" : "Commodore Pet 2001",
|
|
|
|
"GroupName" : "Commodore",
|
|
|
|
"Cpu" : "6502",
|
|
|
|
"Speed" : "1",
|
|
|
|
"Description" : "Commodore Pet [placeholder].",
|
|
|
|
"SymbolFiles" : [
|
|
|
|
],
|
|
|
|
"ExtensionScripts" : [
|
|
|
|
],
|
|
|
|
"Parameters" : {
|
2019-08-15 00:59:52 +00:00
|
|
|
"default-text-encoding":"c64-petscii"
|
2018-09-28 17:05:11 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"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" : {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|