← News

0x1DE 0.5.0 is available

September 17, 20260x1DE

0x1DE 0.5.0 is available — the VS Code and VSCodium extension for the Spectrum-family languages. Highlighting is now generated from a language surface: one file per language enumerating its words, literals, comments and blocks, so a word added in one place reaches every editor at once.

Breaking

  • A query naming statement_name no longer compiles. It is statement_definition at column 0 and statement_invocation when indented. Name whichever the query means, or both.
  • A STRUCT member is a struct_member, not a statement. A query reaching members through statement_definition finds none; they carry member_name and either member_size or member_type.
  • The release no longer attaches grammar.js, highlights.scm and tree-sitter-fantasm.wasm as loose files. Each language ships as one <language>-grammar.zip, holding its grammar.js, every query, the generated src/ and the parser wasm. Take the archive.

Added

  • Two new languages. A Boriel ZX BASIC grammar — typed declarations, functions and subs, all six block forms, nesting /' comments, every numeric radix, a$ and n% sigils. And a PASTA/80 grammar — the four declaration sections, records, arrays and pointers, all three comment forms, ABSOLUTE placement, #65 character constants.
  • FantASM 2.0.0’s align and watch, and !virtual … endvirtual blocks.
  • npm run check fails when a generated file no longer matches its surface, naming the file and the first differing line. It runs in CI.
  • injections.scm and outline.scm are published, inside the grammar archives.

Fixed

Colour lost from the line that caused it, and everything after it:

  • !nex version V1.3 broke the parse of its own line, taking the rest of the file’s colours and the outline’s enclosing block with it.
  • #if, assert, assert_checksum, device, debug and init_cycle_limit read as parse errors or macro invocations, and a local label written .loop: read as one too.

Coloured wrongly:

  • A register was read inside a number — 0x2A was not a number, and its a coloured as a register. $FF read as the program counter followed by a name.
  • A STRUCT member named after a directive coloured backwards, the name as a keyword and its size as an operand; a member whose size is another struct coloured as an operand rather than a type.
  • Rhai’s 21 reserved symbols — ===, !==, ->, ++, ... among them — read as ordinary operators, so a ++ b looked like two unary pluses.
  • "a""b" read as two strings. A doubled delimiter inside a Rhai literal is a literal one.
  • Macro invocations and STRUCT instances were listed in the outline as though they were labels.

.s and .fasm are no longer claimed as FantASM by an editor loading the grammar directly, such as Neovim or Helix. .s is the GNU assembler’s; FantASM is .asm and .inc.

This site’s own code samples use these grammars — the FantASM and Rhai blocks throughout the FantASM documentation and the Bizmuth scripting guide are coloured by the same files the editor loads.

Get it from the Downloads page, or from Open VSX.