Compare commits
28 Commits
Author | SHA1 | Date |
---|---|---|
Matthew Callis | 765fce9827 | |
Matthew Callis | e387111185 | |
Matthew Callis | ada325129d | |
ProbablyNotArtyom | ca009b986b | |
Hoyt Summers Pittman | aa5faf999f | |
Matthew Callis | 32ddd31469 | |
Matthew Callis | 3645d31d58 | |
Matthew Callis | 118052ebc8 | |
Matthew Callis | 4a5733826e | |
Matthew Callis | 6e4108ca91 | |
Michael Lass | 0c3e7c9e25 | |
Matthew Callis | 2dcf07e67b | |
Matthew Callis | e7976a5a95 | |
Matthew Callis | 124e6531f4 | |
Matthew Callis | a0db8c9fbd | |
ProbablyNotArtyom | cbcc0bfce6 | |
ProbablyNotArtyom | 707b9c8bd3 | |
Matthew Callis | c5ff13055f | |
Matthew Callis | a198b529b7 | |
Matthew Callis | 191902076a | |
Matthew Callis | c1b48c5732 | |
Matthew Callis | 0a367c9924 | |
Georg Ziegler | 5ad9fa0be5 | |
Georg Ziegler | f56e593d02 | |
Georg Ziegler | 2578cfb4e3 | |
Georg Ziegler | dafc148662 | |
Georg Ziegler | 1cbcd550e1 | |
Matthew Callis | 032e7d76d7 |
|
@ -0,0 +1,24 @@
|
|||
# v10.4.0
|
||||
|
||||
* Fix operator regex for ACME grammar (again) [#17](https://github.com/MatthewCallis/language-65asm/pull/17)
|
||||
|
||||
# v10.0.0
|
||||
|
||||
* Add support for asm6 assembler
|
||||
|
||||
# v9.0.0
|
||||
|
||||
Added https://github.com/georgjz as a collaborator 🎉
|
||||
|
||||
* Updated ACME Grammar (https://github.com/MatthewCallis/language-65asm/pull/11)
|
||||
* Fix DASM & Merlin, add ASAR, improve CC65 (https://github.com/MatthewCallis/language-65asm/pull/10):
|
||||
* Added a new grammar to support [Asar Assembler](https://github.com/RPGHacker/asar)
|
||||
* Added SPC700 and SuperFX opcodes (extracted from the SNES cc65 grammar)
|
||||
* DASM and Merlin should work now
|
||||
* cc65
|
||||
* Added some missing commands and constants
|
||||
* Changed some scopes to improve readability
|
||||
* Added a new grammar for the linker config files ld65 uses
|
||||
* Updated the link in README.md
|
||||
* Fixed hex numbers with a trailing h
|
||||
* Add missing commands to WDC tools
|
|
@ -4,6 +4,7 @@ Adds syntax highlighting to 65816/65C816/65802/6502/65C02 files in Atom, with ex
|
|||
|
||||
- [ACME Crossassembler](https://sourceforge.net/projects/acme-crossass/)
|
||||
- [Asar SNES Assembler](https://github.com/RPGHacker/asar)
|
||||
- [ASM6f](https://github.com/freem/asm6f) (support for NES emulator Mesen)
|
||||
- [cc65 (SNES Syntax: 65816, SPC700, SuperFX)](https://github.com/cc65/cc65)
|
||||
- [DASM](http://dasm-dillon.sourceforge.net/) (6502)
|
||||
- [EDASM](https://archive.org/details/EDASM-ProDOS_Assembler_Tools_Manual)
|
||||
|
@ -13,6 +14,7 @@ Adds syntax highlighting to 65816/65C816/65802/6502/65C02 files in Atom, with ex
|
|||
- [ORCA/M](http://www.byteworks.us/Byte_Works/Products.html)
|
||||
- [WLA-DX](http://www.villehelin.com/wla.html)
|
||||
- [WTCTools by Western Design Center](http://westerndesigncenter.com/wdc/tools.cfm)
|
||||
- [Kick Assembler](http://theweb.dk/KickAssembler/Main.html#frontpage)
|
||||
|
||||
Originally [converted](http://atom.io/docs/latest/converting-a-text-mate-bundle)
|
||||
from the various other TextMate bundles:
|
||||
|
@ -55,3 +57,5 @@ See last line in grammar files for names.
|
|||
- [ARM9](https://github.com/ARM9)
|
||||
- [georgjz](https://github.com/georgjz)
|
||||
- [GoDot](http://www.godot64.de/)
|
||||
- [Carson Herrington](https://github.com/ProbablyNotArtyom)
|
||||
- [Michael Lass](https://github.com/michaellass)
|
||||
|
|
|
@ -124,8 +124,8 @@ repository:
|
|||
}
|
||||
# Operators
|
||||
{
|
||||
match: '\\!|\\+|\\-|\\/|\\*|<<|>>|&|\\||\\^|=|<|>|\\:|\\|\\|'
|
||||
name: 'keyword.operator'
|
||||
match: '\\!|\\+|\\-|\\/|\\*|<<|>>|&|\\||\\^|=|<|>|\\:'
|
||||
name: 'keyword.operator.acme'
|
||||
}
|
||||
# Operators II
|
||||
{
|
||||
|
|
|
@ -0,0 +1,106 @@
|
|||
# Syntax Highlighting for the asm6 assembler
|
||||
|
||||
scopeName: 'source.asm6'
|
||||
name: 'ASM6f (6502)' # Name shown in Atom Editor grammar selection
|
||||
# File extensions associated with this grammar
|
||||
fileTypes: [
|
||||
's'
|
||||
'asm'
|
||||
]
|
||||
patterns: [
|
||||
{ include: 'source.65c02-opcodes' } # extend with 6502X opcodes
|
||||
{ include: 'source.6502x-opcodes' } # extend with 6502X opcodes
|
||||
{ include: '#comments' } # comments
|
||||
{ include: '#symbols' } # symbols, constants, numbers
|
||||
{ include: '#directives' } # cc65 assembler directives
|
||||
]
|
||||
|
||||
# Repository starts here ------------------------------------------------------
|
||||
repository:
|
||||
|
||||
# comments
|
||||
comments:
|
||||
patterns: [
|
||||
# semicolon comments
|
||||
{
|
||||
match: ';.*$'
|
||||
name: 'comment.line.semicolon.cc65-directives'
|
||||
}
|
||||
]
|
||||
|
||||
# symbols
|
||||
symbols:
|
||||
patterns: [
|
||||
# strings
|
||||
{
|
||||
begin: '[\"\']'
|
||||
beginCaptures:
|
||||
0:
|
||||
name: 'punctuation.definition.string.begin.cc65-directives'
|
||||
end: '[\"\']'
|
||||
endCaptures:
|
||||
0:
|
||||
name: 'punctuation.definition.string.end.cc65-directives'
|
||||
name: 'string.quoted.double.cc65-directives'
|
||||
}
|
||||
# absolut addressing/numbers
|
||||
{
|
||||
match: '\\#(\'.\'|[^\\s\']+)'
|
||||
name: 'constant.numeric.hex.cc65-directives'
|
||||
}
|
||||
# hex, prefixed with dollar sign($)
|
||||
{
|
||||
match: '-?\\$\\b[a-fA-F0-9]+\\b'
|
||||
name: 'constant.numeric.hex.cc65-directives'
|
||||
}
|
||||
# hex, suffixed with h(h)
|
||||
{
|
||||
match: '-?\\b([a-fA-F0-9]+)h\\b'
|
||||
name: 'constant.numeric.hex.cc65-directives'
|
||||
}
|
||||
# binary prefixed with %
|
||||
{
|
||||
match: '%[01]+'
|
||||
name: 'constant.numeric.binary.cc65-directives'
|
||||
}
|
||||
# binary suffixed with b
|
||||
{
|
||||
match: '[01]+[bB]'
|
||||
name: 'constant.numeric.binary.cc65-directives'
|
||||
}
|
||||
# decimal
|
||||
{
|
||||
match: '\\b([0-9]+)\\b'
|
||||
name: 'constant.numeric.decimal.cc65-directives'
|
||||
}
|
||||
]
|
||||
|
||||
# assembler directives
|
||||
directives:
|
||||
patterns: [
|
||||
# ca65 pseudo variables
|
||||
{
|
||||
match: '(\\.)?\\b(?i:equ|include|incsrc|(inc)?bin|db|dw|byte|word|dcb|dcw|(dc\\.b)|(dc\\.w)|ignorenl|endinl|unstable|hunstable|inesprog|ineschr|inesmap|inesmir|nes2chrram|nes2prgram|nes2usb|nes2tv|nes2vs|nes2bram|nes2chrbram)\\b'
|
||||
name: 'support.function.pseudo.cc65-directives'
|
||||
}
|
||||
# ca65 pseudo functions
|
||||
{
|
||||
match: '(\\.)?\\b(?i:dl|dh|hex|(ds\\.?b)|(ds\\.?w)|pad|org|align|fillvalue|base|if|elseif|else|endif|ifdef|ifndef|macro|endm|rept|endr|enum|ende|error)\\b'
|
||||
name: 'support.function.pseudo.cc65-directives'
|
||||
}
|
||||
# address sizes, macpack packages
|
||||
# {
|
||||
# match: '\\b(?i:direct|zeropage|zp|absolute|abs|near|far|long|dword|atari|cbm|cpu|generic|longbranch)\\b'
|
||||
# name: 'constant.language.cc65-directives'
|
||||
# }
|
||||
# Operators
|
||||
{
|
||||
match: '!|&|&&|\\^|\\*|\\/|\\-|\\+|~|=|<=|>=|<<|>>|<>|<|>|\\||\\|\\|\\%'
|
||||
name: 'keyword.operator.cc65-directives'
|
||||
}
|
||||
# Operators II/undocumented opcodes
|
||||
{
|
||||
match: '(\\.)\\b(?i:slo|rla|sre|rra|sax|lax|dcp|isc|anc|alr|arr|axs|las|ahx|shy|shx|tas|xaa)\\b'
|
||||
name: 'keyword.operator.cc65-directives'
|
||||
}
|
||||
]
|
|
@ -1,4 +1,4 @@
|
|||
# Syntax Highlighting for the cc65 toolchain ans 6502 support
|
||||
# Syntax Highlighting for the cc65 toolchain and 6502 support
|
||||
|
||||
scopeName: 'source.assembly.6502.cc65-toolchain'
|
||||
name: '6502 Assembly (cc65)' # Name shown in Atom Editor grammar selection
|
||||
|
|
|
@ -0,0 +1,171 @@
|
|||
scopeName: 'source.assembly.6502.kickass'
|
||||
name: 'Kick Assembler'
|
||||
|
||||
fileTypes: [
|
||||
'a'
|
||||
'asm'
|
||||
's'
|
||||
'S'
|
||||
]
|
||||
|
||||
patterns: [
|
||||
{ include: 'source.65c02-opcodes' }
|
||||
{ include: 'source.6502x-opcodes' }
|
||||
{ include: '#comments' }
|
||||
{ include: '#directives' }
|
||||
{ include: '#symbols' }
|
||||
|
||||
]
|
||||
|
||||
repository:
|
||||
comments:
|
||||
patterns: [
|
||||
{
|
||||
match: '(\\/\\/[^\\n]+)'
|
||||
name: 'comment.line'
|
||||
}
|
||||
{
|
||||
begin: '\\/\\*'
|
||||
end: '\\*\\/'
|
||||
name: 'comment.block'
|
||||
}
|
||||
]
|
||||
symbols:
|
||||
patterns: [
|
||||
|
||||
# ===============================================================
|
||||
# Assembler symbols
|
||||
{ # Labels
|
||||
match: '^\\s*[a-zA-Z_][a-zA-Z0-9_]*:'
|
||||
name: 'entity.name.function.kickass'
|
||||
}
|
||||
{ # Local labels
|
||||
match: '!(:|[\\+\\-]+)'
|
||||
name: 'entity.name.function.kickass'
|
||||
}
|
||||
{ # Variable functions, like var.getValue()
|
||||
match: '(\\w+(?=\\())'
|
||||
name: 'entity.name.function.kickass'
|
||||
}
|
||||
|
||||
# ===============================================================
|
||||
# Data types
|
||||
{ # Chars
|
||||
match: "\\'\\S\\'"
|
||||
name: 'string.char.kickass'
|
||||
}
|
||||
{ # Strings
|
||||
begin: '"'
|
||||
end: '"'
|
||||
name: 'string.quoted.kickass'
|
||||
}
|
||||
|
||||
{ # Hex numbers
|
||||
match: '-?\\$[A-Fa-f0-9]+'
|
||||
name: 'constant.numeric.hex.kickass'
|
||||
}
|
||||
{ # Octals
|
||||
match: '@([0-7]+)\\b'
|
||||
name: 'constant.numeric.octal.kickass'
|
||||
}
|
||||
{ # Binary numbers
|
||||
match: '%[01]+'
|
||||
name: 'constant.numeric.binary.kickass'
|
||||
}
|
||||
{ # Decimal numbers
|
||||
match: '\\b([0-9]+)\\b'
|
||||
name: 'constant.numeric.decimal.kickass'
|
||||
}
|
||||
{ # Immediate values
|
||||
match: '\\#([^\\s]+)'
|
||||
name: 'constant.numeric.hex.kickass'
|
||||
}
|
||||
{ # Constants
|
||||
match: '\\b([_A-Z][_A-Z0-9]+)\\b'
|
||||
name: 'variable.kickass'
|
||||
}
|
||||
]
|
||||
directives:
|
||||
patterns: [
|
||||
|
||||
# ===============================================================
|
||||
# Preprocessor directives
|
||||
{
|
||||
match: '(\\#)((?:define|undef))([\\s\\w]+)'
|
||||
captures:
|
||||
1: name: 'keyword.control.directive.kickass'
|
||||
2: name: 'keyword.control.directive.kickass'
|
||||
3: name: 'variable.kickass'
|
||||
}
|
||||
{
|
||||
match: '(\\#)((?:endif|el(se|if)|if|importif))([\\s\\w]+)'
|
||||
captures:
|
||||
1: name: 'keyword.control.directive.kickass'
|
||||
2: name: 'keyword.control.directive.kickass'
|
||||
4: name: 'variable.kickass'
|
||||
}
|
||||
{
|
||||
match: '(\\#)((import(once)?))([\\s\\w]+)'
|
||||
name: 'keyword.control.directive.kickass'
|
||||
}
|
||||
|
||||
# ===============================================================
|
||||
# Assembler directive conditionals
|
||||
{
|
||||
match: '(\\.)((?:elif|if))'
|
||||
captures:
|
||||
1: name: 'keyword.control.directive.kickass'
|
||||
2: name: 'keyword.control.directive.kickass'
|
||||
}
|
||||
{
|
||||
match: '(\\}?(\\s+)?)(else)'
|
||||
captures:
|
||||
3: name: 'keyword.control.directive.kickass'
|
||||
}
|
||||
|
||||
# ===============================================================
|
||||
# Assembler directives misc
|
||||
{ # Assembler directives that have inconsistant syntax
|
||||
match: '(\\.)((?:return|namespace|print(now)?|by(te)?|align|assert(error)?|break|disk|dw(ord)?|encoding|enum|error(if)?|file(modify|namespace)?|fill(word)?|for|lohifill|memblock|modify|pc|plugin|pseudopc|segment(def|out)?|struct|te(xt)?|while|wo(rd)?|zp|import( binary| c64| source| text|once)))\\b'
|
||||
name: 'keyword.control.directive.kickass'
|
||||
}
|
||||
{
|
||||
match: '(\\}?(\\s+)?)(else)'
|
||||
captures:
|
||||
2: name: 'keyword.control.directive.kickass'
|
||||
}
|
||||
|
||||
# ===============================================================
|
||||
# Variables and Macros
|
||||
{
|
||||
match: '(\\.)(var|eval|const|label)(\\s*[a-zA-Z0-9_]*)(\\s*=)?'
|
||||
captures:
|
||||
1: name: 'keyword.control.directive.kickass'
|
||||
2: name: 'keyword.control.directive.kickass'
|
||||
3: name: 'support.function.kickass'
|
||||
4: name: 'keyword.operator.kickass'
|
||||
}
|
||||
{
|
||||
match: '(?:\\()(var|eval|const|label)(?=\\s*[a-zA-Z0-9_]*)'
|
||||
captures:
|
||||
1: name: 'keyword.control.directive.kickass'
|
||||
2: name: 'support.function.kickass'
|
||||
}
|
||||
{
|
||||
match: '(\\.)(function|macro)([\\s\\w_.]*)(\\()([^)]*)(\\))'
|
||||
captures:
|
||||
1: name: 'keyword.control.directive.kickass'
|
||||
2: name: 'keyword.control.directive.kickass'
|
||||
3: name: 'entity.name.function.kickass'
|
||||
4: name: 'keyword.operator.kickass'
|
||||
5: name: 'constant.variable.kickass'
|
||||
6: name: 'keyword.operator.kickass'
|
||||
}
|
||||
{
|
||||
match: '(\\.)(pseudocommand)(\\s+)([^\\s\\n]+)'
|
||||
captures:
|
||||
1: name: 'keyword.control.directive.kickass'
|
||||
2: name: 'keyword.control.directive.kickass'
|
||||
4: name: 'entity.name.function.kickass'
|
||||
}
|
||||
]
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "language-65asm",
|
||||
"version": "9.0.0",
|
||||
"version": "10.5.0",
|
||||
"description": "Adds syntax highlighting to 65816/65C816/65802/6502/65C02 files in Atom, with extra support for various compilers.",
|
||||
"repository": "git@github.com:MatthewCallis/language-65asm.git",
|
||||
"license": "MIT",
|
||||
|
|
Loading…
Reference in New Issue