Monrobot XI Assembly Language Extension
A VS Code extension providing language support for the Monrobot Mark XI assembly language.
Features
Syntax Highlighting
- Full syntax highlighting for all Monrobot XI instructions and directives
- Number format highlighting (sexadecimal, hexadecimal, decimal, binary)
- Comment highlighting
- Label and symbol highlighting
- Register highlighting (FA0-FA6)
IntelliSense
- Code Completion: Instructions, directives, registers, and symbols
- Hover Information: Detailed documentation for instructions, directives, and symbols
- Go to Definition: Navigate to label and symbol definitions
- Document Symbols: Outline view showing labels, constants, and macros
Diagnostics
- Real-time error detection
- Undefined symbol warnings
- Duplicate label detection
- Range checking for operands
- Automatic column alignment
- Configurable alignment columns for labels, mnemonics, operands, and comments
Code Folding
- Fold MACRO/ENDM blocks
- Fold IF*/ENDIF blocks
- Region markers (
; region / ; endregion)
Snippets
- Program templates
- Common code patterns
- Macro templates
- Control flow patterns
Build Integration
- Assemble command (
Ctrl+Shift+B / Cmd+Shift+B)
- Assemble with listing output
- Default output in paper tape format (compatible with dmcnaugh emulator)
- Disassemble paper tape or binary files
- Build tasks
Requirements
- Python 3.8 or later
- The monrobot_xi Python package (assembler/disassembler)
Extension Settings
This extension contributes the following settings:
monrobot-xi.assembler.pythonPath: Path to Python interpreter
monrobot-xi.assembler.assemblerPath: Path to the monrobot_xi assembler directory
monrobot-xi.drum.extended: Enable extended drum mode (2048 words)
monrobot-xi.output.format: Default output format (tape, bin, hex, or sex)
monrobot-xi.diagnostics.enable: Enable real-time diagnostics
monrobot-xi.diagnostics.delay: Delay before running diagnostics (ms)
monrobot-xi.formatting.alignMnemonic: Column for mnemonic alignment
monrobot-xi.formatting.alignOperand: Column for operand alignment
monrobot-xi.formatting.alignComment: Column for comment alignment
Commands
Monrobot XI: Assemble - Assemble the current file (outputs paper tape by default)
Monrobot XI: Assemble with Listing - Assemble with listing output
Monrobot XI: Disassemble File - Disassemble a paper tape or binary file
Keyboard Shortcuts
| Command |
Shortcut |
| Assemble |
Ctrl+Shift+B / Cmd+Shift+B |
Supported File Extensions
Language Reference
Instructions (39 total)
| Category |
Mnemonics |
| Arithmetic |
ADD, SUB, MUL, DET, LOD, STR, XCH, EXT, DETF, MULF, DXFR |
| Control |
JMP, JMK, JZE, JHI, JMKX, JMKS, JMKI |
| I/O |
INP, INPC, OUT, OUTP, IOU |
| Shift |
DSL, DSR, BSL, BSR, BEA, BEAF, BSN |
| Special |
CL6, CL5, SET, NOP, NOPV, NOPZ, NOPP, STP, INI |
| Pseudo |
CON, FLAG |
| MonroCard |
MCR, MCW, MCE |
Advanced Instructions (MO-96ADV)
The extension supports all instructions from the "Advanced Programming Information" manual:
- Fast access arithmetic:
DETF, MULF, DXFR
- I/O extensions:
INPC (CR detection), OUTP (even parity)
- Shift with flag:
BEAF
- Self-modifying code:
JMKX, JMKS, JMKI
- NOP variants:
NOPV, NOPZ, NOPP
- High-order bit generation:
FLAG (SIGN, BIT30-25, HIGH)
Directives
| Directive |
Purpose |
| ORG |
Set origin address |
| EQU |
Define constant |
| DATA/DW |
Define data word |
| DS/RES |
Reserve storage |
| STRING |
Packed string data |
| DRUM |
Set drum mode |
| MACRO/ENDM |
Macro definition |
| IF*/ENDIF |
Conditional assembly |
| INCLUDE |
Include file |
| END |
End assembly |
Registers
- FA0-FA6: Fast access registers
- FA6: Main accumulator
- FA5: Multiplier result / output buffer
- FA2: Return address (set by JMK)
| Format |
Prefix/Suffix |
Example |
| Sexadecimal |
(none) |
3XX, 100S |
| Hexadecimal |
0x or $ |
0x3FF, $100 |
| Decimal |
# or d suffix |
#100, 100d |
| Binary |
% or 0b |
%1010, 0b1111 |
Installation
From VSIX
- Download the
.vsix file
- In VS Code, go to Extensions view (
Ctrl+Shift+X)
- Click the
... menu and select "Install from VSIX..."
- Select the downloaded file
From Source
- Clone the repository
- Run
npm install
- Run
npm run compile
- Press F5 to launch the extension in debug mode
Building the Extension
# Install dependencies
npm install
# Compile TypeScript
npm run compile
# Watch for changes
npm run watch
# Package as VSIX
npx vsce package
Release Notes
1.4.0
Initial public release:
- Syntax highlighting
- Code completion
- Hover documentation
- Go to definition
- Document symbols
- Real-time diagnostics
- Code formatting
- Code folding
- Snippets
- Build integration
License
MIT License - Copyright (c) 2026-present The High Nibble Pty Ltd (ACN 633 867 268)
Contributing
Contributions are welcome! Please feel free to submit issues and pull requests.
| |