simple nano highlighting for unxtal

This commit is contained in:
~d6 2022-03-04 15:30:26 -05:00
parent 3fc2c9f16a
commit 8860f63e7a
2 changed files with 73 additions and 19 deletions

View File

@ -49,7 +49,6 @@
( - search&replace ) ( - search&replace )
( - tab support? ) ( - tab support? )
( - windows line-ending support (CRLF) ) ( - windows line-ending support (CRLF) )
( FIXME: ) ( FIXME: )
( - stop using bytes for row/col/etc. ) ( - stop using bytes for row/col/etc. )
( - consider storing absolute cursor instead ) ( - consider storing absolute cursor instead )
@ -470,9 +469,9 @@
@draw-statusbar ( -> ) @draw-statusbar ( -> )
#0000 ;term/rows LDA2 ;term-move-cursor JSR2 #0000 ;term/rows LDA2 ;term-move-cursor JSR2
ansi ;config/color LDA2 emit emit ;emit-color-reverse JSR2
LIT2 '7 '; emit emit ( ansi ;config/color LDA2 emit emit
LIT 'm emit ( esc [ 33 ; 7 m ) LIT2 '7 '; emit emit LIT 'm emit )
LIT2r 2018 LIT2r 2018
;term/cols LDA2 #0000 ;term/cols LDA2 #0000
&loop GTH2k ,&continue JCN ,&done JMP &loop GTH2k ,&continue JCN ,&done JMP
@ -496,10 +495,12 @@
;cur-abs-row JSR2 INC2 ;emit-dec2 JSR2 ;cur-abs-row JSR2 INC2 ;emit-dec2 JSR2
LIT ') emit LIT ') emit
ansi LIT '0 emit LIT 'm emit ;emit-reset JSR2
( ansi LIT '0 emit LIT 'm emit )
JMP2r JMP2r
@draw-linenum ( n* -> ) @draw-linenum ( n* -> )
;emit-reset JSR2
ansi ;config/color LDA2 emit emit LIT 'm emit ansi ;config/color LDA2 emit emit LIT 'm emit
;emit-dec2-pad JSR2 ;emit-dec2-pad JSR2
ansi LIT2 'm '0 emit emit JMP2r ansi LIT2 'm '0 emit emit JMP2r
@ -519,31 +520,40 @@
@emit-red-dollar ( -> ) @emit-red-dollar ( -> )
;emit-red JSR2 LIT '$ emit ;emit-reset JMP2 ;emit-red JSR2 LIT '$ emit ;emit-reset JMP2
@emit-color-reverse ( -> )
ansi ;config/color LDA2 emit emit LIT2 '7 '; emit emit LIT 'm emit JMP2r
@draw-all ( -> ) @draw-all ( -> )
;term-erase-all JSR2 ;term-erase-all JSR2
#0000 #0000 ;term-move-cursor JSR2 #0000 #0000 ;term-move-cursor JSR2
;buffer/line-offset LDA2 STH2 LIT2r 0001 ( [k line-offset] ) ;buffer/line-offset LDA2 STH2 LIT2r 0001 ( [k line-offset] )
ADD2kr STH2r ;draw-linenum JSR2
;buffer/offset LDA2 ;buffer/offset LDA2
;term/lmargin LDA2 INC2 ,&x STR2 &bol
ADD2kr STH2r ;draw-linenum JSR2
;term/lmargin LDA2 INC2 ,&x STR2
( TODO: use this for cursor-line highlighting and long line support )
( STH2kr ;cursor/row LDA2 INC2 NEQ2 ,&loop JCN
;emit-color-reverse JSR2 )
&loop ( offset [k line-offset] ) &loop ( offset [k line-offset] )
LDAk #00 EQU ,&eof JCN LDAk #00 EQU ,&eof JCN
LDAk #0a EQU ,&eol JCN LDAk #0a EQU ,&eol JCN
,&x LDR2 ;term/cols LDA2 ,&x LDR2 ;term/cols LDA2
LTH2k ,&ok JCN LTH2k ,&ok JCN
GTH2 ,&skip JCN GTH2 ,&skip JCN
;emit-red-dollar JSR2 ,&x LDR2 INC2 ,&x STR2 ;emit-red-dollar JSR2 ,&x LDR2 INC2 ,&x STR2
&skip INC2 ,&loop JMP &skip INC2
,&loop JMP
&ok POP2 POP2 &ok POP2 POP2
LDAk #09 EQU ,&do-tab JCN LDAk #09 EQU ,&do-tab JCN
LDAk emit INC2 ,&x LDR2 INC2 ,&x STR2 ,&loop JMP LDAk emit INC2 ,&x LDR2 INC2 ,&x STR2
&do-tab ;emit-tab JSR2 INC2 ;config/tab-width LDA2 ,&x LDR2 ADD2 ,&x STR2 ,&loop JMP ,&loop JMP
&eol INC2r
STH2kr ;term/rows LDA2 GTH2 ,&done JCN
cr nl INC2 ,&bol JMP
&do-tab ;emit-tab JSR2 INC2
;config/tab-width LDA2 ,&x LDR2 ADD2 ,&x STR2
,&loop JMP
[ &x $2 ] [ &x $2 ]
&eol INC2r STH2kr ;term/rows LDA2 GTH2 ,&done JCN
cr nl INC2
ADD2kr STH2r ;draw-linenum JSR2
;term/lmargin LDA2 INC2 ,&x STR2
,&loop JMP
&eof &eof
;emit-red JSR2 ;emit-red JSR2
&eof-loop &eof-loop

44
tal.nanorc Normal file
View File

@ -0,0 +1,44 @@
# basic syntax for the uxntal assembly language
#
# mostly sticks to ANSI colors with a few exceptions
#
# comments are known to not handle nesting correctly.
# it's not possible to express nested comments using
# just start and end regexes.
# use this syntax for .tal files
syntax tal ".*\.tal"
# characters to insert when comments requested
comment "( | )"
# raw values
color pink "\"[^ ]+"
color pink "'[^ ]"
color pink "\<[0-9a-f]{2}{1,2}\>"
# literals
color bold,green "#[0-9a-f]{2}{1,2}\>"
# absolute addresses
color bold,yellow "(;&?|\.)\S+"
color bold,orange ",&?\S+"
color bold,orange "/\S+"
# relative pads
color yellow "\$[0-9a-f]{1,4}\>"
# instructions
color bold,cyan "\<(BRK|LIT|INC|POP|DUP|NIP|SWP|OVR|ROT|EQU|NEQ|GTH|LTH|JMP|JCN|JSR|STH|LDZ|STZ|LDR|STR|LDA|STA|DEI|DEO|ADD|SUB|MUL|DIV|AND|ORA|EOR|SFT)2?k?r?\>"
# label definitions
color bold,blue "(^|\s)(@|&)\S+"
# macros
color bold,magenta "%\S+"
# absolute pads
color yellow "\|[0-9a-f]{2}{1,2}\>"
# comments
color red start="\(\s" end="\s\)"