Skip to content

Instantly share code, notes, and snippets.

@damieng
Created May 7, 2026 06:28
Show Gist options
  • Select an option

  • Save damieng/5d20fbb9978e7159b75adc38f8c997a5 to your computer and use it in GitHub Desktop.

Select an option

Save damieng/5d20fbb9978e7159b75adc38f8c997a5 to your computer and use it in GitHub Desktop.
Z80 assembly syntax highlighting for Shiki
export default {
name: "z80",
scopeName: "source.z80",
aliases: ["z80asm"],
extensions: [".z80", ".asm", ".inc"],
patterns: [
{ include: "#comment" },
{ include: "#label" },
{ include: "#local-label" },
{ include: "#directive" },
{ include: "#mnemonic" },
{ include: "#hex-number" },
{ include: "#binary-number" },
{ include: "#decimal-number" },
{ include: "#register" },
{ include: "#string" },
],
repository: {
comment: {
name: "comment.line.semicolon.z80",
match: ";.*$",
},
label: {
match: "^([A-Za-z_]\\w*)\\s*:",
captures: {
"1": { name: "entity.name.label.z80" },
},
},
"local-label": {
match: "^(\\.[A-Za-z_]\\w*)\\s*:",
captures: {
"1": { name: "entity.name.label.local.z80" },
},
},
mnemonic: {
name: "keyword.mnemonic.z80",
match:
"\\b(?i:CPDR|CPIR|INDR|INIR|LDDR|LDIR|OTDR|OTIR|RLCA|RRCA|RETI|RETN|CALL|CPD|CPI|DEC|IND|INI|LDD|LDI|NOP|OUT|POP|PUSH|RET|RST|ADC|ADD|AND|BIT|CCF|CPL|DAA|DJNZ|EXX|HALT|NEG|SBC|SCF|SUB|XOR|CP|DI|EI|EX|IM|IN|INC|JP|JR|LD|OR|RES|RLA|RRA|RLC|RRC|RLD|RRD|RL|RR|SET|SLA|SLL|SRA|SRL|OUTD|OUTI)\\b",
},
directive: {
name: "keyword.directive.z80",
match:
"\\b(?i:INCBIN|INCLUDE|IFDEF|IFNDEF|ENDIF|ENDM|DEFS|DEFM|DEFB|DEFW|BLKB|ORG|EQU|END|IF|ELSE|MACRO|ALIGN|MODULE|ENDMOD|PHASE|DEPHASE|PUBLIC|EXTERN|GLOBAL|EXPORT|IMPORT|SECTION|SEGMENT|RELOC|ERROR|WARNING|MESSAGE|PRINT|LIST|NOLIST|PAGE|TITLE|SUBTITLE|OPT|DB|DW|DS|DM|BYTE|WORD|TEXT)\\b",
},
"hex-number": {
name: "constant.numeric.hex.z80",
match: "\\$[0-9A-Fa-f]+|0[xX][0-9A-Fa-f]+|\\b[0-9][0-9A-Fa-f]*[hH]\\b",
},
"binary-number": {
name: "constant.numeric.binary.z80",
match: "%[01]+|\\b[01]+[bB]\\b",
},
"decimal-number": {
name: "constant.numeric.decimal.z80",
match: "\\b[0-9]+\\b",
},
register: {
patterns: [
{
name: "variable.language.register.z80",
match: "\\b(?i:AF'|BC'|DE'|HL')(?!\\w)",
},
{
name: "variable.language.register.z80",
match:
"\\b(?i:AF|BC|DE|HL|SP|PC|IX|IY|NZ|NC|PO|PE|A|B|C|D|E|H|L|I|R)\\b",
},
],
},
string: {
patterns: [
{
name: "string.quoted.single.z80",
begin: "'",
end: "'|$",
patterns: [
{
name: "constant.character.escape.z80",
match: "''",
},
],
},
{
name: "string.quoted.double.z80",
begin: '"',
end: '"|$',
},
],
},
},
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment