Skip to content

Commit 71c43d4

Browse files
authored
Feature/vscode extension build (#171)
* VSCode extension detects and uses emulator executable installed in system path (via package manager). * In VSCode extension, if emulator and/or cc65 tool chain are not available in system path, extension no shows notification with instruction. * Build and relase VSCode extension to the VSCode Marketplace. * Update VSCode extension doc
1 parent c4432e6 commit 71c43d4

18 files changed

Lines changed: 739 additions & 114 deletions

.github/workflows/dotnet-avalonia-app-publish-to-gh-pages.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ on:
99
#Trigger when tag is created
1010
push:
1111
tags:
12-
- 'v*.*.*'
12+
- 'v[0-9]*.[0-9]*.[0-9]*'
1313

1414
# Prevent concurrent deployments to GitHub Pages
1515
concurrency:

.github/workflows/dotnet-blazor-app-publish-to-gh-pages.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ on:
99
#Trigger when tag is created
1010
push:
1111
tags:
12-
- 'v*.*.*'
12+
- 'v[0-9]*.[0-9]*.[0-9]*'
1313

1414
# Prevent concurrent deployments to GitHub Pages
1515
concurrency:

.github/workflows/dotnet-push-package.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ on:
44
#Trigger when tag is created
55
push:
66
tags:
7-
- 'v*.*.*'
7+
- 'v[0-9]*.[0-9]*.[0-9]*'
88
env:
99
PROJECT_FILE: "src/libraries/Highbyte.DotNet6502/Highbyte.DotNet6502.csproj"
1010
# PROJECT_FILE2: "src/libraries/Highbyte.DotNet6502.Systems/Highbyte.DotNet6502.Systems.csproj"

.github/workflows/release-desktop-apps.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ on:
1212
jobs:
1313
build-and-upload:
1414
runs-on: ubuntu-latest
15+
if: ${{ !startsWith(github.ref, 'refs/tags/vscode-') }}
1516
permissions:
1617
contents: write
1718

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
# Triggered when a git tag matching vscode-v* is pushed (e.g. vscode-v1.0.0 or vscode-v1.0.0-beta).
2+
# Extracts the version from the tag, patches package.json, and publishes to the VSCode Marketplace.
3+
# Any tag version with a pre-release suffix (e.g. -alpha, -beta) is published as a pre-release.
4+
# The VSCode Marketplace only accepts major.minor.patch, so the suffix is stripped from package.json
5+
# but used to determine whether to pass --pre-release to vsce.
6+
#
7+
# Requires a VSCE_PAT secret configured in GitHub repo settings:
8+
# Azure DevOps -> User Settings -> Personal Access Tokens -> scope: Marketplace (Manage)
9+
name: Release VSCode Extension
10+
11+
on:
12+
push:
13+
tags:
14+
- 'vscode-v*'
15+
16+
# Allow manual triggering for testing (will publish with the provided version)
17+
workflow_dispatch:
18+
inputs:
19+
version:
20+
description: 'Version to publish (e.g. 1.0.0 or 1.0.0-beta)'
21+
required: true
22+
23+
jobs:
24+
publish:
25+
runs-on: ubuntu-latest
26+
27+
steps:
28+
- name: Checkout code
29+
uses: actions/checkout@v4
30+
31+
- name: Extract version from tag or input
32+
run: |
33+
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
34+
echo "VERSION=${{ github.event.inputs.version }}" >> $GITHUB_ENV
35+
else
36+
echo "VERSION=${GITHUB_REF#refs/tags/vscode-v}" >> $GITHUB_ENV
37+
fi
38+
39+
- name: Determine if pre-release and strip suffix for package.json
40+
run: |
41+
if [[ "${{ env.VERSION }}" == *"-"* ]]; then
42+
echo "PRE_RELEASE=--pre-release" >> $GITHUB_ENV
43+
echo "PACKAGE_VERSION=$(echo "${{ env.VERSION }}" | cut -d'-' -f1)" >> $GITHUB_ENV
44+
else
45+
echo "PRE_RELEASE=" >> $GITHUB_ENV
46+
echo "PACKAGE_VERSION=${{ env.VERSION }}" >> $GITHUB_ENV
47+
fi
48+
49+
- name: Setup Node.js
50+
uses: actions/setup-node@v4
51+
with:
52+
node-version: '20'
53+
54+
- name: Install dependencies
55+
working-directory: tools/vscode-extension
56+
run: npm install --ignore-scripts
57+
58+
- name: Set version in package.json
59+
working-directory: tools/vscode-extension
60+
run: npm version ${{ env.PACKAGE_VERSION }} --no-git-tag-version
61+
62+
- name: Publish to VSCode Marketplace
63+
working-directory: tools/vscode-extension
64+
run: npx vsce publish ${{ env.PRE_RELEASE }} --no-git-tag-version
65+
env:
66+
VSCE_PAT: ${{ secrets.VSCE_PAT }}

LICENSE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
MIT License
22

3-
Copyright (c) 2021 Highbyte
3+
Copyright (c) 2021 - 2026 Highbyte
44

55
Permission is hereby granted, free of charge, to any person obtaining a copy
66
of this software and associated documentation files (the "Software"), to deal

tools/vscode-extension-test/samples/smooth_scroller_and_raster2.dbg

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
version major=2,minor=0
22
info csym=0,file=698,lib=1,line=289,mod=2,scope=5,seg=7,span=537,sym=80,type=4
3-
file id=0,name="smooth_scroller_and_raster2.asm",size=10681,mtime=0x699C5A08,mod=0
4-
file id=1,name="smooth_scroller_and_raster2_init.asm",size=509,mtime=0x698F0C33,mod=0
5-
file id=2,name="smooth_scroller_and_raster2_data.asm",size=3099,mtime=0x6995A297,mod=0
3+
file id=0,name="smooth_scroller_and_raster2.asm",size=10681,mtime=0x69B41818,mod=0
4+
file id=1,name="smooth_scroller_and_raster2_init.asm",size=509,mtime=0x69B41818,mod=0
5+
file id=2,name="smooth_scroller_and_raster2_data.asm",size=3099,mtime=0x69B41818,mod=0
66
file id=3,name="cbm/loadaddr.s",size=399,mtime=0x5ED2ADF3,mod=1
77
lib id=0,name="/opt/homebrew/Cellar/cc65/2.19/share/cc65/lib/c64.lib"
88
line id=0,file=0,line=204
Binary file not shown.

tools/vscode-extension/.vscodeignore

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,11 @@ vsc-extension-quickstart.md
88
**/.eslintrc.json
99
**/*.map
1010
**/*.ts
11+
publish.sh
12+
publish.ps1
13+
publish/
14+
PUBLISH.md
15+
IMPLEMENTATION.md
16+
GENERATE_BUILD_TASK.md
17+
node_modules/@vscode/debugadapter/lib/tests/
18+
KNOWN-ISSUES.md
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# Changelog
2+
3+
All notable changes to the **6502 Debugger for dotnet-6502** VSCode extension will be documented here.
4+
5+
## [Unreleased]
6+
7+
## [0.1.2] - 2026-03-28
8+
No extension change, release workflow updated.
9+
10+
## [0.1.1] - 2026-03-28
11+
12+
### Changed
13+
- First automated release via GitHub workflow
14+
- Tweaks to README.md and extensions .vsix contents.
15+
16+
## [0.1.0] - 2026-03-27
17+
18+
### Added
19+
- Initial release of the VSCode extension
20+
- Debug adapter integration for debugging 6502 assembly programs using the dotnet-6502 emulator
21+
- Support for launch (minimal and emulator modes) and attach debug configurations
22+
- Source-level debugging for ca65 `.dbg` files, including multi-component `.dbg` file merging
23+
- Memory viewer panel during debug sessions
24+
- Jump to Line (Set PC) command via editor line number context menu
25+
- Auto-detection of program file from pre-launch task output
26+
- Skip-over-interrupt support when stepping (IRQ/NMI handlers)
27+
- Generate build task and launch config commands via explorer context menu for `.asm` and `.prg` files
28+
- Assembly language configuration for `.asm` files (syntax, breakpoints)
29+
- Dependency checking for cc65 and dotnet-6502 executables in PATH, with install instructions

0 commit comments

Comments
 (0)