https://github.com/mihamarkic/retro-debug-data-provider
A library with purpose to provide debug information from programs compiled with retro computing compilers and assemblers
https://github.com/mihamarkic/retro-debug-data-provider
Last synced: 3 months ago
JSON representation
A library with purpose to provide debug information from programs compiled with retro computing compilers and assemblers
- Host: GitHub
- URL: https://github.com/mihamarkic/retro-debug-data-provider
- Owner: MihaMarkic
- License: mit
- Created: 2024-06-16T08:39:07.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2025-02-09T13:24:26.000Z (4 months ago)
- Last Synced: 2025-02-09T14:24:21.638Z (4 months ago)
- Language: C#
- Size: 1.11 MB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Retro Debug Data Provider
This project goal is to provide as much debugging support as possible for retro assemblers and possibly compilers starting with [KickAssembler](https://www.theweb.dk/KickAssembler/Main.html#frontpage).
[](https://www.nuget.org/packages/Retro.Debug.Data.Provider)
## Current services
* Debug file (.dbg) parsing provided by `IKickAssemblerDbgParser`.
* Byte dump file (.dmp) parsing provided by `IKickAssemblerByteDumpParser`.
* Compiler invocation (NOTE: Kick Assembler requires java installed on computer, OpenJDK is fine) provide by `IKickAssemblerCompiler`.
* Converting Kick Assembler specific data into universal model provided by `IKickAssemblerProgramInfoBuilder`.
* Universal model - for different assemblers and compilers (early version, might change in future) with top class `AssemblerAppInfo`.I will add more services and more support types along the path.
This is a .NET 8+ cross-platform library.
## Dependency injection support
All service classes have matching interface. Register them manually or run `IoCRegistrar.AddDebugDataProvider` extension method on `IServiceCollection` instance like:
```csharp
public static IServiceCollection Configure(this IServiceCollection services)
{
services.AddDebugDataProvider();
}
```## Debug file parser
Get debug data model by calling
```csharp
var model = await IKickAssemblerDbgParser.LoadFileAsync("PATH_TO_DBG_FILE", ct)
```## Byte dump file parser
Get byte dumb model by calling
```csharp
var model = await IKickAssemblerByteDumpParser.LoadFileAsync("PATH_TO_BYTE_DUMP_FILE", ct)
```## Compiler invocation
## Unified model converter
Convert Kick Assembler specific debug model to universal one by calling
```csharp
var universalModel = await IKickAssemblerProgramInfoBuilder.BuildAppInfoAsync("PROJECT_DIRECTORY", debugData, ct)
```
where `debugData` argument is output from [Debug file parser](#debug-file-parser).## Build from sources
Clone repository.
Since Kick Assembler binaries are not included in this repository, it's required to download them and manual install them: in `src/Righthand.RetroDbgDataProvider/Righthand.RetroDbgDataProvider` subdirectory create directory `binaries/KickAss` and place inside Kick Assembler files `KickAss.cfg` and `KickAss.jar`.