1
0
mirror of https://github.com/fadden/6502bench.git synced 2024-07-14 20:28:59 +00:00
6502bench/SourceGen/RuntimeData
Andy McFadden 9aaa37a23c 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 14:01:02 -07:00
..
Apple Add Cxxx I/O locations in bank $e0 for Apple IIgs 2020-07-11 14:01:02 -07:00
Atari Add simple SGEC reader 2020-04-13 17:33:34 -07:00
Commodore Various minor tweaks 2019-12-07 11:42:26 -08:00
Help Update relocation data handling 2020-07-10 17:41:38 -07:00
Nintendo Add NES visualization generator 2020-05-14 15:34:05 -07:00
TestData Initial file commit 2018-09-28 10:05:11 -07:00
ExportTemplate.html Output human-readable generation parameters to HTML 2019-12-25 10:59:40 -08:00
LegalStuff.txt Bump a couple of copyright dates 2020-03-11 17:02:37 -07:00
README.md Updated the RuntimeData README 2020-01-01 18:06:59 -08:00
RuntimeData.csproj Initial file commit 2018-09-28 10:05:11 -07:00
SGStyle.css Add visualization sets to exported HTML 2019-12-13 17:15:38 -08:00
SystemDefs.json Add Cxxx I/O locations in bank $e0 for Apple IIgs 2020-07-11 14:01:02 -07:00

Runtime Data

Symbol files and analyzer scripts are split into directories by platform manufacturer.

The Visual Studio project (RuntimeData.csproj) exists so you can edit scripts with IntelliSense and error highlighting. Everything here is distributed as source, not in compiled form; all compilation occurs at run time.

SystemDefs.json

This file defines the systems available in the "new project" screen. The following fields are mandatory:

  • Name - Short name that identifies the system.
  • GroupName - Short string used to group common items together in the UI.
  • CPU - Type of CPU used. The string must be part of the known set (see CpuDef.cs)
  • Speed - Clock rate, in MHz, of the CPU on the system. When multiple speeds are possible, use the most common, favoring NTSC over PAL.
  • SymbolFiles - List of platform symbol file identifiers (see below).
  • ExtensionScripts - List of extension script file identifiers (see below).
  • Parameters - List of optional parameters (see below).

The currently-supported parameters are:

  • load-address=<addr> - Specify the initial load address. The default is 0x1000.
  • entry-flags=<flag-set> - Specify the processor status flag values to use at entry points. This is intended for use on the 65802/65816, and may be one of "emulation", "native-short", and "native-long". The default is "emulation".
  • undocumented-opcodes={true|false} - Enable or disable undocumented opcodes. They are disabled by default.
  • first-word-is-load-addr={true|false} - If true, the first two bytes of the file contain the load address.
  • default-text-encoding=<mode> - Specify default character encoding. Use "c64-petscii" for PETSCII. The default is low/high ASCII.

All of these things can be changed after the project has begun, but it's nice to have them configured in advance.

SymbolFiles and ExtensionScripts use file identifiers, which look like "RT:Apple/ProDOS8.sym65". The "RT:" means that the file lives in the RuntimeData directory, and the rest is a partial pathname. Files that live in the same directory as the project file are prefixed with "PROJ:". All symbol files and extension scripts must live in the RuntimeData directory or project file directory, or they will not be loaded.

All "RT:" identifier paths are relative to the RuntimeData directory. The Group Name is not automatically added.

Platform Symbol Files and Extension Scripts

These are described in the "Advanced Topics" section of the manual (here).

Misc Files

ExportTemplate.html and SGStyle.css are used by SourceGen's HTML export feature.

LegalStuff.txt is displayed in the About box.