VS Code syntax highlighting and code navigation for the High Assembler (HAS) language targeting Motorola 68000 (Amiga).
This extension provides a complete development environment for HAS language, including syntax highlighting, intelligent code navigation, and hover information for cross-file procedure lookups.
Publisher: Piotr Rozentreter
Language: High Amiga Assembler (HAS)
Platform: VS Code 1.85.0+
License: MIT
The extension enables developers to work efficiently with HAS source files by offering features like cross-file navigation, definition lookup, and reference finding—essential for managing large assembly projects with multiple modules.
- Keywords from the language grammar: sections, procedures, control flow, macros, directives, and register hints
- Number formats: decimal,
$/0xhex, and%binary - Strings, comments (
//), size suffixes (.b,.w,.l), registers (d0-d7,a0-a7)
Click while holding Ctrl on any procedure name to jump to its definition
- Works for:
- Local procedures in the same file
- Procedures in other
.hasfiles in the workspace - Assembly labels in
.s(assembler) files
- Automatically searches the workspace to find the definition
- Press F12 while cursor is on a procedure name to jump to definition
- Same as Ctrl+Click navigation
- Press Shift+F12 to find all references to a procedure
- Shows count and navigates through all usages
- Hover over procedure names to see their signature
- Displays parameters and return type
- Shows whether it's a definition (
proc) or forward declaration (func)
| Action | Shortcut |
|---|---|
| Go to Definition | F12 |
| Go to Definition | Ctrl+Click |
| Find References | Shift+F12 |
| Go Back | Ctrl+Alt+Left |
game.has:
extern func update_graphics(x: long) -> long;
code game:
proc main() -> long {
update_graphics(100); // Ctrl+Click jumps to graphics.has
return 0;
}
graphics.has:
code graphics:
proc update_graphics(x: long) -> long {
return 0;
}
game.has:
extern func TakeSystem() -> long; // Ctrl+Click jumps to takeover.s
code app:
proc main() -> long {
TakeSystem();
return 0;
}
takeover.s:
TakeSystem:
movem.l d0-a6,-(sp)
rts- Open VS Code
- Go to Extensions (Ctrl+Shift+X)
- Search for "High Amiga Assembler"
- Click Install
- Reload VS Code if prompted
- Install
vsce:npm install -g @vscode/vsce - Package:
vsce package(produces.vsix) - Install:
code --install-extension <file>.vsix - Reload VS Code
- Open extension folder in VS Code
- Press F5 to launch Extension Host (test instance)
- Open a
.hasfile to test
- Entry point:
extension.js - DefinitionProvider - Locates procedure definitions (Ctrl+Click, F12)
- HoverProvider - Shows signatures on hover
- ReferenceProvider - Finds all usages (Shift+F12)
- Grammar:
syntaxes/highamigassembler.tmLanguage.json - Commands & keybindings:
package.json
- Current file for procedure definitions
- All
.hasfiles in workspace - All
.s(assembly) files in workspace
- Case sensitive (procedure names must match exactly)
- Pattern matching only (simple regex, not full AST)
- Workspace scope only (no external libraries)
- No rename refactoring yet
- Definition provider (Ctrl+Click, F12)
- Hover information (signatures)
- Reference provider (Shift+F12)
- VS Code Marketplace icon
- Syntax highlighting only
Issues, feature requests, and contributions are welcome! Please refer to the main project repository for contribution guidelines.
MIT