diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json new file mode 100644 index 0000000..c213df6 --- /dev/null +++ b/.config/dotnet-tools.json @@ -0,0 +1,13 @@ +{ + "version": 1, + "isRoot": true, + "tools": { + "nbgv": { + "version": "3.10.94", + "commands": [ + "nbgv" + ], + "rollForward": false + } + } +} \ No newline at end of file diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..ddfb873 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,19 @@ +root = true + +[*.cs] + +# S125: Sections of code should not be commented out +# Commented-out code is used deliberately throughout this codebase (asm-mirroring +# notes, disabled diagnostics, WIP scaffolding) -- suppress project-wide. +dotnet_diagnostic.S125.severity = none + +# S6640: Using "unsafe" code blocks is security-sensitive +# Unsafe code is unavoidable here -- native interop, pinned emulator state, raw +# memory spans over the core's buffers -- suppress project-wide. +dotnet_diagnostic.S6640.severity = none + +# S3776: Cognitive Complexity of methods should not be too high +# Emulator dispatch, opcode handling and DAP request handlers are inherently +# branchy; splitting them for the metric's sake hurts readability -- suppress +# project-wide. +dotnet_diagnostic.S3776.severity = none diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml index 3a5407a..1f39f23 100644 --- a/.github/workflows/build-test.yml +++ b/.github/workflows/build-test.yml @@ -5,68 +5,172 @@ on: branches: ["main", "develop"] jobs: - build-windows: + # No `needs:` - this has no dependency on build-core, so it runs in parallel with it + # rather than serializing behind a job it doesn't need anything from. + version: + runs-on: ubuntu-24.04 + + outputs: + nuget-version: ${{ steps.nbgv.outputs.nuget-version }} + + steps: + - name: Checkout + uses: actions/checkout@v7.0.1 + with: + submodules: false + fetch-depth: 0 + + - name: Setup .NET + uses: actions/setup-dotnet@v6.0.0 + with: + dotnet-version: 10.0.x + + - name: Restore dotnet tools + run: dotnet tool restore + + # PublicRelease drops the git-commit-hash prerelease suffix, giving a clean X.Y.Z for + # real releases; without it every commit gets its own unique X.Y.Z-g automatically - + # both computed purely from local git history, no tag required either way. + - name: Compute version + id: nbgv + shell: bash + run: | + if [ "${{ github.ref }}" = "refs/heads/main" ]; then + PUBLIC_RELEASE=true + else + PUBLIC_RELEASE=false + fi + VERSION=$(dotnet nbgv get-version -v NuGetPackageVersion --public-release=$PUBLIC_RELEASE) + echo "nuget-version=$VERSION" >> "$GITHUB_OUTPUT" + echo "Computed version: $VERSION" + + build-core: runs-on: windows-2022 steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v7.0.1 with: submodules: recursive + fetch-depth: 0 - name: Setup MSBuild.exe - uses: microsoft/setup-msbuild@v1.3.1 + uses: microsoft/setup-msbuild@v3.0.0 - name: Build Emulator Core run: msbuild 'BitMagic.X16Emulator/X16Emulator/EmulatorCore/EmulatorCore.vcxproj' /p:configuration=Release /p:platform=x64 + # BitMagic.X16Emulator.csproj -copies this unconditionally, in Release too, + # so it must exist before "Build Debugger"/"Build Emulator" in build-windows. + - name: Build ZiModem Host + run: msbuild 'External/BitMagic.ZiModem/native/ZiModemHost.vcxproj' /p:configuration=Release /p:platform=x64 + + # core.obj is the portable input build-linux links into EmulatorCore.so; EmulatorCore.dll + # is what build-windows needs directly. Split out so build-windows and build-linux can run + # in parallel off this one small job instead of build-linux waiting on the full Windows build. + - name: Save Core Artifacts + uses: actions/upload-artifact@v7.0.1 + with: + name: EmulatorCore + path: BitMagic.X16Emulator\X16Emulator\EmulatorCore\x64\Release\core.obj + + - name: Save Core DLL Artifact + uses: actions/upload-artifact@v7.0.1 + with: + name: EmulatorCoreDll + path: BitMagic.X16Emulator\X16Emulator\EmulatorCore\x64\Release\EmulatorCore.dll + + - name: Save ZiModem Host Artifact + uses: actions/upload-artifact@v7.0.1 + with: + name: ZiModemHostDll + path: External\BitMagic.ZiModem\build\native\bin\zimodem_host.dll + + build-windows: + needs: [build-core, version] + runs-on: windows-2022 + + steps: + - name: Checkout + uses: actions/checkout@v7.0.1 + with: + submodules: recursive + fetch-depth: 0 + + - name: Download Core + uses: actions/download-artifact@v8.0.1 + with: + name: EmulatorCoreDll + path: BitMagic.X16Emulator\X16Emulator\EmulatorCore\x64\Release + + - name: Download ZiModem Host + uses: actions/download-artifact@v8.0.1 + with: + name: ZiModemHostDll + path: External\BitMagic.ZiModem\build\native\bin + - name: Build Debugger - run: dotnet build 'BitMagic.X16Debugger/X16D/X16D.csproj' /p:configuration=Release --nologo + run: dotnet build 'BitMagic.X16Debugger/X16D/X16D.csproj' /p:configuration=Release /p:Version=${{ needs.version.outputs.nuget-version }} --nologo - name: Build TemplateRunner run: dotnet build 'BitMagic.TemplateEngine/BitMagic.TemplateEngine.Runner' /p:configuration=Release --nologo - name: Copy Core to Debugger - run : copy-item 'BitMagic.X16Emulator\X16Emulator\EmulatorCore\x64\Release\EmulatorCore.dll' -Destination 'BitMagic.X16Debugger\X16D\bin\Release\net6.0\EmulatorCore.dll' + run : copy-item 'BitMagic.X16Emulator\X16Emulator\EmulatorCore\x64\Release\EmulatorCore.dll' -Destination 'BitMagic.X16Debugger\X16D\bin\Release\net10.0\EmulatorCore.dll' - name: Build Emulator - run: dotnet build 'BitMagic.X16Emulator/X16E/X16E.csproj' /p:configuration=Release --nologo + run: dotnet build 'BitMagic.X16Emulator/X16E/X16E.csproj' /p:configuration=Release /p:Version=${{ needs.version.outputs.nuget-version }} --nologo - name: Copy Core to Emulator - run: copy-item 'BitMagic.X16Emulator\X16Emulator\EmulatorCore\x64\Release\EmulatorCore.dll' -Destination 'BitMagic.X16Emulator\X16E\bin\Release\net6.0\EmulatorCore.dll' + run: copy-item 'BitMagic.X16Emulator\X16Emulator\EmulatorCore\x64\Release\EmulatorCore.dll' -Destination 'BitMagic.X16Emulator\X16E\bin\Release\net10.0\EmulatorCore.dll' + + - name: Copy ROM Fetch Script + run: copy-item 'BitMagic.X16Emulator\X16E\fetch-rom.bat' -Destination 'BitMagic.X16Emulator\X16E\bin\Release\net10.0\fetch-rom.bat' - name: Copy TemplateRunner to Debugger run: | - new-item 'BitMagic.X16Debugger\X16D\bin\Release\net6.0\TemplateEngine' -type directory -force - copy-item 'BitMagic.TemplateEngine\BitMagic.TemplateEngine.Runner\bin\Release\net6.0\*.*' -Destination 'BitMagic.X16Debugger\X16D\bin\Release\net6.0\TemplateEngine' -Recurse -Force + new-item 'BitMagic.X16Debugger\X16D\bin\Release\net10.0\TemplateEngine' -type directory -force + copy-item 'BitMagic.TemplateEngine\BitMagic.TemplateEngine.Runner\bin\Release\net10.0\*.*' -Destination 'BitMagic.X16Debugger\X16D\bin\Release\net10.0\TemplateEngine' -Recurse -Force - - name: Create Version File + - name: Build X16M + run: dotnet build 'BitMagic.X16MCP/X16M/X16M.csproj' /p:configuration=Release /p:Version=${{ needs.version.outputs.nuget-version }} --nologo + + # Bundles the just-built Debugger next to X16M (under x16d/) so X16M finds it with no + # configuration needed - see X16M's Program.cs connection resolution order. + - name: Bundle X16D into X16M run: | - echo "${{ github.sha }}" > BitMagic.X16Emulator/X16E/bin/Release/net6.0/version.txt - echo "${{ github.sha }}" > BitMagic.X16Debugger/X16D/bin/Release/net6.0/version.txt + new-item 'BitMagic.X16MCP\X16M\bin\Release\net10.0\x16d' -type directory -force + copy-item 'BitMagic.X16Debugger\X16D\bin\Release\net10.0\*' -Destination 'BitMagic.X16MCP\X16M\bin\Release\net10.0\x16d' -Recurse -Force - - name: Save Core Artifacts - uses: actions/upload-artifact@v4 - with: - name: EmulatorCore - path: BitMagic.X16Emulator\X16Emulator\EmulatorCore\x64\Release\core.obj + - name: Create Version File + run: | + echo "${{ github.sha }}" > BitMagic.X16Emulator/X16E/bin/Release/net10.0/version.txt + echo "${{ github.sha }}" > BitMagic.X16Debugger/X16D/bin/Release/net10.0/version.txt + echo "${{ github.sha }}" > BitMagic.X16MCP/X16M/bin/Release/net10.0/version.txt - name: Archive Emulator uses: thedoctor0/zip-release@0.7.1 with: type: 'zip' filename: 'BitMagic-TheEmulator.Windows.zip' - directory: BitMagic.X16Emulator/X16E/bin/Release/net6.0 + directory: BitMagic.X16Emulator/X16E/bin/Release/net10.0 - name: Archive Debugger uses: thedoctor0/zip-release@0.7.1 with: type: 'zip' filename: 'BitMagic-TheDebugger.Windows.zip' - directory: BitMagic.X16Debugger/X16D/bin/Release/net6.0 + directory: BitMagic.X16Debugger/X16D/bin/Release/net10.0 - - name: Setup VS Dev - uses: seanmiddleditch/gha-setup-vsdevenv@v4 + - name: Archive X16M + uses: thedoctor0/zip-release@0.7.1 + with: + type: 'zip' + filename: 'BitMagic-TheMCP.Windows.zip' + directory: BitMagic.X16MCP/X16M/bin/Release/net10.0 + + # - name: Setup VS Dev + # uses: seanmiddleditch/gha-setup-vsdevenv@v5 # - name: Build MSI # working-directory: BitMagic.X16Emulator @@ -79,29 +183,46 @@ jobs: # path: BitMagic.X16Emulator\X16ESetup\Release\X16ESetup.msi - name: Save Emulator Artifacts - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7.0.1 with: name: BitMagic-TheEmulator - path: BitMagic.X16Emulator/X16E/bin/Release/net6.0/BitMagic-TheEmulator.Windows.zip + path: BitMagic.X16Emulator/X16E/bin/Release/net10.0/BitMagic-TheEmulator.Windows.zip - name: Save Debugger Artifacts - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7.0.1 with: name: BitMagic-TheDebugger - path: BitMagic.X16Debugger/X16D/bin/Release/net6.0/BitMagic-TheDebugger.Windows.zip + path: BitMagic.X16Debugger/X16D/bin/Release/net10.0/BitMagic-TheDebugger.Windows.zip + + - name: Save X16M Artifacts + uses: actions/upload-artifact@v7.0.1 + with: + name: BitMagic-TheMCP + path: BitMagic.X16MCP/X16M/bin/Release/net10.0/BitMagic-TheMCP.Windows.zip build-linux: - needs: build-windows - runs-on: ubuntu-22.04 + needs: [build-core, version] + runs-on: ubuntu-24.04 steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v7.0.1 with: submodules: recursive + fetch-depth: 0 + + # 8.0 runtime is needed by the ZiModem vendoring tool (tools/Vendoring targets + # net8.0, run by the CMake build below); 10.0 keeps the C# project builds on the + # same SDK the runner image already uses. + - name: Setup .NET + uses: actions/setup-dotnet@v6.0.0 + with: + dotnet-version: | + 8.0.x + 10.0.x - name: Copy artifacts - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8.0.1 with: name: EmulatorCore path: BitMagic.X16Emulator/X16Emulator/EmulatorCoreLinux @@ -109,6 +230,8 @@ jobs: - name: Build Core Wrapper working-directory: BitMagic.X16Emulator/X16Emulator/EmulatorCoreLinux run: | + ls -l + md5sum core.obj chmod +x build.sh ./build.sh ls -l @@ -118,32 +241,110 @@ jobs: mkdir -p BitMagic.X16Emulator/X16Emulator/EmulatorCore/x64/Release cp BitMagic.X16Emulator/X16Emulator/EmulatorCoreLinux/EmulatorCore.so BitMagic.X16Emulator/X16Emulator/EmulatorCore/x64/Release/. + # The Linux core is a prebuilt core.obj linked by build.sh, so unlike the Windows + # job (where the EmulatorCore.vcxproj build triggers this) nothing has built the + # ZiModem host .so yet. BitMagic.X16Emulator.csproj -copies + # build/native/bin/libzimodem_host.so, so it must exist before "Build Debugger". + # cmake / gcc / make ship on the ubuntu-24.04 image. + # + # ZIMODEM_HOST_MSABI=ON: the emulator core calls this .so from hand-written x64 MASM + # that uses the Windows calling convention on every platform, so this dedicated copy + # is compiled with __attribute__((ms_abi)) on its ABI boundary. It forbids building + # the (SysV-convention) test suites, hence tests OFF. + - name: Build ZiModem Host + working-directory: External/BitMagic.ZiModem + run: | + cmake -S native -B build/native -DZIMODEM_HOST_MSABI=ON -DZIMODEM_BUILD_TESTS=OFF + cmake --build build/native --target zimodem_host -j"$(nproc)" + ls -l build/native/bin + - name: Build Debugger - run: dotnet build 'BitMagic.X16Debugger/X16D/X16D.csproj' /p:configuration=Release --nologo + run: dotnet build 'BitMagic.X16Debugger/X16D/X16D.csproj' /p:configuration=Release /p:Version=${{ needs.version.outputs.nuget-version }} --nologo - name: Build TemplateRunner run: dotnet build 'BitMagic.TemplateEngine/BitMagic.TemplateEngine.Runner' /p:configuration=Release --nologo - name: Copy TemplateRunner to Debugger run: | - mkdir BitMagic.X16Debugger/X16D/bin/Release/net6.0/TemplateEngine - cp -R -v BitMagic.TemplateEngine/BitMagic.TemplateEngine.Runner/bin/Release/net6.0/* BitMagic.X16Debugger/X16D/bin/Release/net6.0/TemplateEngine + mkdir BitMagic.X16Debugger/X16D/bin/Release/net10.0/TemplateEngine + cp -R -v BitMagic.TemplateEngine/BitMagic.TemplateEngine.Runner/bin/Release/net10.0/* BitMagic.X16Debugger/X16D/bin/Release/net10.0/TemplateEngine - name: Copy Wrapper run: | - cp BitMagic.X16Emulator/X16Emulator/EmulatorCoreLinux/EmulatorCore.so BitMagic.X16Debugger/X16D/bin/Release/net6.0/. + cp BitMagic.X16Emulator/X16Emulator/EmulatorCoreLinux/EmulatorCore.so BitMagic.X16Debugger/X16D/bin/Release/net10.0/. + + - name: Build X16M + run: dotnet build 'BitMagic.X16MCP/X16M/X16M.csproj' /p:configuration=Release /p:Version=${{ needs.version.outputs.nuget-version }} --nologo + + # Bundles the just-built Debugger next to X16M (under x16d/) so X16M finds it with no + # configuration needed - see X16M's Program.cs connection resolution order. + - name: Bundle X16D into X16M + run: | + mkdir -p BitMagic.X16MCP/X16M/bin/Release/net10.0/x16d + cp -R BitMagic.X16Debugger/X16D/bin/Release/net10.0/* BitMagic.X16MCP/X16M/bin/Release/net10.0/x16d + + - name: Build Emulator + run: dotnet build 'BitMagic.X16Emulator/X16E/X16E.csproj' /p:configuration=Release /p:Version=${{ needs.version.outputs.nuget-version }} --nologo + + - name: Copy Wrapper to Emulator + run: | + cp BitMagic.X16Emulator/X16Emulator/EmulatorCoreLinux/EmulatorCore.so BitMagic.X16Emulator/X16E/bin/Release/net10.0/. + + - name: Copy ROM Fetch Script + run: | + cp BitMagic.X16Emulator/X16E/fetch-rom.sh BitMagic.X16Emulator/X16E/bin/Release/net10.0/. + chmod +x BitMagic.X16Emulator/X16E/bin/Release/net10.0/fetch-rom.sh + + - name: Copy Prerequisite Check + run: | + cp BitMagic.X16Emulator/X16E/check-prerequisites.sh BitMagic.X16Emulator/X16E/bin/Release/net10.0/. + chmod +x BitMagic.X16Emulator/X16E/bin/Release/net10.0/check-prerequisites.sh - name: Create Version File run: | - echo "${{ github.sha }}" > BitMagic.X16Debugger/X16D/bin/Release/net6.0/version.txt - echo "${{ github.sha }}" > version.txt + echo "${{ github.sha }}" > BitMagic.X16Debugger/X16D/bin/Release/net10.0/version.txt + echo "${{ github.sha }}" > BitMagic.X16Emulator/X16E/bin/Release/net10.0/version.txt + echo "${{ github.sha }}" > BitMagic.X16MCP/X16M/bin/Release/net10.0/version.txt - name: Archive Debugger uses: thedoctor0/zip-release@0.7.1 with: type: 'tar' filename: '../../../../../BitMagic-TheDebugger.Linux.tar.gz' - directory: BitMagic.X16Debugger/X16D/bin/Release/net6.0 + directory: BitMagic.X16Debugger/X16D/bin/Release/net10.0 + + - name: Archive Emulator + uses: thedoctor0/zip-release@0.7.1 + with: + type: 'tar' + filename: '../../../../../BitMagic-TheEmulator.Linux.tar.gz' + directory: BitMagic.X16Emulator/X16E/bin/Release/net10.0 + + - name: Archive X16M + uses: thedoctor0/zip-release@0.7.1 + with: + type: 'tar' + filename: '../../../../../BitMagic-TheMCP.Linux.tar.gz' + directory: BitMagic.X16MCP/X16M/bin/Release/net10.0 + + - name: Save Linux Artifacts + uses: actions/upload-artifact@v7.0.1 + with: + name: BitMagic-Linux + path: | + BitMagic-TheDebugger.Linux.tar.gz + BitMagic-TheEmulator.Linux.tar.gz + BitMagic-TheMCP.Linux.tar.gz + + release: + needs: [build-windows, build-linux] + runs-on: ubuntu-24.04 + permissions: + contents: write + + steps: + - name: Create Version File + run: echo "${{ github.sha }}" > version.txt # - name: Copy artifacts (Setup) # uses: actions/download-artifact@v3 @@ -152,42 +353,115 @@ jobs: # path: . - name: Copy artifacts (Debugger) - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8.0.1 with: name: BitMagic-TheDebugger path: . - name: Copy artifacts (Emulator) - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8.0.1 with: name: BitMagic-TheEmulator path: . -# todo: replace these with https://github.com/softprops/action-gh-release + - name: Copy artifacts (X16M) + uses: actions/download-artifact@v8.0.1 + with: + name: BitMagic-TheMCP + path: . + + - name: Copy artifacts (Linux) + uses: actions/download-artifact@v8.0.1 + with: + name: BitMagic-Linux + path: . + - name: Create Github Release - uses: "marvinpinto/action-automatic-releases@latest" + uses: softprops/action-gh-release@v3.0.3 if: github.ref == 'refs/heads/main' with: - repo_token: "${{ secrets.GITHUB_TOKEN }}" + token: "${{ secrets.GITHUB_TOKEN }}" prerelease: false - automatic_release_tag: "latest" - title: "Release Build" + tag_name: "latest" + target_commitish: "${{ github.sha }}" + name: "Release Build" files: | BitMagic-TheDebugger.Linux.tar.gz + BitMagic-TheEmulator.Linux.tar.gz + BitMagic-TheMCP.Linux.tar.gz BitMagic-TheEmulator.Windows.zip BitMagic-TheDebugger.Windows.zip + BitMagic-TheMCP.Windows.zip version.txt - name: Create Github Development Release - uses: "marvinpinto/action-automatic-releases@latest" + uses: softprops/action-gh-release@v3.0.3 if: github.ref == 'refs/heads/develop' with: - repo_token: "${{ secrets.GITHUB_TOKEN }}" + token: "${{ secrets.GITHUB_TOKEN }}" prerelease: true - automatic_release_tag: "prerelease" - title: "Development Build" + tag_name: "prerelease" + target_commitish: "${{ github.sha }}" + name: "Development Build" files: | BitMagic-TheDebugger.Linux.tar.gz + BitMagic-TheEmulator.Linux.tar.gz + BitMagic-TheMCP.Linux.tar.gz BitMagic-TheEmulator.Windows.zip BitMagic-TheDebugger.Windows.zip + BitMagic-TheMCP.Windows.zip version.txt + + nuget-publish: + needs: [version, build-windows, build-linux] + runs-on: ubuntu-24.04 + permissions: + id-token: write # enable GitHub OIDC token issuance, needed for NuGet Trusted Publishing + + steps: + - name: Checkout + uses: actions/checkout@v7.0.1 + with: + submodules: recursive + + - name: Setup .NET + uses: actions/setup-dotnet@v6.0.0 + with: + dotnet-version: 10.0.x + + - name: Copy artifacts (Debugger Windows) + uses: actions/download-artifact@v8.0.1 + with: + name: BitMagic-TheDebugger + path: . + + - name: Copy artifacts (Linux) + uses: actions/download-artifact@v8.0.1 + with: + name: BitMagic-Linux + path: . + + # X16M.csproj bundles these per-RID (see the comment above its RuntimeIdentifiers + # property) - staged one level above the project directory so the SDK's implicit + # Compile/Content globs don't sweep up X16D's own loose .cs library sources. + - name: Stage X16D bundles + run: | + mkdir -p BitMagic.X16MCP/x16d-win-x64 + unzip -q BitMagic-TheDebugger.Windows.zip -d BitMagic.X16MCP/x16d-win-x64 + mkdir -p BitMagic.X16MCP/x16d-linux-x64 + tar -xzf BitMagic-TheDebugger.Linux.tar.gz -C BitMagic.X16MCP/x16d-linux-x64 + + - name: Pack X16M + run: dotnet pack 'BitMagic.X16MCP/X16M/X16M.csproj' -c Release -o nupkgs /p:Version=${{ needs.version.outputs.nuget-version }} + + # Exchanges this job's GitHub OIDC token for a short-lived (1 hour) NuGet API key via + # the trusted-publishing policy configured on nuget.org for Yazwh0/BitMagic + + # build-test.yml -- no long-lived NUGET_API_KEY secret to store or rotate. + - name: NuGet login (OIDC -> temp API key) + uses: NuGet/login@v1 + id: nuget-login + with: + user: ${{ secrets.NUGET_USER }} + + - name: Push to NuGet + run: dotnet nuget push "nupkgs/*.nupkg" --api-key ${{ steps.nuget-login.outputs.NUGET_API_KEY }} -s https://api.nuget.org/v3/index.json --skip-duplicate diff --git a/.gitignore b/.gitignore index 10d625b..0ba6d75 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,5 @@ test.zip publish.bat *- Backup.* *.ods +*.log +CLAUDE.md diff --git a/.gitmodules b/.gitmodules index 90c797d..cf0c57d 100644 --- a/.gitmodules +++ b/.gitmodules @@ -28,3 +28,9 @@ [submodule "BitMagic.Examples"] path = BitMagic.Examples url = https://github.com/Yazwh0/BitMagic.Examples.git +[submodule "External/BitMagic.ZiModem"] + path = External/BitMagic.ZiModem + url = https://github.com/Yazwh0/BitMagic.ZiModem.git +[submodule "BitMagic.X16MCP"] + path = BitMagic.X16MCP + url = https://github.com/Yazwh0/BitMagic.X16MCP.git diff --git a/BitMagic.Documentation b/BitMagic.Documentation index 1bade71..7a7d359 160000 --- a/BitMagic.Documentation +++ b/BitMagic.Documentation @@ -1 +1 @@ -Subproject commit 1bade71c3f8fdc7e98dd04c973caea0c958505df +Subproject commit 7a7d3598a2286587e008e7f2bc8d9f5cad32a48e diff --git a/BitMagic.Examples b/BitMagic.Examples index 7a6bb15..55ccd75 160000 --- a/BitMagic.Examples +++ b/BitMagic.Examples @@ -1 +1 @@ -Subproject commit 7a6bb15deab26a14a7a4dcb4565d82e2845dea42 +Subproject commit 55ccd7594308043be4aa1361fd26476505a9bc77 diff --git a/BitMagic.Libraries b/BitMagic.Libraries index 376e6cf..bb89910 160000 --- a/BitMagic.Libraries +++ b/BitMagic.Libraries @@ -1 +1 @@ -Subproject commit 376e6cf8d3dd6962c15454a2d3b9921e4b3ab3cc +Subproject commit bb8991003c46345cf6435391702ad1e162115ea5 diff --git a/BitMagic.TemplateEngine b/BitMagic.TemplateEngine index 49d3c80..81fb66e 160000 --- a/BitMagic.TemplateEngine +++ b/BitMagic.TemplateEngine @@ -1 +1 @@ -Subproject commit 49d3c80c1e47a3c4a967e89f0b66500d12d4bce9 +Subproject commit 81fb66e43307c76425828a136bfcedd5a1aac315 diff --git a/BitMagic.VSC b/BitMagic.VSC index 65f7f52..7ea36a5 160000 --- a/BitMagic.VSC +++ b/BitMagic.VSC @@ -1 +1 @@ -Subproject commit 65f7f5226a74260075091712bbdf8caedaa873bf +Subproject commit 7ea36a5dc75ffa5bd571bd76dfb060398e012ed0 diff --git a/BitMagic.X16Compiler b/BitMagic.X16Compiler index f08905e..618cfe9 160000 --- a/BitMagic.X16Compiler +++ b/BitMagic.X16Compiler @@ -1 +1 @@ -Subproject commit f08905e88dae86bc805fb0412f81098d0a9da92f +Subproject commit 618cfe968f2d360aaf9ab5496174474a375763b4 diff --git a/BitMagic.X16Debugger b/BitMagic.X16Debugger index 4f38d1e..26da019 160000 --- a/BitMagic.X16Debugger +++ b/BitMagic.X16Debugger @@ -1 +1 @@ -Subproject commit 4f38d1e85c744eb823c0ecf09edcb84c98bce22c +Subproject commit 26da01906dd09e9acb56792c7200a850f3e9c17d diff --git a/BitMagic.X16Emulator b/BitMagic.X16Emulator index ceb351e..92e32a1 160000 --- a/BitMagic.X16Emulator +++ b/BitMagic.X16Emulator @@ -1 +1 @@ -Subproject commit ceb351e8ec797360d4a65b5bfa2f40a78689e01f +Subproject commit 92e32a1f63897c8284f8b00fcd9bb41b16c3d12e diff --git a/BitMagic.X16MCP b/BitMagic.X16MCP new file mode 160000 index 0000000..40c51ac --- /dev/null +++ b/BitMagic.X16MCP @@ -0,0 +1 @@ +Subproject commit 40c51ac30481dcf2fcd80e8f5b15fc6a86e1a195 diff --git a/BitMagic.sln b/BitMagic.sln index 7e4df12..fc5a181 100644 --- a/BitMagic.sln +++ b/BitMagic.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.4.33403.182 +# Visual Studio Version 18 +VisualStudioVersion = 18.9.12112.369 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "X16D", "BitMagic.X16Debugger\X16D\X16D.csproj", "{1A61AC4C-C457-44E1-844D-DE1E5FCCF6E2}" EndProject @@ -99,6 +99,16 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BitMagic.ImageHelper.Tester EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "X16KernelTokenGenerator", "BitMagic.X16Debugger\X16KernelTokenGenerator\X16KernelTokenGenerator.csproj", "{315F6888-5BEC-4C36-811C-CB162EA85EFE}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ZiModem", "ZiModem", "{EA9A9461-65C5-4A08-AC88-D691CA7E6D96}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZiModem.Net", "External\BitMagic.ZiModem\managed\ZiModem.Net\ZiModem.Net.csproj", "{169D0060-163E-95B7-FD6B-8E961F82C176}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ZiModemHost", "External\BitMagic.ZiModem\native\ZiModemHost.vcxproj", "{7E3EFF57-92D4-4994-8681-7D99B3F5A5A1}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "BitMagic.X16Debugger", "BitMagic.X16Debugger", "{97EF9954-7ECC-2AD4-D902-769250895DF7}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BitMagic.X16Debugger.Tests", "BitMagic.X16Debugger\BitMagic.X16Debugger.Tests\BitMagic.X16Debugger.Tests.csproj", "{C44DD593-D0B9-47B0-B3F6-58E02C55A5D7}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -481,6 +491,40 @@ Global {315F6888-5BEC-4C36-811C-CB162EA85EFE}.Release|x64.Build.0 = Release|Any CPU {315F6888-5BEC-4C36-811C-CB162EA85EFE}.Release|x86.ActiveCfg = Release|Any CPU {315F6888-5BEC-4C36-811C-CB162EA85EFE}.Release|x86.Build.0 = Release|Any CPU + {169D0060-163E-95B7-FD6B-8E961F82C176}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {169D0060-163E-95B7-FD6B-8E961F82C176}.Debug|Any CPU.Build.0 = Debug|Any CPU + {169D0060-163E-95B7-FD6B-8E961F82C176}.Debug|x64.ActiveCfg = Debug|Any CPU + {169D0060-163E-95B7-FD6B-8E961F82C176}.Debug|x64.Build.0 = Debug|Any CPU + {169D0060-163E-95B7-FD6B-8E961F82C176}.Debug|x86.ActiveCfg = Debug|Any CPU + {169D0060-163E-95B7-FD6B-8E961F82C176}.Debug|x86.Build.0 = Debug|Any CPU + {169D0060-163E-95B7-FD6B-8E961F82C176}.Release|Any CPU.ActiveCfg = Release|Any CPU + {169D0060-163E-95B7-FD6B-8E961F82C176}.Release|Any CPU.Build.0 = Release|Any CPU + {169D0060-163E-95B7-FD6B-8E961F82C176}.Release|x64.ActiveCfg = Release|Any CPU + {169D0060-163E-95B7-FD6B-8E961F82C176}.Release|x64.Build.0 = Release|Any CPU + {169D0060-163E-95B7-FD6B-8E961F82C176}.Release|x86.ActiveCfg = Release|Any CPU + {169D0060-163E-95B7-FD6B-8E961F82C176}.Release|x86.Build.0 = Release|Any CPU + {7E3EFF57-92D4-4994-8681-7D99B3F5A5A1}.Debug|Any CPU.ActiveCfg = Debug|x64 + {7E3EFF57-92D4-4994-8681-7D99B3F5A5A1}.Debug|Any CPU.Build.0 = Debug|x64 + {7E3EFF57-92D4-4994-8681-7D99B3F5A5A1}.Debug|x64.ActiveCfg = Debug|x64 + {7E3EFF57-92D4-4994-8681-7D99B3F5A5A1}.Debug|x64.Build.0 = Debug|x64 + {7E3EFF57-92D4-4994-8681-7D99B3F5A5A1}.Debug|x86.ActiveCfg = Debug|x64 + {7E3EFF57-92D4-4994-8681-7D99B3F5A5A1}.Release|Any CPU.ActiveCfg = Release|x64 + {7E3EFF57-92D4-4994-8681-7D99B3F5A5A1}.Release|Any CPU.Build.0 = Release|x64 + {7E3EFF57-92D4-4994-8681-7D99B3F5A5A1}.Release|x64.ActiveCfg = Release|x64 + {7E3EFF57-92D4-4994-8681-7D99B3F5A5A1}.Release|x64.Build.0 = Release|x64 + {7E3EFF57-92D4-4994-8681-7D99B3F5A5A1}.Release|x86.ActiveCfg = Release|x64 + {C44DD593-D0B9-47B0-B3F6-58E02C55A5D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C44DD593-D0B9-47B0-B3F6-58E02C55A5D7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C44DD593-D0B9-47B0-B3F6-58E02C55A5D7}.Debug|x64.ActiveCfg = Debug|Any CPU + {C44DD593-D0B9-47B0-B3F6-58E02C55A5D7}.Debug|x64.Build.0 = Debug|Any CPU + {C44DD593-D0B9-47B0-B3F6-58E02C55A5D7}.Debug|x86.ActiveCfg = Debug|Any CPU + {C44DD593-D0B9-47B0-B3F6-58E02C55A5D7}.Debug|x86.Build.0 = Debug|Any CPU + {C44DD593-D0B9-47B0-B3F6-58E02C55A5D7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C44DD593-D0B9-47B0-B3F6-58E02C55A5D7}.Release|Any CPU.Build.0 = Release|Any CPU + {C44DD593-D0B9-47B0-B3F6-58E02C55A5D7}.Release|x64.ActiveCfg = Release|Any CPU + {C44DD593-D0B9-47B0-B3F6-58E02C55A5D7}.Release|x64.Build.0 = Release|Any CPU + {C44DD593-D0B9-47B0-B3F6-58E02C55A5D7}.Release|x86.ActiveCfg = Release|Any CPU + {C44DD593-D0B9-47B0-B3F6-58E02C55A5D7}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -515,6 +559,10 @@ Global {CF8BC7BD-5BBA-48D2-A334-747D0D11FFB3} = {25ADB53E-2320-490D-BA5D-A919AF7B42E5} {B47D2EDF-10E7-477B-B0FF-C308AC152CE1} = {25ADB53E-2320-490D-BA5D-A919AF7B42E5} {315F6888-5BEC-4C36-811C-CB162EA85EFE} = {A8C28097-0281-4E86-BEA0-8864A21B72B9} + {EA9A9461-65C5-4A08-AC88-D691CA7E6D96} = {56C1711B-E0BB-40B0-BAF6-77E3206969A6} + {169D0060-163E-95B7-FD6B-8E961F82C176} = {EA9A9461-65C5-4A08-AC88-D691CA7E6D96} + {7E3EFF57-92D4-4994-8681-7D99B3F5A5A1} = {EA9A9461-65C5-4A08-AC88-D691CA7E6D96} + {C44DD593-D0B9-47B0-B3F6-58E02C55A5D7} = {97EF9954-7ECC-2AD4-D902-769250895DF7} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {DFCB7DF5-52B3-4B9B-9814-3EC16549A76F} diff --git a/Directory.Build.props b/Directory.Build.props index f369cd4..6564972 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,16 +1,38 @@ + - BitMagic - 0.1.0 - BitMagic X16 Emulator and Debugger - Yazwh0 - Yazwh0 - AGPL-3.0-or-later - X16 Emulator and Debugger - NugetProject\butterfly.jpg - - - + 0.1.0 + BitMagic X16 Emulator and Debugger + Yazwh0 + X16 Emulator and Debugger + + LICENSE.txt true + + + + + \ No newline at end of file diff --git a/External/BitMagic.ZiModem b/External/BitMagic.ZiModem new file mode 160000 index 0000000..5f335bc --- /dev/null +++ b/External/BitMagic.ZiModem @@ -0,0 +1 @@ +Subproject commit 5f335bc993431f9363a57f0e731894822929cde4 diff --git a/LICENSE b/LICENSE.txt similarity index 100% rename from LICENSE rename to LICENSE.txt diff --git a/version.json b/version.json new file mode 100644 index 0000000..7b6e9a3 --- /dev/null +++ b/version.json @@ -0,0 +1,4 @@ +{ + "$schema": "https://raw.githubusercontent.com/dotnet/Nerdbank.GitVersioning/main/src/NerdBank.GitVersioning/version.schema.json", + "version": "0.1" +}