diff options
author | Raymaekers Luca <raymaekers.luca@gmail.com> | 2023-02-15 16:31:56 +0100 |
---|---|---|
committer | Raymaekers Luca <raymaekers.luca@gmail.com> | 2023-02-15 16:47:43 +0100 |
commit | 3b2a78935fd6550521f719a10e5b0fceb1ddb350 (patch) | |
tree | 7c50801d6bb5b7abba3df6352ed43df454a4dbcb /config/old/vim/syntax/z80.vim |
Not really but, First commit!
Diffstat (limited to 'config/old/vim/syntax/z80.vim')
-rw-r--r-- | config/old/vim/syntax/z80.vim | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/config/old/vim/syntax/z80.vim b/config/old/vim/syntax/z80.vim new file mode 100644 index 0000000..8bafb14 --- /dev/null +++ b/config/old/vim/syntax/z80.vim @@ -0,0 +1,145 @@ +syn case ignore + +set isk=a-z,A-Z,48-57,',.,_ + +syn sync fromstart + +" Common Z80 Assembly instructions +syn keyword z80Inst adc add and bit call ccf cp cpd cpdr cpi cpir cpl +syn keyword z80Inst daa dec di djnz ei ex exx halt im in +syn keyword z80Inst inc ind ini indr inir jp jr ld ldd lddr ldi ldir +syn keyword z80Inst neg nop or otdr otir out outd outi push pop +syn keyword z80Inst res ret reti retn rl rla rlc rlca rld +syn keyword z80Inst rr rra rrc rrca rrd rst sbc scf set sl1 sla slia sll sra +syn keyword z80Inst srl sub xor + +" Grab the condition too +syn match z80Inst "\s\+jp\s\+n\=[covz]\>" "Match Z C O V NZ NC NO NV +syn match z80Inst "\s\+jp\s\+p[elo]\=\>" "Match P PE PO PL +syn match z80Inst "\s\+jp\s\+mi\=\>" "Match M MI +syn match z80Inst "\s\+jp\s\+eq\>" "Match EQ +syn match z80Inst "\s\+jp\s\+[gn]e\>" "Match NE GE +syn match z80Inst "\s\+jp\s\+lt\>" "Match LT +syn match z80Inst "\s\+jp\s\+sn\=f\>" "Match SF SNF + +syn match z80Inst "\s\+jr\s\+n\=[zc]\>" "Match Z C NZ NC +syn match z80Inst "\s\+jr\s\+eq\>" "Match EQ +syn match z80Inst "\s\+jr\s\+[gn]e\>" "Match NE GE +syn match z80Inst "\s\+jr\s\+lt\>" "Match LT + +syn match z80Inst "\s\+call\s\+n\=[covz]\>" "Match Z C O V NZ NC NO NV +syn match z80Inst "\s\+call\s\+p[elo]\=\>" "Match P PE PO PL +syn match z80Inst "\s\+call\s\+mi\=\>" "Match M MI +syn match z80Inst "\s\+call\s\+eq\>" "Match EQ +syn match z80Inst "\s\+call\s\+[gn]e\>" "Match NE GE +syn match z80Inst "\s\+call\s\+lt\>" "Match LT +syn match z80Inst "\s\+call\s\+sn\=f\>" "Match SF SNF + +syn match z80Inst "\s\+ret\s\+n\=[covz]\>" "Match Z C O V NZ NC NO NV +syn match z80Inst "\s\+ret\s\+p[elo]\=\>" "Match P PE PO PL +syn match z80Inst "\s\+ret\s\+mi\=\>" "Match M MI +syn match z80Inst "\s\+ret\s\+eq\>" "Match EQ +syn match z80Inst "\s\+ret\s\+[gn]e\>" "Match NE GE +syn match z80Inst "\s\+ret\s\+lt\>" "Match LT +syn match z80Inst "\s\+ret\s\+sn\=f\>" "Match SF SNF + +" Registers +syn keyword z80Reg af af' bc de hl ix ixh ixl iy iyh iyl +syn keyword z80Reg sp a b c d e f h i l r + +" Directives +syn keyword z80PreProc equ org map ds defs dw defw db defb module endmodule +syn keyword z80PreProc include incbin macro endmacro repeat rept endrepeat endr +syn keyword z80PreProc ifdef ifndef if else endif rotate defpage page echo error + +syn keyword z80PreProc .equ .org .map .ds .defs .dw .defw .db .defb .module .endmodule +syn keyword z80PreProc .include .incbin .macro .endmacro .repeat .rept .endrepeat .endr +syn keyword z80PreProc .ifdef .ifndef .if .else .endif .rotate .defpage .page .echo .error + +" Strings +syn region z80String start=/"/ skip=/\\"/ end=/"/ oneline +syn region z80String start=/'/ end=/'/ oneline + +" Labels +syn match z80Lbl "[A-Z_.?][A-Z_.?0-9]*:\=" +syn region z80Lbl2 start="(" end=")" oneline contains=z80Number,z80Lbl,z80Lbl2,z80Other + +" Operators +syn match z80Other "[~+\-*/%^&=!<>]" + +" Numbers +syn match z80Number "\<\$\>" +syn match z80Number "\<[01]\+b\>" +syn match z80Number "\<\d\x*h\>" +syn match z80Number "\<\d\+\>" +syn match z80Number "\<%[01]\+\>" +syn match z80Number "\$[0-9a-fA-F]\+" +syn match z80Number "\<&[01]\+\>" +syn match z80Number "\<0x[0-9a-fA-F]\+\>" + +" Indirect register access +syn region z80Reg start=/(ix/ end=/)/ keepend oneline contains=z80Lbl,z80Number,z80Reg,z80Other +syn region z80Reg start=/(iy/ end=/)/ keepend oneline contains=z80Lbl,z80Number,z80Reg,z80Other +syn match z80Reg "(b\=c)" +syn match z80Reg "(de)" +syn match z80Reg "(hl)" +syn match z80Reg "(sp)" + +" Todo +syn keyword cTodo contained TODO FIXME XXX + +" Comments +syn match z80Comment ";.*$" contains=cTodo +syn match z80Comment "^\*$" +syn region z80Comment2 start="\<\.endasm\>" skip="\n" end="\<\.asm\>" keepend contains=z80Comment,z80Comment2 +syn region z80Comment start="\/\*" end="\*\/" contains=cTodo + +hi def link cTodo Todo + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_z80_syntax_inits") +if version < 508 +let did_z80_syntax_inits = 1 +command -nargs=+ HiLink hi link <args> +else +command -nargs=+ HiLink hi def link <args> +endif + +HiLink z80Reg Constant +HiLink z80Lbl Type +HiLink z80Lbl2 Type +HiLink z80Comment Comment +HiLink z80Comment2 Comment +HiLink z80Inst Statement +HiLink z80Include Include +HiLink z80PreProc PreProc +HiLink z80Number Number +HiLink z80String String +HiLink z80Other Operator +HiLink z80Todo Todo + +delcommand HiLink +endif + +let b:current_syntax = "z80" +set ts=4 +set sw=4 + +" fails if comment on same line: +command Z80Swap execute 'norm _wdt,wPld$F,P' +noremap Zp :execute 'Z80Swap'<CR><CR> +command Z80Template execute 'read template.z80' +" Append template to file +noremap Zt :execute 'Z80Template'<CR> +" Set file to template +noremap Zdd :execute 'norm ggdGZt11gg'<CR> +" map [[ ?{<CR>w99[{ +" map ][ /}<CR>b99]} +" map ]] j0[[%/{<CR> +" map [] k$][%?}<CR> +" vim: ts=8 + +":%s/b_call[(]\(.*\)[)]/bcall \1 + |