diff options
author | Erik Osheim <d_m@plastic-idolatry.com> | 2022-03-13 14:57:42 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-13 19:57:42 +0100 |
commit | 96eaebafc848c989e9fc081768e3156add3128fd (patch) | |
tree | 5d324aa2afea7b23f92ff03788739d40f3693e31 | |
parent | 62dd19e9d3e0400fff0aeddabae490797425c87e (diff) | |
download | pygments-git-96eaebafc848c989e9fc081768e3156add3128fd.tar.gz |
Add lexer for parsing Uxntal assembly code. (#2086)
Uxn is a virtual machine which represents a personal computing
playground, and is described here:
https://100r.co/site/uxn.html
Uxntal assembly language is described here:
https://wiki.xxiivv.com/site/uxntal.html
The demo code piano.tal is used with permission.
-rw-r--r-- | AUTHORS | 1 | ||||
-rw-r--r-- | doc/languages.rst | 1 | ||||
-rw-r--r-- | pygments/lexers/_mapping.py | 1 | ||||
-rw-r--r-- | pygments/lexers/tal.py | 73 | ||||
-rw-r--r-- | tests/examplefiles/tal/piano.tal | 559 | ||||
-rw-r--r-- | tests/examplefiles/tal/piano.tal.output | 4465 |
6 files changed, 5100 insertions, 0 deletions
@@ -16,6 +16,7 @@ Other contributors, listed alphabetically, are: * Andreas Amann -- AppleScript lexer * Timothy Armstrong -- Dart lexer fixes * Jeffrey Arnold -- R/S, Rd, BUGS, Jags, and Stan lexers +* Eiríkr Åsheim -- Uxntal lexer * Jeremy Ashkenas -- CoffeeScript lexer * José Joaquín Atria -- Praat lexer * Stefan Matthias Aust -- Smalltalk lexer diff --git a/doc/languages.rst b/doc/languages.rst index f36d6fdc..55e8f6ea 100644 --- a/doc/languages.rst +++ b/doc/languages.rst @@ -181,6 +181,7 @@ Programming languages * `Swift <https://swift.org/>`_ * `Swig <http://swig.org/>`_ * `SuperCollider <https://supercollider.github.io/>`_ +* `Tal <https://wiki.xxiivv.com/site/uxntal.html>`_ * `Tcl <https://www.tcl.tk/about/language.html>`_ * `Tera Term language <https://ttssh2.osdn.jp/>`_ * `TypeScript <https://www.typescriptlang.org/>`_ diff --git a/pygments/lexers/_mapping.py b/pygments/lexers/_mapping.py index 1aa2d146..3d90f447 100644 --- a/pygments/lexers/_mapping.py +++ b/pygments/lexers/_mapping.py @@ -474,6 +474,7 @@ LEXERS = { 'TNTLexer': ('pygments.lexers.tnt', 'Typographic Number Theory', ('tnt',), ('*.tnt',), ()), 'TOMLLexer': ('pygments.lexers.configs', 'TOML', ('toml',), ('*.toml', 'Pipfile', 'poetry.lock'), ()), 'Tads3Lexer': ('pygments.lexers.int_fiction', 'TADS 3', ('tads3',), ('*.t',), ()), + 'TalLexer': ('pygments.lexers.tal', 'Tal', ('tal', 'uxntal'), ('*.tal',), ('text/x-uxntal',)), 'TasmLexer': ('pygments.lexers.asm', 'TASM', ('tasm',), ('*.asm', '*.ASM', '*.tasm'), ('text/x-tasm',)), 'TclLexer': ('pygments.lexers.tcl', 'Tcl', ('tcl',), ('*.tcl', '*.rvt'), ('text/x-tcl', 'text/x-script.tcl', 'application/x-tcl')), 'TcshLexer': ('pygments.lexers.shell', 'Tcsh', ('tcsh', 'csh'), ('*.tcsh', '*.csh'), ('application/x-csh',)), diff --git a/pygments/lexers/tal.py b/pygments/lexers/tal.py new file mode 100644 index 00000000..7bc3fcb1 --- /dev/null +++ b/pygments/lexers/tal.py @@ -0,0 +1,73 @@ +""" + pygments.lexers.tal + ~~~~~~~~~~~~~~~~~~~ + + Lexer for Uxntal + + .. versionadded:: 2.12 + + :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import re + +from pygments.lexer import RegexLexer, words +from pygments.token import Comment, Keyword, Name, String, Number, Punctuation, Whitespace, Literal + +__all__ = ['TalLexer'] + +class TalLexer(RegexLexer): + """ + For `Uxntal <https://wiki.xxiivv.com/site/uxntal.html>`_ source code. + + .. versionadded:: 2.12 + """ + + name = 'Tal' + aliases = ['tal', 'uxntal'] + filenames = ['*.tal'] + mimetypes = ['text/x-uxntal'] + + instructions = [ + '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' + ] + + tokens = { + # the comment delimiters must not be adjacent to non-space characters. + # this means ( foo ) is a valid comment but (foo) is not. this also + # applies to nested comments. + 'comment': [ + (r'(?<!\S)\((?!\S)', Comment.Multiline, '#push'), # nested comments + (r'(?<!\S)\)(?!\S)', Comment.Multiline, '#pop'), # nested comments + (r'[^()]+', Comment.Multiline), # comments + (r'[()]+', Comment.Multiline), # comments + ], + 'root': [ + (r'\s+', Whitespace), # spaces + (r'(?<!\S)\((?!\S)', Comment.Multiline, 'comment'), # comments + (words(instructions, prefix=r'(?<!\S)', suffix=r'2?k?r?(?!\S)'), Keyword.Reserved), # instructions + (r'[][{}](?!\S)', Punctuation), # delimiters + (r'#([0-9a-f]{2}){1,2}(?!\S)', Number.Hex), # integer + (r'"\S+', String), # raw string + (r"'\S(?!\S)", String.Char), # raw char + (r'([0-9a-f]{2}){1,2}(?!\S)', Literal), # raw integer + (r'[|$][0-9a-f]{1,4}(?!\S)', Keyword.Declaration), # abs/rel pad + (r'%\S+', Name.Decorator), # macro + (r'@\S+', Name.Function), # label + (r'&\S+', Name.Label), # sublabel + (r'/\S+', Name.Tag), # spacer + (r'\.\S+', Name.Variable.Magic), # zero page addr + (r',\S+', Name.Variable.Instance), # rel addr + (r';\S+', Name.Variable.Global), # abs addr + (r':\S+', Literal), # raw addr + (r'~\S+', Keyword.Namespace), # include + (r'\S+', Name), + ] + } + + def analyse_text(text): + return '|0100' in text[:500] diff --git a/tests/examplefiles/tal/piano.tal b/tests/examplefiles/tal/piano.tal new file mode 100644 index 00000000..a7472135 --- /dev/null +++ b/tests/examplefiles/tal/piano.tal @@ -0,0 +1,559 @@ +( piano ) + +%+ { ADD } %- { SUB } %* { MUL } %/ { DIV } +%< { LTH } %> { GTH } %= { EQU } %! { NEQ } +%++ { ADD2 } %-- { SUB2 } %** { MUL2 } %// { DIV2 } +%<< { LTH2 } %>> { GTH2 } %== { EQU2 } %!! { NEQ2 } +%!~ { NEQk NIP } + +%HALT { #010f DEO } + +%RTN { JMP2r } +%TOS { #00 SWP } +%MOD { DUP2 / * - } +%GTS2 { #8000 ++ SWP2 #8000 ++ << } +%2/ { #01 SFT } +%2// { #01 SFT2 } +%4// { #02 SFT2 } +%8// { #03 SFT2 } +%8** { #30 SFT2 } + +%AUTO-NONE { #00 .Screen/auto DEO } +%AUTO-X { #01 .Screen/auto DEO } +%AUTO-YADDR { #06 .Screen/auto DEO } + +( devices ) + +|00 @System &vector $2 &wst $1 &rst $1 &pad $4 &r $2 &g $2 &b $2 &debug $1 &halt $1 +|10 @Console &vector $2 &read $1 &pad $5 &write $1 &error $1 +|20 @Screen &vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1 +|30 @Audio0 &vector $2 &position $2 &output $1 &pad $3 &adsr $2 &length $2 &addr $2 &volume $1 &pitch $1 +|80 @Controller &vector $2 &button $1 &key $1 +|90 @Mouse &vector $2 &x $2 &y $2 &state $1 &pad $3 &modx $2 &mody $2 +|a0 @File &vector $2 &success $2 &stat $2 &delete $1 &append $1 &name $2 &length $2 &read $2 &write $2 + +( variables ) + +|0000 + +@last-note $1 +@octave $1 +@pointer + &x $2 &y $2 +@center + &x $2 &y $2 +@adsr-view + &x1 $2 &y1 $2 &x2 $2 &y2 $2 +@wave-view + &x1 $2 &y1 $2 &x2 $2 &y2 $2 +@octave-view + &x1 $2 &y1 $2 &x2 $2 &y2 $2 + +( program ) + +|0100 ( -> ) + + ( theme ) + #0fe5 .System/r DEO2 + #0fc5 .System/g DEO2 + #0f25 .System/b DEO2 + + ( vectors ) + ;on-frame .Screen/vector DEO2 + ;on-control .Controller/vector DEO2 + ;on-mouse .Mouse/vector DEO2 + ;on-message .Console/vector DEO2 + + ( find center ) + .Screen/width DEI2 2// .center/x STZ2 + .Screen/height DEI2 2// .center/y STZ2 + + ( place octave ) + .center/x LDZ2 #0080 -- .octave-view/x1 STZ2 + .center/y LDZ2 #0008 ++ .octave-view/y1 STZ2 + .octave-view/x1 LDZ2 #0050 ++ .octave-view/x2 STZ2 + .octave-view/y1 LDZ2 #0018 ++ .octave-view/y2 STZ2 + + ( place adsr ) + .center/x LDZ2 #0020 -- .adsr-view/x1 STZ2 + .center/y LDZ2 #0008 ++ .adsr-view/y1 STZ2 + .adsr-view/x1 LDZ2 #00a0 ++ .adsr-view/x2 STZ2 + .adsr-view/y1 LDZ2 #0018 ++ .adsr-view/y2 STZ2 + + ( place waveform ) + .center/x LDZ2 #0080 -- .wave-view/x1 STZ2 + .center/y LDZ2 #0020 -- .wave-view/y1 STZ2 + .wave-view/x1 LDZ2 #0100 ++ .wave-view/x2 STZ2 + .wave-view/y1 LDZ2 #0020 ++ .wave-view/y2 STZ2 + + ( default settings ) + #ff .last-note STZ + #041c .Audio0/adsr DEO2 + #dd .Audio0/volume DEO + ;sin-pcm .Audio0/addr DEO2 + #0100 .Audio0/length DEO2 + + ( inital drawing ) + ;draw-octave JSR2 + ;draw-adsr JSR2 + ;draw-wave JSR2 + +BRK + +( this data exists to test literals + as well as multi-line ( and nested ) + comments ) +@test-dat "this 20 "is 20 'a 20 "test 00 +@test-ptr :test-dat + +@on-frame ( -> ) + + .adsr-view/y2 LDZ2 #0020 -- .Screen/y DEO2 + + #10 #00 + &loop + .adsr-view/x2 LDZ2 #003a -- .Screen/x DEO2 + #10 OVR - .Audio0/output DEI #0f AND < .Screen/pixel DEO + .adsr-view/x2 LDZ2 #003a -- INC2 INC2 .Screen/x DEO2 + #10 OVR - .Audio0/output DEI #04 SFT < .Screen/pixel DEO + .Screen/y DEI2 INC2 INC2 .Screen/y DEO2 + INC GTHk ,&loop JCN + POP2 + +BRK + +@on-control ( -> ) + + ( clear last cursor ) + .pointer/x LDZ2 .Screen/x DEO2 + .pointer/y LDZ2 .Screen/y DEO2 + #40 .Screen/sprite DEO + + .Controller/key DEI + [ LIT 'a ] !~ ,&no-c JCN + #30 .octave LDZ #0c * + ;play JSR2 &no-c + [ LIT 's ] !~ ,&no-d JCN + #32 .octave LDZ #0c * + ;play JSR2 &no-d + [ LIT 'd ] !~ ,&no-e JCN + #34 .octave LDZ #0c * + ;play JSR2 &no-e + [ LIT 'f ] !~ ,&no-f JCN + #35 .octave LDZ #0c * + ;play JSR2 &no-f + [ LIT 'g ] !~ ,&no-g JCN + #37 .octave LDZ #0c * + ;play JSR2 &no-g + [ LIT 'h ] !~ ,&no-a JCN + #39 .octave LDZ #0c * + ;play JSR2 &no-a + [ LIT 'j ] !~ ,&no-b JCN + #3b .octave LDZ #0c * + ;play JSR2 &no-b + [ LIT 'k ] !~ ,&no-c2 JCN + #3c .octave LDZ #0c * + ;play JSR2 &no-c2 + [ #1b ] !~ ,&no-esc JCN HALT &no-esc + POP + + ( release ) + #00 .Controller/key DEO + + .Controller/button DEI + DUP #11 ! ,&cu JCN #3c ;play JSR2 &cu + DUP #21 ! ,&cd JCN #3d ;play JSR2 &cd + DUP #41 ! ,&cl JCN #3e ;play JSR2 &cl + DUP #81 ! ,&cr JCN #3f ;play JSR2 &cr + DUP #12 ! ,&au JCN #40 ;play JSR2 &au + DUP #22 ! ,&ad JCN #41 ;play JSR2 &ad + DUP #42 ! ,&al JCN #42 ;play JSR2 &al + DUP #82 ! ,&ar JCN #43 ;play JSR2 &ar + DUP #14 ! ,&su JCN #44 ;play JSR2 &su + DUP #24 ! ,&sd JCN #45 ;play JSR2 &sd + DUP #44 ! ,&sl JCN #46 ;play JSR2 &sl + DUP #84 ! ,&sr JCN #47 ;play JSR2 &sr + DUP #40 ! ,&l JCN .Audio0/addr DEI2 #0010 -- .Audio0/addr DEO2 &l + DUP #80 ! ,&r JCN .Audio0/addr DEI2 #0010 ++ .Audio0/addr DEO2 &r + POP + + ;draw-octave JSR2 + ;draw-wave JSR2 + +BRK + +@on-message ( -> ) + + .Console/read DEI ;play JSR2 + ;draw-octave JSR2 + +BRK + +@on-mouse ( -> ) + + ;draw-cursor JSR2 + + .Mouse/state DEI #00 ! #01 JCN [ BRK ] + + .Mouse/x DEI2 .Mouse/y DEI2 .wave-view ;within-rect JSR2 + ;on-touch-wave-view JCN2 + .Mouse/x DEI2 .Mouse/y DEI2 .adsr-view ;within-rect JSR2 + ;on-touch-adsr-view JCN2 + .Mouse/x DEI2 .Mouse/y DEI2 .octave-view ;within-rect JSR2 + ;on-touch-octave-view JCN2 + +BRK + +@on-touch-wave-view ( -> ) + + .Mouse/x DEI2 .wave-view/x1 LDZ2 -- .Audio0/length DEO2 + ;draw-wave JSR2 + ;draw-cursor JSR2 + +BRK + +@on-touch-octave-view ( -> ) + + .Mouse/x DEI2 .octave-view/x1 LDZ2 -- 8// NIP #09 ! ,&no-mod JCN + .Mouse/y DEI2 .octave-view/y1 LDZ2 -- 8// NIP + [ #00 ] !~ ,&no-incr JCN + .octave LDZ #03 = ,&no-incr JCN + .octave LDZ INC .octave STZ &no-incr + [ #02 ] !~ ,&no-decr JCN + .octave LDZ #ff = ,&no-decr JCN + .octave LDZ #01 - .octave STZ &no-decr + POP + ( release ) #00 .Mouse/state DEO + ;draw-octave JSR2 + BRK + &no-mod + + .Mouse/x DEI2 .octave-view/x1 LDZ2 -- 8// NIP #06 > ,&no-key JCN + .Mouse/x DEI2 .octave-view/x1 LDZ2 -- 8// ;notes ++ LDA .octave LDZ #0c * + ;play JSR2 + ( release ) #00 .Mouse/state DEO + ;draw-octave JSR2 + &no-key + +BRK + +@on-touch-adsr-view ( -> ) + + .Mouse/x DEI2 .adsr-view/x1 LDZ2 -- 8// NIP #03 / + [ #00 ] !~ ,&no-a JCN + .Audio0/adsr DEI + #10 .Mouse/state DEI #10 = #e0 * + + + .Audio0/adsr DEO &no-a + [ #01 ] !~ ,&no-d JCN + .Audio0/adsr DEI + DUP #f0 AND STH #01 .Mouse/state DEI #10 = #0e * + + #0f AND STHr + + .Audio0/adsr DEO &no-d + [ #02 ] !~ ,&no-s JCN + .Audio0/adsr INC DEI + #10 .Mouse/state DEI #10 = #e0 * + + + .Audio0/adsr INC DEO &no-s + [ #03 ] !~ ,&no-r JCN + .Audio0/adsr INC DEI + DUP #f0 AND STH #01 .Mouse/state DEI #10 = #0e * + + #0f AND STHr + + .Audio0/adsr INC DEO &no-r + [ #05 ] !~ ,&no-left JCN + .Audio0/volume DEI + #10 .Mouse/state DEI #10 = #e0 * + + + .Audio0/volume DEO &no-left + [ #06 ] !~ ,&no-right JCN + .Audio0/volume DEI + DUP #f0 AND STH #01 .Mouse/state DEI #10 = #0e * + + #0f AND STHr + + .Audio0/volume DEO &no-right + POP + + ( release ) #00 .Mouse/state DEO + ;draw-adsr JSR2 + ;draw-cursor JSR2 + +BRK + +@play ( pitch -- ) + + DUP #0c MOD .last-note STZ + .Audio0/pitch DEO + +RTN + +@draw-cursor ( -- ) + + ( clear last cursor ) + ;cursor .Screen/addr DEO2 + .pointer/x LDZ2 .Screen/x DEO2 + .pointer/y LDZ2 .Screen/y DEO2 + #40 .Screen/sprite DEO + ( record pointer positions ) + .Mouse/x DEI2 DUP2 .pointer/x STZ2 .Screen/x DEO2 + .Mouse/y DEI2 DUP2 .pointer/y STZ2 .Screen/y DEO2 + ( colorize on state ) + #41 [ .Mouse/state DEI #00 ! ] + .Screen/sprite DEO + +RTN + +@draw-octave ( -- ) + + .octave-view/x1 LDZ2 #0048 ++ .Screen/x DEO2 + + ;arrow-icns .Screen/addr DEO2 + .octave-view/y1 LDZ2 .Screen/y DEO2 + #01 .Screen/sprite DEO + + ;arrow-icns #0008 ++ .Screen/addr DEO2 + .octave-view/y1 LDZ2 #0010 ++ .Screen/y DEO2 + #01 .Screen/sprite DEO + + ;font-hex .octave LDZ #03 + #00 SWP 8** ++ .Screen/addr DEO2 + .octave-view/y1 LDZ2 #0008 ++ .Screen/y DEO2 + #03 .Screen/sprite DEO + + .octave-view/x1 LDZ2 .Screen/x DEO2 + .octave-view/y1 LDZ2 .Screen/y DEO2 + AUTO-YADDR + .last-note LDZ STH + ;keys-left-icns STHkr #00 = INC ,draw-key JSR + ;keys-middle-icns STHkr #02 = INC ,draw-key JSR + ;keys-right-icns STHkr #04 = INC ,draw-key JSR + ;keys-left-icns STHkr #05 = INC ,draw-key JSR + ;keys-middle-icns STHkr #07 = INC ,draw-key JSR + ;keys-middle-icns STHkr #09 = INC ,draw-key JSR + ;keys-right-icns STHr #0b = INC ,draw-key JSR + AUTO-NONE + +RTN + +@draw-key ( addr* color -- ) + + STH + .Screen/addr DEO2 + .Screen/y DEI2 + STHr .Screen/sprite DEOk DEOk DEO + .Screen/x DEI2k #0008 ++ ROT DEO2 + .Screen/y DEO2 + +RTN + +@draw-adsr ( -- ) + + ( adsr ) + .adsr-view/x1 LDZ2 .adsr-view/y1 LDZ2 + .Audio0/adsr DEI #04 SFT + ;draw-knob JSR2 + .adsr-view/x1 LDZ2 #0018 ++ .adsr-view/y1 LDZ2 + .Audio0/adsr DEI #0f AND + ;draw-knob JSR2 + .adsr-view/x1 LDZ2 #0030 ++ .adsr-view/y1 LDZ2 + .Audio0/adsr INC DEI #04 SFT + ;draw-knob JSR2 + .adsr-view/x1 LDZ2 #0048 ++ .adsr-view/y1 LDZ2 + .Audio0/adsr INC DEI #0f AND + ;draw-knob JSR2 + ( volume ) + .adsr-view/x2 LDZ2 #0028 -- .adsr-view/y1 LDZ2 + .Audio0/volume DEI #04 SFT + ;draw-knob JSR2 + .adsr-view/x2 LDZ2 #0010 -- .adsr-view/y1 LDZ2 + .Audio0/volume DEI #0f AND + ;draw-knob JSR2 + +RTN + +@draw-wave ( -- ) + + ( clear ) + .wave-view/x1 LDZ2 + .wave-view/y1 LDZ2 + .wave-view/x2 LDZ2 INC2 + .wave-view/y2 LDZ2 + #00 ;fill-rect JSR2 + + #01 ;draw-wave-length JSR2 + + .wave-view/x1 LDZ2 .Screen/x DEO2 + + ( waveform ) + #ff #00 + &loop + ( dotted line ) + DUP #01 AND ,&no-dot JCN + .wave-view/y1 LDZ2 #0010 ++ .Screen/y DEO2 + #03 .Screen/pixel DEO + &no-dot + #00 OVR .Audio0/addr DEI2 ++ LDA + 2/ + TOS 4// .wave-view/y1 LDZ2 ++ .Screen/y DEO2 + .Screen/x DEI2 INC2 .Screen/x DEO2 + ( draw ) DUP + .Audio0/length DEI2 NIP > + .Audio0/length DEI2 #0100 !! #0101 == DUP ADD INC .Screen/pixel DEO + INC GTHk ,&loop JCN + POP2 + + ( range ) + AUTO-X + .wave-view/x1 LDZ2 .Screen/x DEO2 + .wave-view/y1 LDZ2 #0010 -- .Screen/y DEO2 + .Audio0/addr DEI2 #02 ;draw-short JSR2 + .wave-view/x2 LDZ2 #0020 -- .Screen/x DEO2 + .Audio0/length DEI2 #02 ;draw-short JSR2 + AUTO-NONE + +RTN + +@draw-wave-length ( color -- ) + + STH + .wave-view/x1 LDZ2 .Audio0/length DEI2 ++ .Screen/x DEO2 + .wave-view/y1 LDZ2 DUP2 #0020 ++ SWP2 + &loop + DUP2 .Screen/y DEO2 + ( draw ) STHkr .Screen/pixel DEO + INC2 GTH2k ,&loop JCN + POP2 POP2 + POPr + +RTN + +@draw-knob ( x* y* value -- ) + + ( load ) STH .Screen/y DEO2 .Screen/x DEO2 + ;knob-icns .Screen/addr DEO2 + ( draw ) #01 .Screen/sprite DEO + .Screen/x DEI2 #0008 ++ .Screen/x DEO2 + ;knob-icns #0008 ++ .Screen/addr DEO2 + ( draw ) #01 .Screen/sprite DEO + .Screen/y DEI2 #0008 ++ .Screen/y DEO2 + ;knob-icns #0018 ++ .Screen/addr DEO2 + ( draw ) #01 .Screen/sprite DEO + .Screen/x DEI2 #0008 -- .Screen/x DEO2 + ;knob-icns #0010 ++ .Screen/addr DEO2 + ( draw ) #01 .Screen/sprite DEO + .Screen/x DEI2 #0004 ++ .Screen/x DEO2 + .Screen/y DEI2 #0008 ++ .Screen/y DEO2 + ;font-hex #00 STHkr #30 SFT ++ .Screen/addr DEO2 + ( draw ) #01 .Screen/sprite DEO + .Screen/x DEI2 #0004 -- #00 #00 STHkr ;knob-offsetx ++ LDA ++ .Screen/x DEO2 + .Screen/y DEI2 #0010 -- #00 #00 STHr ;knob-offsety ++ LDA ++ .Screen/y DEO2 + ;knob-icns #0020 ++ .Screen/addr DEO2 + ( draw ) #05 .Screen/sprite DEO + +RTN + +@draw-short ( short* color -- ) + + STH + SWP STHkr ,draw-byte JSR + STHr + +@draw-byte ( byte color -- ) + + STH + DUP #04 SFT STHkr ,draw-hex JSR #0f AND + STHr + +@draw-hex ( char color -- ) + + SWP TOS 8** ;font-hex ++ .Screen/addr DEO2 + .Screen/sprite DEO + +RTN + +@fill-rect ( x1* y1* x2* y2* color -- ) + + ,&color STR + ( x1 x2 y1 y2 ) ROT2 + &ver + ( save ) DUP2 .Screen/y DEO2 + STH2 STH2 OVR2 OVR2 SWP2 + &hor + ( save ) DUP2 .Screen/x DEO2 + ( draw ) ,&color LDR .Screen/pixel DEO + ( incr ) INC2 + OVR2 OVR2 GTS2 ,&hor JCN + POP2 POP2 STH2r STH2r + ( incr ) INC2 + OVR2 OVR2 GTS2 ,&ver JCN + POP2 POP2 POP2 POP2 + +RTN + &color $1 + +@within-rect ( x* y* rect -- flag ) + + STH + ( y < rect.y1 ) DUP2 STHkr #02 ADD LDZ2 LTH2 ,&skip JCN + ( y > rect.y2 ) DUP2 STHkr #06 ADD LDZ2 GTH2 ,&skip JCN + SWP2 + ( x < rect.x1 ) DUP2 STHkr LDZ2 LTH2 ,&skip JCN + ( x > rect.x2 ) DUP2 STHkr #04 ADD LDZ2 GTH2 ,&skip JCN + POP2 POP2 POPr + #01 +RTN + &skip + POP2 POP2 POPr + #00 + +RTN + +@cursor + 80c0 e0f0 f8e0 1000 + +@arrow-icns + 0010 387c fe10 1000 + 0010 1010 fe7c 3810 + +@notes + 30 32 34 35 + 37 39 3b 3c + +@keys-left-icns + 7c7c 7c7c 7c7c 7c7c + 7c7c 7c7c 7c7c 7e7f + 7f7f 7f7f 7f7f 3e00 + +@keys-middle-icns + 1c1c 1c1c 1c1c 1c1c + 1c1c 1c1c 1c1c 3e7f + 7f7f 7f7f 7f7f 3e00 + +@keys-right-icns + 1f1f 1f1f 1f1f 1f1f + 1f1f 1f1f 1f1f 3f7f + 7f7f 7f7f 7f7f 3e00 + +@knob-icns + 0003 0c10 2020 4040 + 00c0 3008 0404 0202 + 4040 2020 100c 0300 + 0202 0404 0830 c000 + 0000 183c 3c18 0000 + +@knob-offsetx + 01 00 00 00 00 01 02 03 + 05 06 07 08 08 08 08 07 + +@knob-offsety + 07 06 05 03 02 01 00 00 + 00 00 01 02 03 05 06 07 + +@font-hex ( 0-F ) + 007c 8282 8282 827c 0030 1010 1010 1010 + 007c 8202 7c80 80fe 007c 8202 1c02 827c + 000c 1424 4484 fe04 00fe 8080 7c02 827c + 007c 8280 fc82 827c 007c 8202 1e02 0202 + 007c 8282 7c82 827c 007c 8282 7e02 827c + 007c 8202 7e82 827e 00fc 8282 fc82 82fc + 007c 8280 8080 827c 00fc 8282 8282 82fc + 007c 8280 f080 827c 007c 8280 f080 8080 + +@sin-pcm + 8083 8689 8c8f 9295 989b 9ea1 a4a7 aaad + b0b3 b6b9 bbbe c1c3 c6c9 cbce d0d2 d5d7 + d9db dee0 e2e4 e6e7 e9eb ecee f0f1 f2f4 + f5f6 f7f8 f9fa fbfb fcfd fdfe fefe fefe + fffe fefe fefe fdfd fcfb fbfa f9f8 f7f6 + f5f4 f2f1 f0ee eceb e9e7 e6e4 e2e0 dedb + d9d7 d5d2 d0ce cbc9 c6c3 c1be bbb9 b6b3 + b0ad aaa7 a4a1 9e9b 9895 928f 8c89 8683 + 807d 7a77 7471 6e6b 6865 625f 5c59 5653 + 504d 4a47 4542 3f3d 3a37 3532 302e 2b29 + 2725 2220 1e1c 1a19 1715 1412 100f 0e0c + 0b0a 0908 0706 0505 0403 0302 0202 0202 + 0102 0202 0202 0303 0405 0506 0708 090a + 0b0c 0e0f 1012 1415 1719 1a1c 1e20 2225 + 2729 2b2e 3032 3537 3a3d 3f42 4547 4a4d + 5053 5659 5c5f 6265 686b 6e71 7477 7a7d diff --git a/tests/examplefiles/tal/piano.tal.output b/tests/examplefiles/tal/piano.tal.output new file mode 100644 index 00000000..9a7e8041 --- /dev/null +++ b/tests/examplefiles/tal/piano.tal.output @@ -0,0 +1,4465 @@ +'(' Comment.Multiline +' piano ' Comment.Multiline +')' Comment.Multiline +'\n\n' Text.Whitespace + +'%+' Name.Decorator +' ' Text.Whitespace +'{' Punctuation +' ' Text.Whitespace +'ADD' Keyword.Reserved +' ' Text.Whitespace +'}' Punctuation +' ' Text.Whitespace +'%-' Name.Decorator +' ' Text.Whitespace +'{' Punctuation +' ' Text.Whitespace +'SUB' Keyword.Reserved +' ' Text.Whitespace +'}' Punctuation +' ' Text.Whitespace +'%*' Name.Decorator +' ' Text.Whitespace +'{' Punctuation +' ' Text.Whitespace +'MUL' Keyword.Reserved +' ' Text.Whitespace +'}' Punctuation +' ' Text.Whitespace +'%/' Name.Decorator +' ' Text.Whitespace +'{' Punctuation +' ' Text.Whitespace +'DIV' Keyword.Reserved +' ' Text.Whitespace +'}' Punctuation +'\n' Text.Whitespace + +'%<' Name.Decorator +' ' Text.Whitespace +'{' Punctuation +' ' Text.Whitespace +'LTH' Keyword.Reserved +' ' Text.Whitespace +'}' Punctuation +' ' Text.Whitespace +'%>' Name.Decorator +' ' Text.Whitespace +'{' Punctuation +' ' Text.Whitespace +'GTH' Keyword.Reserved +' ' Text.Whitespace +'}' Punctuation +' ' Text.Whitespace +'%=' Name.Decorator +' ' Text.Whitespace +'{' Punctuation +' ' Text.Whitespace +'EQU' Keyword.Reserved +' ' Text.Whitespace +'}' Punctuation +' ' Text.Whitespace +'%!' Name.Decorator +' ' Text.Whitespace +'{' Punctuation +' ' Text.Whitespace +'NEQ' Keyword.Reserved +' ' Text.Whitespace +'}' Punctuation +'\n' Text.Whitespace + +'%++' Name.Decorator +' ' Text.Whitespace +'{' Punctuation +' ' Text.Whitespace +'ADD2' Keyword.Reserved +' ' Text.Whitespace +'}' Punctuation +' ' Text.Whitespace +'%--' Name.Decorator +' ' Text.Whitespace +'{' Punctuation +' ' Text.Whitespace +'SUB2' Keyword.Reserved +' ' Text.Whitespace +'}' Punctuation +' ' Text.Whitespace +'%**' Name.Decorator +' ' Text.Whitespace +'{' Punctuation +' ' Text.Whitespace +'MUL2' Keyword.Reserved +' ' Text.Whitespace +'}' Punctuation +' ' Text.Whitespace +'%//' Name.Decorator +' ' Text.Whitespace +'{' Punctuation +' ' Text.Whitespace +'DIV2' Keyword.Reserved +' ' Text.Whitespace +'}' Punctuation +'\n' Text.Whitespace + +'%<<' Name.Decorator +' ' Text.Whitespace +'{' Punctuation +' ' Text.Whitespace +'LTH2' Keyword.Reserved +' ' Text.Whitespace +'}' Punctuation +' ' Text.Whitespace +'%>>' Name.Decorator +' ' Text.Whitespace +'{' Punctuation +' ' Text.Whitespace +'GTH2' Keyword.Reserved +' ' Text.Whitespace +'}' Punctuation +' ' Text.Whitespace +'%==' Name.Decorator +' ' Text.Whitespace +'{' Punctuation +' ' Text.Whitespace +'EQU2' Keyword.Reserved +' ' Text.Whitespace +'}' Punctuation +' ' Text.Whitespace +'%!!' Name.Decorator +' ' Text.Whitespace +'{' Punctuation +' ' Text.Whitespace +'NEQ2' Keyword.Reserved +' ' Text.Whitespace +'}' Punctuation +'\n' Text.Whitespace + +'%!~' Name.Decorator +' ' Text.Whitespace +'{' Punctuation +' ' Text.Whitespace +'NEQk' Keyword.Reserved +' ' Text.Whitespace +'NIP' Keyword.Reserved +' ' Text.Whitespace +'}' Punctuation +'\n\n' Text.Whitespace + +'%HALT' Name.Decorator +' ' Text.Whitespace +'{' Punctuation +' ' Text.Whitespace +'#010f' Literal.Number.Hex +' ' Text.Whitespace +'DEO' Keyword.Reserved +' ' Text.Whitespace +'}' Punctuation +'\n\n' Text.Whitespace + +'%RTN' Name.Decorator +' ' Text.Whitespace +'{' Punctuation +' ' Text.Whitespace +'JMP2r' Keyword.Reserved +' ' Text.Whitespace +'}' Punctuation +'\n' Text.Whitespace + +'%TOS' Name.Decorator +' ' Text.Whitespace +'{' Punctuation +' ' Text.Whitespace +'#00' Literal.Number.Hex +' ' Text.Whitespace +'SWP' Keyword.Reserved +' ' Text.Whitespace +'}' Punctuation +'\n' Text.Whitespace + +'%MOD' Name.Decorator +' ' Text.Whitespace +'{' Punctuation +' ' Text.Whitespace +'DUP2' Keyword.Reserved +' ' Text.Whitespace +'/' Name +' ' Text.Whitespace +'*' Name +' ' Text.Whitespace +'-' Name +' ' Text.Whitespace +'}' Punctuation +'\n' Text.Whitespace + +'%GTS2' Name.Decorator +' ' Text.Whitespace +'{' Punctuation +' ' Text.Whitespace +'#8000' Literal.Number.Hex +' ' Text.Whitespace +'++' Name +' ' Text.Whitespace +'SWP2' Keyword.Reserved +' ' Text.Whitespace +'#8000' Literal.Number.Hex +' ' Text.Whitespace +'++' Name +' ' Text.Whitespace +'<<' Name +' ' Text.Whitespace +'}' Punctuation +'\n' Text.Whitespace + +'%2/' Name.Decorator +' ' Text.Whitespace +'{' Punctuation +' ' Text.Whitespace +'#01' Literal.Number.Hex +' ' Text.Whitespace +'SFT' Keyword.Reserved +' ' Text.Whitespace +'}' Punctuation +'\n' Text.Whitespace + +'%2//' Name.Decorator +' ' Text.Whitespace +'{' Punctuation +' ' Text.Whitespace +'#01' Literal.Number.Hex +' ' Text.Whitespace +'SFT2' Keyword.Reserved +' ' Text.Whitespace +'}' Punctuation +'\n' Text.Whitespace + +'%4//' Name.Decorator +' ' Text.Whitespace +'{' Punctuation +' ' Text.Whitespace +'#02' Literal.Number.Hex +' ' Text.Whitespace +'SFT2' Keyword.Reserved +' ' Text.Whitespace +'}' Punctuation +'\n' Text.Whitespace + +'%8//' Name.Decorator +' ' Text.Whitespace +'{' Punctuation +' ' Text.Whitespace +'#03' Literal.Number.Hex +' ' Text.Whitespace +'SFT2' Keyword.Reserved +' ' Text.Whitespace +'}' Punctuation +'\n' Text.Whitespace + +'%8**' Name.Decorator +' ' Text.Whitespace +'{' Punctuation +' ' Text.Whitespace +'#30' Literal.Number.Hex +' ' Text.Whitespace +'SFT2' Keyword.Reserved +' ' Text.Whitespace +'}' Punctuation +'\n\n' Text.Whitespace + +'%AUTO-NONE' Name.Decorator +' ' Text.Whitespace +'{' Punctuation +' ' Text.Whitespace +'#00' Literal.Number.Hex +' ' Text.Whitespace +'.Screen/auto' Name.Variable.Magic +' ' Text.Whitespace +'DEO' Keyword.Reserved +' ' Text.Whitespace +'}' Punctuation +'\n' Text.Whitespace + +'%AUTO-X' Name.Decorator +' ' Text.Whitespace +'{' Punctuation +' ' Text.Whitespace +'#01' Literal.Number.Hex +' ' Text.Whitespace +'.Screen/auto' Name.Variable.Magic +' ' Text.Whitespace +'DEO' Keyword.Reserved +' ' Text.Whitespace +'}' Punctuation +'\n' Text.Whitespace + +'%AUTO-YADDR' Name.Decorator +' ' Text.Whitespace +'{' Punctuation +' ' Text.Whitespace +'#06' Literal.Number.Hex +' ' Text.Whitespace +'.Screen/auto' Name.Variable.Magic +' ' Text.Whitespace +'DEO' Keyword.Reserved +' ' Text.Whitespace +'}' Punctuation +'\n\n' Text.Whitespace + +'(' Comment.Multiline +' devices ' Comment.Multiline +')' Comment.Multiline +'\n\n' Text.Whitespace + +'|00' Keyword.Declaration +' ' Text.Whitespace +'@System' Name.Function +' ' Text.Whitespace +'&vector' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +' ' Text.Whitespace +'&wst' Name.Label +' ' Text.Whitespace +'$1' Keyword.Declaration +' ' Text.Whitespace +'&rst' Name.Label +' ' Text.Whitespace +'$1' Keyword.Declaration +' ' Text.Whitespace +'&pad' Name.Label +' ' Text.Whitespace +'$4' Keyword.Declaration +' ' Text.Whitespace +'&r' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +' ' Text.Whitespace +'&g' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +' ' Text.Whitespace +'&b' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +' ' Text.Whitespace +'&debug' Name.Label +' ' Text.Whitespace +'$1' Keyword.Declaration +' ' Text.Whitespace +'&halt' Name.Label +' ' Text.Whitespace +'$1' Keyword.Declaration +'\n' Text.Whitespace + +'|10' Keyword.Declaration +' ' Text.Whitespace +'@Console' Name.Function +' ' Text.Whitespace +'&vector' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +' ' Text.Whitespace +'&read' Name.Label +' ' Text.Whitespace +'$1' Keyword.Declaration +' ' Text.Whitespace +'&pad' Name.Label +' ' Text.Whitespace +'$5' Keyword.Declaration +' ' Text.Whitespace +'&write' Name.Label +' ' Text.Whitespace +'$1' Keyword.Declaration +' ' Text.Whitespace +'&error' Name.Label +' ' Text.Whitespace +'$1' Keyword.Declaration +'\n' Text.Whitespace + +'|20' Keyword.Declaration +' ' Text.Whitespace +'@Screen' Name.Function +' ' Text.Whitespace +'&vector' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +' ' Text.Whitespace +'&width' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +' ' Text.Whitespace +'&height' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +' ' Text.Whitespace +'&auto' Name.Label +' ' Text.Whitespace +'$1' Keyword.Declaration +' ' Text.Whitespace +'&pad' Name.Label +' ' Text.Whitespace +'$1' Keyword.Declaration +' ' Text.Whitespace +'&x' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +' ' Text.Whitespace +'&y' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +' ' Text.Whitespace +'&addr' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +' ' Text.Whitespace +'&pixel' Name.Label +' ' Text.Whitespace +'$1' Keyword.Declaration +' ' Text.Whitespace +'&sprite' Name.Label +' ' Text.Whitespace +'$1' Keyword.Declaration +'\n' Text.Whitespace + +'|30' Keyword.Declaration +' ' Text.Whitespace +'@Audio0' Name.Function +' ' Text.Whitespace +'&vector' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +' ' Text.Whitespace +'&position' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +' ' Text.Whitespace +'&output' Name.Label +' ' Text.Whitespace +'$1' Keyword.Declaration +' ' Text.Whitespace +'&pad' Name.Label +' ' Text.Whitespace +'$3' Keyword.Declaration +' ' Text.Whitespace +'&adsr' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +' ' Text.Whitespace +'&length' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +' ' Text.Whitespace +'&addr' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +' ' Text.Whitespace +'&volume' Name.Label +' ' Text.Whitespace +'$1' Keyword.Declaration +' ' Text.Whitespace +'&pitch' Name.Label +' ' Text.Whitespace +'$1' Keyword.Declaration +'\n' Text.Whitespace + +'|80' Keyword.Declaration +' ' Text.Whitespace +'@Controller' Name.Function +' ' Text.Whitespace +'&vector' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +' ' Text.Whitespace +'&button' Name.Label +' ' Text.Whitespace +'$1' Keyword.Declaration +' ' Text.Whitespace +'&key' Name.Label +' ' Text.Whitespace +'$1' Keyword.Declaration +'\n' Text.Whitespace + +'|90' Keyword.Declaration +' ' Text.Whitespace +'@Mouse' Name.Function +' ' Text.Whitespace +'&vector' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +' ' Text.Whitespace +'&x' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +' ' Text.Whitespace +'&y' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +' ' Text.Whitespace +'&state' Name.Label +' ' Text.Whitespace +'$1' Keyword.Declaration +' ' Text.Whitespace +'&pad' Name.Label +' ' Text.Whitespace +'$3' Keyword.Declaration +' ' Text.Whitespace +'&modx' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +' ' Text.Whitespace +'&mody' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +'\n' Text.Whitespace + +'|a0' Keyword.Declaration +' ' Text.Whitespace +'@File' Name.Function +' ' Text.Whitespace +'&vector' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +' ' Text.Whitespace +'&success' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +' ' Text.Whitespace +'&stat' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +' ' Text.Whitespace +'&delete' Name.Label +' ' Text.Whitespace +'$1' Keyword.Declaration +' ' Text.Whitespace +'&append' Name.Label +' ' Text.Whitespace +'$1' Keyword.Declaration +' ' Text.Whitespace +'&name' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +' ' Text.Whitespace +'&length' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +' ' Text.Whitespace +'&read' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +' ' Text.Whitespace +'&write' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +'\n\n' Text.Whitespace + +'(' Comment.Multiline +' variables ' Comment.Multiline +')' Comment.Multiline +'\n\n' Text.Whitespace + +'|0000' Keyword.Declaration +'\n\n' Text.Whitespace + +'@last-note' Name.Function +' ' Text.Whitespace +'$1' Keyword.Declaration +'\n' Text.Whitespace + +'@octave' Name.Function +' ' Text.Whitespace +'$1' Keyword.Declaration +'\n' Text.Whitespace + +'@pointer' Name.Function +' \n\t' Text.Whitespace +'&x' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +' ' Text.Whitespace +'&y' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +'\n' Text.Whitespace + +'@center' Name.Function +' \n\t' Text.Whitespace +'&x' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +' ' Text.Whitespace +'&y' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +'\n' Text.Whitespace + +'@adsr-view' Name.Function +' \n\t' Text.Whitespace +'&x1' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +' ' Text.Whitespace +'&y1' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +' ' Text.Whitespace +'&x2' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +' ' Text.Whitespace +'&y2' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +'\n' Text.Whitespace + +'@wave-view' Name.Function +' \n\t' Text.Whitespace +'&x1' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +' ' Text.Whitespace +'&y1' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +' ' Text.Whitespace +'&x2' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +' ' Text.Whitespace +'&y2' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +'\n' Text.Whitespace + +'@octave-view' Name.Function +' \n\t' Text.Whitespace +'&x1' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +' ' Text.Whitespace +'&y1' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +' ' Text.Whitespace +'&x2' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +' ' Text.Whitespace +'&y2' Name.Label +' ' Text.Whitespace +'$2' Keyword.Declaration +'\n\n' Text.Whitespace + +'(' Comment.Multiline +' program ' Comment.Multiline +')' Comment.Multiline +'\n\n' Text.Whitespace + +'|0100' Keyword.Declaration +' ' Text.Whitespace +'(' Comment.Multiline +' -> ' Comment.Multiline +')' Comment.Multiline +'\n\t\n\t' Text.Whitespace +'(' Comment.Multiline +' theme ' Comment.Multiline +')' Comment.Multiline +' \n\t' Text.Whitespace +'#0fe5' Literal.Number.Hex +' ' Text.Whitespace +'.System/r' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +' \n\t' Text.Whitespace +'#0fc5' Literal.Number.Hex +' ' Text.Whitespace +'.System/g' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +' \n\t' Text.Whitespace +'#0f25' Literal.Number.Hex +' ' Text.Whitespace +'.System/b' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +'\n\n\t' Text.Whitespace +'(' Comment.Multiline +' vectors ' Comment.Multiline +')' Comment.Multiline +' \n\t' Text.Whitespace +';on-frame' Name.Variable.Global +' ' Text.Whitespace +'.Screen/vector' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +'\n\t' Text.Whitespace +';on-control' Name.Variable.Global +' ' Text.Whitespace +'.Controller/vector' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +'\n\t' Text.Whitespace +';on-mouse' Name.Variable.Global +' ' Text.Whitespace +'.Mouse/vector' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +'\n\t' Text.Whitespace +';on-message' Name.Variable.Global +' ' Text.Whitespace +'.Console/vector' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +'\n\n\t' Text.Whitespace +'(' Comment.Multiline +' find center ' Comment.Multiline +')' Comment.Multiline +'\n\t' Text.Whitespace +'.Screen/width' Name.Variable.Magic +' ' Text.Whitespace +'DEI2' Keyword.Reserved +' ' Text.Whitespace +'2//' Name +' ' Text.Whitespace +'.center/x' Name.Variable.Magic +' ' Text.Whitespace +'STZ2' Keyword.Reserved +'\n\t' Text.Whitespace +'.Screen/height' Name.Variable.Magic +' ' Text.Whitespace +'DEI2' Keyword.Reserved +' ' Text.Whitespace +'2//' Name +' ' Text.Whitespace +'.center/y' Name.Variable.Magic +' ' Text.Whitespace +'STZ2' Keyword.Reserved +'\n\n\t' Text.Whitespace +'(' Comment.Multiline +' place octave ' Comment.Multiline +')' Comment.Multiline +'\n\t' Text.Whitespace +'.center/x' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'#0080' Literal.Number.Hex +' ' Text.Whitespace +'--' Name +' ' Text.Whitespace +'.octave-view/x1' Name.Variable.Magic +' ' Text.Whitespace +'STZ2' Keyword.Reserved +'\n\t' Text.Whitespace +'.center/y' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'#0008' Literal.Number.Hex +' ' Text.Whitespace +'++' Name +' ' Text.Whitespace +'.octave-view/y1' Name.Variable.Magic +' ' Text.Whitespace +'STZ2' Keyword.Reserved +'\n\t' Text.Whitespace +'.octave-view/x1' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'#0050' Literal.Number.Hex +' ' Text.Whitespace +'++' Name +' ' Text.Whitespace +'.octave-view/x2' Name.Variable.Magic +' ' Text.Whitespace +'STZ2' Keyword.Reserved +'\n\t' Text.Whitespace +'.octave-view/y1' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'#0018' Literal.Number.Hex +' ' Text.Whitespace +'++' Name +' ' Text.Whitespace +'.octave-view/y2' Name.Variable.Magic +' ' Text.Whitespace +'STZ2' Keyword.Reserved +'\n\n\t' Text.Whitespace +'(' Comment.Multiline +' place adsr ' Comment.Multiline +')' Comment.Multiline +'\n\t' Text.Whitespace +'.center/x' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'#0020' Literal.Number.Hex +' ' Text.Whitespace +'--' Name +' ' Text.Whitespace +'.adsr-view/x1' Name.Variable.Magic +' ' Text.Whitespace +'STZ2' Keyword.Reserved +'\n\t' Text.Whitespace +'.center/y' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'#0008' Literal.Number.Hex +' ' Text.Whitespace +'++' Name +' ' Text.Whitespace +'.adsr-view/y1' Name.Variable.Magic +' ' Text.Whitespace +'STZ2' Keyword.Reserved +'\n\t' Text.Whitespace +'.adsr-view/x1' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'#00a0' Literal.Number.Hex +' ' Text.Whitespace +'++' Name +' ' Text.Whitespace +'.adsr-view/x2' Name.Variable.Magic +' ' Text.Whitespace +'STZ2' Keyword.Reserved +'\n\t' Text.Whitespace +'.adsr-view/y1' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'#0018' Literal.Number.Hex +' ' Text.Whitespace +'++' Name +' ' Text.Whitespace +'.adsr-view/y2' Name.Variable.Magic +' ' Text.Whitespace +'STZ2' Keyword.Reserved +'\n\n\t' Text.Whitespace +'(' Comment.Multiline +' place waveform ' Comment.Multiline +')' Comment.Multiline +'\n\t' Text.Whitespace +'.center/x' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'#0080' Literal.Number.Hex +' ' Text.Whitespace +'--' Name +' ' Text.Whitespace +'.wave-view/x1' Name.Variable.Magic +' ' Text.Whitespace +'STZ2' Keyword.Reserved +'\n\t' Text.Whitespace +'.center/y' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'#0020' Literal.Number.Hex +' ' Text.Whitespace +'--' Name +' ' Text.Whitespace +'.wave-view/y1' Name.Variable.Magic +' ' Text.Whitespace +'STZ2' Keyword.Reserved +'\n\t' Text.Whitespace +'.wave-view/x1' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'#0100' Literal.Number.Hex +' ' Text.Whitespace +'++' Name +' ' Text.Whitespace +'.wave-view/x2' Name.Variable.Magic +' ' Text.Whitespace +'STZ2' Keyword.Reserved +'\n\t' Text.Whitespace +'.wave-view/y1' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'#0020' Literal.Number.Hex +' ' Text.Whitespace +'++' Name +' ' Text.Whitespace +'.wave-view/y2' Name.Variable.Magic +' ' Text.Whitespace +'STZ2' Keyword.Reserved +'\n\n\t' Text.Whitespace +'(' Comment.Multiline +' default settings ' Comment.Multiline +')' Comment.Multiline +'\n\t' Text.Whitespace +'#ff' Literal.Number.Hex +' ' Text.Whitespace +'.last-note' Name.Variable.Magic +' ' Text.Whitespace +'STZ' Keyword.Reserved +'\n\t' Text.Whitespace +'#041c' Literal.Number.Hex +' ' Text.Whitespace +'.Audio0/adsr' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +'\n\t' Text.Whitespace +'#dd' Literal.Number.Hex +' ' Text.Whitespace +'.Audio0/volume' Name.Variable.Magic +' ' Text.Whitespace +'DEO' Keyword.Reserved +'\n\t' Text.Whitespace +';sin-pcm' Name.Variable.Global +' ' Text.Whitespace +'.Audio0/addr' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +'\n\t' Text.Whitespace +'#0100' Literal.Number.Hex +' ' Text.Whitespace +'.Audio0/length' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +'\n\n\t' Text.Whitespace +'(' Comment.Multiline +' inital drawing ' Comment.Multiline +')' Comment.Multiline +' \n\t' Text.Whitespace +';draw-octave' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +'\n\t' Text.Whitespace +';draw-adsr' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +'\n\t' Text.Whitespace +';draw-wave' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +'\n\n' Text.Whitespace + +'BRK' Keyword.Reserved +'\n\n' Text.Whitespace + +'(' Comment.Multiline +' this data exists to test literals\n as well as multi-line ' Comment.Multiline +'(' Comment.Multiline +' and nested ' Comment.Multiline +')' Comment.Multiline +'\n comments ' Comment.Multiline +')' Comment.Multiline +'\n' Text.Whitespace + +'@test-dat' Name.Function +' ' Text.Whitespace +'"this' Literal.String +' ' Text.Whitespace +'20' Literal +' ' Text.Whitespace +'"is' Literal.String +' ' Text.Whitespace +'20' Literal +' ' Text.Whitespace +"'a" Literal.String.Char +' ' Text.Whitespace +'20' Literal +' ' Text.Whitespace +'"test' Literal.String +' ' Text.Whitespace +'00' Literal +'\n' Text.Whitespace + +'@test-ptr' Name.Function +' ' Text.Whitespace +':test-dat' Literal +'\n\n' Text.Whitespace + +'@on-frame' Name.Function +' ' Text.Whitespace +'(' Comment.Multiline +' -> ' Comment.Multiline +')' Comment.Multiline +'\n\t\n\t' Text.Whitespace +'.adsr-view/y2' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'#0020' Literal.Number.Hex +' ' Text.Whitespace +'--' Name +' ' Text.Whitespace +'.Screen/y' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +'\n\n\t' Text.Whitespace +'#10' Literal.Number.Hex +' ' Text.Whitespace +'#00' Literal.Number.Hex +' \n\t' Text.Whitespace +'&loop' Name.Label +'\n\t\t' Text.Whitespace +'.adsr-view/x2' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'#003a' Literal.Number.Hex +' ' Text.Whitespace +'--' Name +' ' Text.Whitespace +'.Screen/x' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +'\n\t\t' Text.Whitespace +'#10' Literal.Number.Hex +' ' Text.Whitespace +'OVR' Keyword.Reserved +' ' Text.Whitespace +'-' Name +' ' Text.Whitespace +'.Audio0/output' Name.Variable.Magic +' ' Text.Whitespace +'DEI' Keyword.Reserved +' ' Text.Whitespace +'#0f' Literal.Number.Hex +' ' Text.Whitespace +'AND' Keyword.Reserved +' ' Text.Whitespace +'<' Name +' ' Text.Whitespace +'.Screen/pixel' Name.Variable.Magic +' ' Text.Whitespace +'DEO' Keyword.Reserved +'\n\t\t' Text.Whitespace +'.adsr-view/x2' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'#003a' Literal.Number.Hex +' ' Text.Whitespace +'--' Name +' ' Text.Whitespace +'INC2' Keyword.Reserved +' ' Text.Whitespace +'INC2' Keyword.Reserved +' ' Text.Whitespace +'.Screen/x' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +'\n\t\t' Text.Whitespace +'#10' Literal.Number.Hex +' ' Text.Whitespace +'OVR' Keyword.Reserved +' ' Text.Whitespace +'-' Name +' ' Text.Whitespace +'.Audio0/output' Name.Variable.Magic +' ' Text.Whitespace +'DEI' Keyword.Reserved +' ' Text.Whitespace +'#04' Literal.Number.Hex +' ' Text.Whitespace +'SFT' Keyword.Reserved +' ' Text.Whitespace +'<' Name +' ' Text.Whitespace +'.Screen/pixel' Name.Variable.Magic +' ' Text.Whitespace +'DEO' Keyword.Reserved +'\n\t\t' Text.Whitespace +'.Screen/y' Name.Variable.Magic +' ' Text.Whitespace +'DEI2' Keyword.Reserved +' ' Text.Whitespace +'INC2' Keyword.Reserved +' ' Text.Whitespace +'INC2' Keyword.Reserved +' ' Text.Whitespace +'.Screen/y' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +'\n\t\t' Text.Whitespace +'INC' Keyword.Reserved +' ' Text.Whitespace +'GTHk' Keyword.Reserved +' ' Text.Whitespace +',&loop' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +'\n\t' Text.Whitespace +'POP2' Keyword.Reserved +'\n\n' Text.Whitespace + +'BRK' Keyword.Reserved +'\n\n' Text.Whitespace + +'@on-control' Name.Function +' ' Text.Whitespace +'(' Comment.Multiline +' -> ' Comment.Multiline +')' Comment.Multiline +'\n\n\t' Text.Whitespace +'(' Comment.Multiline +' clear last cursor ' Comment.Multiline +')' Comment.Multiline +'\n\t' Text.Whitespace +'.pointer/x' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'.Screen/x' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +' \n\t' Text.Whitespace +'.pointer/y' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'.Screen/y' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +' \n\t' Text.Whitespace +'#40' Literal.Number.Hex +' ' Text.Whitespace +'.Screen/sprite' Name.Variable.Magic +' ' Text.Whitespace +'DEO' Keyword.Reserved +'\n\n\t' Text.Whitespace +'.Controller/key' Name.Variable.Magic +' ' Text.Whitespace +'DEI' Keyword.Reserved +'\n\t' Text.Whitespace +'[' Punctuation +' ' Text.Whitespace +'LIT' Keyword.Reserved +' ' Text.Whitespace +"'a" Literal.String.Char +' ' Text.Whitespace +']' Punctuation +' ' Text.Whitespace +'!~' Name +' ' Text.Whitespace +',&no-c' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +'\n\t\t' Text.Whitespace +'#30' Literal.Number.Hex +' ' Text.Whitespace +'.octave' Name.Variable.Magic +' ' Text.Whitespace +'LDZ' Keyword.Reserved +' ' Text.Whitespace +'#0c' Literal.Number.Hex +' ' Text.Whitespace +'*' Name +' ' Text.Whitespace +'+' Name +' ' Text.Whitespace +';play' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +' ' Text.Whitespace +'&no-c' Name.Label +'\n\t' Text.Whitespace +'[' Punctuation +' ' Text.Whitespace +'LIT' Keyword.Reserved +' ' Text.Whitespace +"'s" Literal.String.Char +' ' Text.Whitespace +']' Punctuation +' ' Text.Whitespace +'!~' Name +' ' Text.Whitespace +',&no-d' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +'\n\t\t' Text.Whitespace +'#32' Literal.Number.Hex +' ' Text.Whitespace +'.octave' Name.Variable.Magic +' ' Text.Whitespace +'LDZ' Keyword.Reserved +' ' Text.Whitespace +'#0c' Literal.Number.Hex +' ' Text.Whitespace +'*' Name +' ' Text.Whitespace +'+' Name +' ' Text.Whitespace +';play' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +' ' Text.Whitespace +'&no-d' Name.Label +'\n\t' Text.Whitespace +'[' Punctuation +' ' Text.Whitespace +'LIT' Keyword.Reserved +' ' Text.Whitespace +"'d" Literal.String.Char +' ' Text.Whitespace +']' Punctuation +' ' Text.Whitespace +'!~' Name +' ' Text.Whitespace +',&no-e' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +'\n\t\t' Text.Whitespace +'#34' Literal.Number.Hex +' ' Text.Whitespace +'.octave' Name.Variable.Magic +' ' Text.Whitespace +'LDZ' Keyword.Reserved +' ' Text.Whitespace +'#0c' Literal.Number.Hex +' ' Text.Whitespace +'*' Name +' ' Text.Whitespace +'+' Name +' ' Text.Whitespace +';play' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +' ' Text.Whitespace +'&no-e' Name.Label +'\n\t' Text.Whitespace +'[' Punctuation +' ' Text.Whitespace +'LIT' Keyword.Reserved +' ' Text.Whitespace +"'f" Literal.String.Char +' ' Text.Whitespace +']' Punctuation +' ' Text.Whitespace +'!~' Name +' ' Text.Whitespace +',&no-f' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +'\n\t\t' Text.Whitespace +'#35' Literal.Number.Hex +' ' Text.Whitespace +'.octave' Name.Variable.Magic +' ' Text.Whitespace +'LDZ' Keyword.Reserved +' ' Text.Whitespace +'#0c' Literal.Number.Hex +' ' Text.Whitespace +'*' Name +' ' Text.Whitespace +'+' Name +' ' Text.Whitespace +';play' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +' ' Text.Whitespace +'&no-f' Name.Label +'\n\t' Text.Whitespace +'[' Punctuation +' ' Text.Whitespace +'LIT' Keyword.Reserved +' ' Text.Whitespace +"'g" Literal.String.Char +' ' Text.Whitespace +']' Punctuation +' ' Text.Whitespace +'!~' Name +' ' Text.Whitespace +',&no-g' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +'\n\t\t' Text.Whitespace +'#37' Literal.Number.Hex +' ' Text.Whitespace +'.octave' Name.Variable.Magic +' ' Text.Whitespace +'LDZ' Keyword.Reserved +' ' Text.Whitespace +'#0c' Literal.Number.Hex +' ' Text.Whitespace +'*' Name +' ' Text.Whitespace +'+' Name +' ' Text.Whitespace +';play' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +' ' Text.Whitespace +'&no-g' Name.Label +'\n\t' Text.Whitespace +'[' Punctuation +' ' Text.Whitespace +'LIT' Keyword.Reserved +' ' Text.Whitespace +"'h" Literal.String.Char +' ' Text.Whitespace +']' Punctuation +' ' Text.Whitespace +'!~' Name +' ' Text.Whitespace +',&no-a' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +'\n\t\t' Text.Whitespace +'#39' Literal.Number.Hex +' ' Text.Whitespace +'.octave' Name.Variable.Magic +' ' Text.Whitespace +'LDZ' Keyword.Reserved +' ' Text.Whitespace +'#0c' Literal.Number.Hex +' ' Text.Whitespace +'*' Name +' ' Text.Whitespace +'+' Name +' ' Text.Whitespace +';play' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +' ' Text.Whitespace +'&no-a' Name.Label +'\n\t' Text.Whitespace +'[' Punctuation +' ' Text.Whitespace +'LIT' Keyword.Reserved +' ' Text.Whitespace +"'j" Literal.String.Char +' ' Text.Whitespace +']' Punctuation +' ' Text.Whitespace +'!~' Name +' ' Text.Whitespace +',&no-b' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +'\n\t\t' Text.Whitespace +'#3b' Literal.Number.Hex +' ' Text.Whitespace +'.octave' Name.Variable.Magic +' ' Text.Whitespace +'LDZ' Keyword.Reserved +' ' Text.Whitespace +'#0c' Literal.Number.Hex +' ' Text.Whitespace +'*' Name +' ' Text.Whitespace +'+' Name +' ' Text.Whitespace +';play' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +' ' Text.Whitespace +'&no-b' Name.Label +'\n\t' Text.Whitespace +'[' Punctuation +' ' Text.Whitespace +'LIT' Keyword.Reserved +' ' Text.Whitespace +"'k" Literal.String.Char +' ' Text.Whitespace +']' Punctuation +' ' Text.Whitespace +'!~' Name +' ' Text.Whitespace +',&no-c2' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +'\n\t\t' Text.Whitespace +'#3c' Literal.Number.Hex +' ' Text.Whitespace +'.octave' Name.Variable.Magic +' ' Text.Whitespace +'LDZ' Keyword.Reserved +' ' Text.Whitespace +'#0c' Literal.Number.Hex +' ' Text.Whitespace +'*' Name +' ' Text.Whitespace +'+' Name +' ' Text.Whitespace +';play' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +' ' Text.Whitespace +'&no-c2' Name.Label +'\n\t' Text.Whitespace +'[' Punctuation +' ' Text.Whitespace +'#1b' Literal.Number.Hex +' ' Text.Whitespace +']' Punctuation +' ' Text.Whitespace +'!~' Name +' ' Text.Whitespace +',&no-esc' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +' ' Text.Whitespace +'HALT' Name +' ' Text.Whitespace +'&no-esc' Name.Label +'\n\t' Text.Whitespace +'POP' Keyword.Reserved +'\n\n\t' Text.Whitespace +'(' Comment.Multiline +' release ' Comment.Multiline +')' Comment.Multiline +'\n\t' Text.Whitespace +'#00' Literal.Number.Hex +' ' Text.Whitespace +'.Controller/key' Name.Variable.Magic +' ' Text.Whitespace +'DEO' Keyword.Reserved +'\n\n\t' Text.Whitespace +'.Controller/button' Name.Variable.Magic +' ' Text.Whitespace +'DEI' Keyword.Reserved +' \n\t' Text.Whitespace +'DUP' Keyword.Reserved +' ' Text.Whitespace +'#11' Literal.Number.Hex +' ' Text.Whitespace +'!' Name +' ' Text.Whitespace +',&cu' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +' ' Text.Whitespace +'#3c' Literal.Number.Hex +' ' Text.Whitespace +';play' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +' ' Text.Whitespace +'&cu' Name.Label +'\n\t' Text.Whitespace +'DUP' Keyword.Reserved +' ' Text.Whitespace +'#21' Literal.Number.Hex +' ' Text.Whitespace +'!' Name +' ' Text.Whitespace +',&cd' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +' ' Text.Whitespace +'#3d' Literal.Number.Hex +' ' Text.Whitespace +';play' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +' ' Text.Whitespace +'&cd' Name.Label +'\n\t' Text.Whitespace +'DUP' Keyword.Reserved +' ' Text.Whitespace +'#41' Literal.Number.Hex +' ' Text.Whitespace +'!' Name +' ' Text.Whitespace +',&cl' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +' ' Text.Whitespace +'#3e' Literal.Number.Hex +' ' Text.Whitespace +';play' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +' ' Text.Whitespace +'&cl' Name.Label +'\n\t' Text.Whitespace +'DUP' Keyword.Reserved +' ' Text.Whitespace +'#81' Literal.Number.Hex +' ' Text.Whitespace +'!' Name +' ' Text.Whitespace +',&cr' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +' ' Text.Whitespace +'#3f' Literal.Number.Hex +' ' Text.Whitespace +';play' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +' ' Text.Whitespace +'&cr' Name.Label +'\n\t' Text.Whitespace +'DUP' Keyword.Reserved +' ' Text.Whitespace +'#12' Literal.Number.Hex +' ' Text.Whitespace +'!' Name +' ' Text.Whitespace +',&au' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +' ' Text.Whitespace +'#40' Literal.Number.Hex +' ' Text.Whitespace +';play' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +' ' Text.Whitespace +'&au' Name.Label +'\n\t' Text.Whitespace +'DUP' Keyword.Reserved +' ' Text.Whitespace +'#22' Literal.Number.Hex +' ' Text.Whitespace +'!' Name +' ' Text.Whitespace +',&ad' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +' ' Text.Whitespace +'#41' Literal.Number.Hex +' ' Text.Whitespace +';play' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +' ' Text.Whitespace +'&ad' Name.Label +'\n\t' Text.Whitespace +'DUP' Keyword.Reserved +' ' Text.Whitespace +'#42' Literal.Number.Hex +' ' Text.Whitespace +'!' Name +' ' Text.Whitespace +',&al' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +' ' Text.Whitespace +'#42' Literal.Number.Hex +' ' Text.Whitespace +';play' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +' ' Text.Whitespace +'&al' Name.Label +'\n\t' Text.Whitespace +'DUP' Keyword.Reserved +' ' Text.Whitespace +'#82' Literal.Number.Hex +' ' Text.Whitespace +'!' Name +' ' Text.Whitespace +',&ar' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +' ' Text.Whitespace +'#43' Literal.Number.Hex +' ' Text.Whitespace +';play' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +' ' Text.Whitespace +'&ar' Name.Label +'\n\t' Text.Whitespace +'DUP' Keyword.Reserved +' ' Text.Whitespace +'#14' Literal.Number.Hex +' ' Text.Whitespace +'!' Name +' ' Text.Whitespace +',&su' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +' ' Text.Whitespace +'#44' Literal.Number.Hex +' ' Text.Whitespace +';play' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +' ' Text.Whitespace +'&su' Name.Label +'\n\t' Text.Whitespace +'DUP' Keyword.Reserved +' ' Text.Whitespace +'#24' Literal.Number.Hex +' ' Text.Whitespace +'!' Name +' ' Text.Whitespace +',&sd' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +' ' Text.Whitespace +'#45' Literal.Number.Hex +' ' Text.Whitespace +';play' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +' ' Text.Whitespace +'&sd' Name.Label +'\n\t' Text.Whitespace +'DUP' Keyword.Reserved +' ' Text.Whitespace +'#44' Literal.Number.Hex +' ' Text.Whitespace +'!' Name +' ' Text.Whitespace +',&sl' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +' ' Text.Whitespace +'#46' Literal.Number.Hex +' ' Text.Whitespace +';play' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +' ' Text.Whitespace +'&sl' Name.Label +'\n\t' Text.Whitespace +'DUP' Keyword.Reserved +' ' Text.Whitespace +'#84' Literal.Number.Hex +' ' Text.Whitespace +'!' Name +' ' Text.Whitespace +',&sr' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +' ' Text.Whitespace +'#47' Literal.Number.Hex +' ' Text.Whitespace +';play' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +' ' Text.Whitespace +'&sr' Name.Label +'\n\t' Text.Whitespace +'DUP' Keyword.Reserved +' ' Text.Whitespace +'#40' Literal.Number.Hex +' ' Text.Whitespace +'!' Name +' ' Text.Whitespace +',&l' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +' ' Text.Whitespace +'.Audio0/addr' Name.Variable.Magic +' ' Text.Whitespace +'DEI2' Keyword.Reserved +' ' Text.Whitespace +'#0010' Literal.Number.Hex +' ' Text.Whitespace +'--' Name +' ' Text.Whitespace +'.Audio0/addr' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +' ' Text.Whitespace +'&l' Name.Label +'\n\t' Text.Whitespace +'DUP' Keyword.Reserved +' ' Text.Whitespace +'#80' Literal.Number.Hex +' ' Text.Whitespace +'!' Name +' ' Text.Whitespace +',&r' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +' ' Text.Whitespace +'.Audio0/addr' Name.Variable.Magic +' ' Text.Whitespace +'DEI2' Keyword.Reserved +' ' Text.Whitespace +'#0010' Literal.Number.Hex +' ' Text.Whitespace +'++' Name +' ' Text.Whitespace +'.Audio0/addr' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +' ' Text.Whitespace +'&r' Name.Label +'\n\t' Text.Whitespace +'POP' Keyword.Reserved +'\n\n\t' Text.Whitespace +';draw-octave' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +'\n\t' Text.Whitespace +';draw-wave' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +'\n\n' Text.Whitespace + +'BRK' Keyword.Reserved +'\n\n' Text.Whitespace + +'@on-message' Name.Function +' ' Text.Whitespace +'(' Comment.Multiline +' -> ' Comment.Multiline +')' Comment.Multiline +'\n\t\n\t' Text.Whitespace +'.Console/read' Name.Variable.Magic +' ' Text.Whitespace +'DEI' Keyword.Reserved +' ' Text.Whitespace +';play' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +'\n\t' Text.Whitespace +';draw-octave' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +'\n\n' Text.Whitespace + +'BRK' Keyword.Reserved +'\n\n' Text.Whitespace + +'@on-mouse' Name.Function +' ' Text.Whitespace +'(' Comment.Multiline +' -> ' Comment.Multiline +')' Comment.Multiline +'\n\n\t' Text.Whitespace +';draw-cursor' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +' \n\t\n\t' Text.Whitespace +'.Mouse/state' Name.Variable.Magic +' ' Text.Whitespace +'DEI' Keyword.Reserved +' ' Text.Whitespace +'#00' Literal.Number.Hex +' ' Text.Whitespace +'!' Name +' ' Text.Whitespace +'#01' Literal.Number.Hex +' ' Text.Whitespace +'JCN' Keyword.Reserved +' ' Text.Whitespace +'[' Punctuation +' ' Text.Whitespace +'BRK' Keyword.Reserved +' ' Text.Whitespace +']' Punctuation +'\n\n\t' Text.Whitespace +'.Mouse/x' Name.Variable.Magic +' ' Text.Whitespace +'DEI2' Keyword.Reserved +' ' Text.Whitespace +'.Mouse/y' Name.Variable.Magic +' ' Text.Whitespace +'DEI2' Keyword.Reserved +' ' Text.Whitespace +'.wave-view' Name.Variable.Magic +' ' Text.Whitespace +';within-rect' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +' \n\t\t' Text.Whitespace +';on-touch-wave-view' Name.Variable.Global +' ' Text.Whitespace +'JCN2' Keyword.Reserved +'\n\t' Text.Whitespace +'.Mouse/x' Name.Variable.Magic +' ' Text.Whitespace +'DEI2' Keyword.Reserved +' ' Text.Whitespace +'.Mouse/y' Name.Variable.Magic +' ' Text.Whitespace +'DEI2' Keyword.Reserved +' ' Text.Whitespace +'.adsr-view' Name.Variable.Magic +' ' Text.Whitespace +';within-rect' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +' \n\t\t' Text.Whitespace +';on-touch-adsr-view' Name.Variable.Global +' ' Text.Whitespace +'JCN2' Keyword.Reserved +'\n\t' Text.Whitespace +'.Mouse/x' Name.Variable.Magic +' ' Text.Whitespace +'DEI2' Keyword.Reserved +' ' Text.Whitespace +'.Mouse/y' Name.Variable.Magic +' ' Text.Whitespace +'DEI2' Keyword.Reserved +' ' Text.Whitespace +'.octave-view' Name.Variable.Magic +' ' Text.Whitespace +';within-rect' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +' \n\t\t' Text.Whitespace +';on-touch-octave-view' Name.Variable.Global +' ' Text.Whitespace +'JCN2' Keyword.Reserved +'\n\n' Text.Whitespace + +'BRK' Keyword.Reserved +'\n\n' Text.Whitespace + +'@on-touch-wave-view' Name.Function +' ' Text.Whitespace +'(' Comment.Multiline +' -> ' Comment.Multiline +')' Comment.Multiline +'\n\n\t' Text.Whitespace +'.Mouse/x' Name.Variable.Magic +' ' Text.Whitespace +'DEI2' Keyword.Reserved +' ' Text.Whitespace +'.wave-view/x1' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'--' Name +' ' Text.Whitespace +'.Audio0/length' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +'\n\t' Text.Whitespace +';draw-wave' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +'\n\t' Text.Whitespace +';draw-cursor' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +' \n\n' Text.Whitespace + +'BRK' Keyword.Reserved +'\n\n' Text.Whitespace + +'@on-touch-octave-view' Name.Function +' ' Text.Whitespace +'(' Comment.Multiline +' -> ' Comment.Multiline +')' Comment.Multiline +'\n\n\t' Text.Whitespace +'.Mouse/x' Name.Variable.Magic +' ' Text.Whitespace +'DEI2' Keyword.Reserved +' ' Text.Whitespace +'.octave-view/x1' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'--' Name +' ' Text.Whitespace +'8//' Name +' ' Text.Whitespace +'NIP' Keyword.Reserved +' ' Text.Whitespace +'#09' Literal.Number.Hex +' ' Text.Whitespace +'!' Name +' ' Text.Whitespace +',&no-mod' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +'\n\t\t' Text.Whitespace +'.Mouse/y' Name.Variable.Magic +' ' Text.Whitespace +'DEI2' Keyword.Reserved +' ' Text.Whitespace +'.octave-view/y1' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'--' Name +' ' Text.Whitespace +'8//' Name +' ' Text.Whitespace +'NIP' Keyword.Reserved +' \n\t\t' Text.Whitespace +'[' Punctuation +' ' Text.Whitespace +'#00' Literal.Number.Hex +' ' Text.Whitespace +']' Punctuation +' ' Text.Whitespace +'!~' Name +' ' Text.Whitespace +',&no-incr' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +'\n\t\t\t' Text.Whitespace +'.octave' Name.Variable.Magic +' ' Text.Whitespace +'LDZ' Keyword.Reserved +' ' Text.Whitespace +'#03' Literal.Number.Hex +' ' Text.Whitespace +'=' Name +' ' Text.Whitespace +',&no-incr' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +'\n\t\t\t' Text.Whitespace +'.octave' Name.Variable.Magic +' ' Text.Whitespace +'LDZ' Keyword.Reserved +' ' Text.Whitespace +'INC' Keyword.Reserved +' ' Text.Whitespace +'.octave' Name.Variable.Magic +' ' Text.Whitespace +'STZ' Keyword.Reserved +' ' Text.Whitespace +'&no-incr' Name.Label +'\n\t\t' Text.Whitespace +'[' Punctuation +' ' Text.Whitespace +'#02' Literal.Number.Hex +' ' Text.Whitespace +']' Punctuation +' ' Text.Whitespace +'!~' Name +' ' Text.Whitespace +',&no-decr' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +'\n\t\t\t' Text.Whitespace +'.octave' Name.Variable.Magic +' ' Text.Whitespace +'LDZ' Keyword.Reserved +' ' Text.Whitespace +'#ff' Literal.Number.Hex +' ' Text.Whitespace +'=' Name +' ' Text.Whitespace +',&no-decr' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +'\n\t\t\t' Text.Whitespace +'.octave' Name.Variable.Magic +' ' Text.Whitespace +'LDZ' Keyword.Reserved +' ' Text.Whitespace +'#01' Literal.Number.Hex +' ' Text.Whitespace +'-' Name +' ' Text.Whitespace +'.octave' Name.Variable.Magic +' ' Text.Whitespace +'STZ' Keyword.Reserved +' ' Text.Whitespace +'&no-decr' Name.Label +'\n\t\t' Text.Whitespace +'POP' Keyword.Reserved +'\n\t\t' Text.Whitespace +'(' Comment.Multiline +' release ' Comment.Multiline +')' Comment.Multiline +' ' Text.Whitespace +'#00' Literal.Number.Hex +' ' Text.Whitespace +'.Mouse/state' Name.Variable.Magic +' ' Text.Whitespace +'DEO' Keyword.Reserved +'\n\t\t' Text.Whitespace +';draw-octave' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +'\n\t\t' Text.Whitespace +'BRK' Keyword.Reserved +'\n\t' Text.Whitespace +'&no-mod' Name.Label +'\n\n\t' Text.Whitespace +'.Mouse/x' Name.Variable.Magic +' ' Text.Whitespace +'DEI2' Keyword.Reserved +' ' Text.Whitespace +'.octave-view/x1' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'--' Name +' ' Text.Whitespace +'8//' Name +' ' Text.Whitespace +'NIP' Keyword.Reserved +' ' Text.Whitespace +'#06' Literal.Number.Hex +' ' Text.Whitespace +'>' Name +' ' Text.Whitespace +',&no-key' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +'\n\t\t' Text.Whitespace +'.Mouse/x' Name.Variable.Magic +' ' Text.Whitespace +'DEI2' Keyword.Reserved +' ' Text.Whitespace +'.octave-view/x1' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'--' Name +' ' Text.Whitespace +'8//' Name +' ' Text.Whitespace +';notes' Name.Variable.Global +' ' Text.Whitespace +'++' Name +' ' Text.Whitespace +'LDA' Keyword.Reserved +' ' Text.Whitespace +'.octave' Name.Variable.Magic +' ' Text.Whitespace +'LDZ' Keyword.Reserved +' ' Text.Whitespace +'#0c' Literal.Number.Hex +' ' Text.Whitespace +'*' Name +' ' Text.Whitespace +'+' Name +' ' Text.Whitespace +';play' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +'\n\t\t' Text.Whitespace +'(' Comment.Multiline +' release ' Comment.Multiline +')' Comment.Multiline +' ' Text.Whitespace +'#00' Literal.Number.Hex +' ' Text.Whitespace +'.Mouse/state' Name.Variable.Magic +' ' Text.Whitespace +'DEO' Keyword.Reserved +'\n\t\t' Text.Whitespace +';draw-octave' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +'\n\t' Text.Whitespace +'&no-key' Name.Label +'\n\n' Text.Whitespace + +'BRK' Keyword.Reserved +' \n\n' Text.Whitespace + +'@on-touch-adsr-view' Name.Function +' ' Text.Whitespace +'(' Comment.Multiline +' -> ' Comment.Multiline +')' Comment.Multiline +'\n\n\t' Text.Whitespace +'.Mouse/x' Name.Variable.Magic +' ' Text.Whitespace +'DEI2' Keyword.Reserved +' ' Text.Whitespace +'.adsr-view/x1' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'--' Name +' ' Text.Whitespace +'8//' Name +' ' Text.Whitespace +'NIP' Keyword.Reserved +' ' Text.Whitespace +'#03' Literal.Number.Hex +' ' Text.Whitespace +'/' Name +'\n\t' Text.Whitespace +'[' Punctuation +' ' Text.Whitespace +'#00' Literal.Number.Hex +' ' Text.Whitespace +']' Punctuation +' ' Text.Whitespace +'!~' Name +' ' Text.Whitespace +',&no-a' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +'\n\t\t' Text.Whitespace +'.Audio0/adsr' Name.Variable.Magic +' ' Text.Whitespace +'DEI' Keyword.Reserved +'\n\t\t' Text.Whitespace +'#10' Literal.Number.Hex +' ' Text.Whitespace +'.Mouse/state' Name.Variable.Magic +' ' Text.Whitespace +'DEI' Keyword.Reserved +' ' Text.Whitespace +'#10' Literal.Number.Hex +' ' Text.Whitespace +'=' Name +' ' Text.Whitespace +'#e0' Literal.Number.Hex +' ' Text.Whitespace +'*' Name +' ' Text.Whitespace +'+' Name +' ' Text.Whitespace +'+' Name +'\n\t\t' Text.Whitespace +'.Audio0/adsr' Name.Variable.Magic +' ' Text.Whitespace +'DEO' Keyword.Reserved +' ' Text.Whitespace +'&no-a' Name.Label +'\n\t' Text.Whitespace +'[' Punctuation +' ' Text.Whitespace +'#01' Literal.Number.Hex +' ' Text.Whitespace +']' Punctuation +' ' Text.Whitespace +'!~' Name +' ' Text.Whitespace +',&no-d' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +'\n\t\t' Text.Whitespace +'.Audio0/adsr' Name.Variable.Magic +' ' Text.Whitespace +'DEI' Keyword.Reserved +'\n\t\t' Text.Whitespace +'DUP' Keyword.Reserved +' ' Text.Whitespace +'#f0' Literal.Number.Hex +' ' Text.Whitespace +'AND' Keyword.Reserved +' ' Text.Whitespace +'STH' Keyword.Reserved +' ' Text.Whitespace +'#01' Literal.Number.Hex +' ' Text.Whitespace +'.Mouse/state' Name.Variable.Magic +' ' Text.Whitespace +'DEI' Keyword.Reserved +' ' Text.Whitespace +'#10' Literal.Number.Hex +' ' Text.Whitespace +'=' Name +' ' Text.Whitespace +'#0e' Literal.Number.Hex +' ' Text.Whitespace +'*' Name +' ' Text.Whitespace +'+' Name +' ' Text.Whitespace +'+' Name +' ' Text.Whitespace +'#0f' Literal.Number.Hex +' ' Text.Whitespace +'AND' Keyword.Reserved +' ' Text.Whitespace +'STHr' Keyword.Reserved +' ' Text.Whitespace +'+' Name +'\n\t\t' Text.Whitespace +'.Audio0/adsr' Name.Variable.Magic +' ' Text.Whitespace +'DEO' Keyword.Reserved +' ' Text.Whitespace +'&no-d' Name.Label +'\n\t' Text.Whitespace +'[' Punctuation +' ' Text.Whitespace +'#02' Literal.Number.Hex +' ' Text.Whitespace +']' Punctuation +' ' Text.Whitespace +'!~' Name +' ' Text.Whitespace +',&no-s' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +'\n\t\t' Text.Whitespace +'.Audio0/adsr' Name.Variable.Magic +' ' Text.Whitespace +'INC' Keyword.Reserved +' ' Text.Whitespace +'DEI' Keyword.Reserved +'\n\t\t' Text.Whitespace +'#10' Literal.Number.Hex +' ' Text.Whitespace +'.Mouse/state' Name.Variable.Magic +' ' Text.Whitespace +'DEI' Keyword.Reserved +' ' Text.Whitespace +'#10' Literal.Number.Hex +' ' Text.Whitespace +'=' Name +' ' Text.Whitespace +'#e0' Literal.Number.Hex +' ' Text.Whitespace +'*' Name +' ' Text.Whitespace +'+' Name +' ' Text.Whitespace +'+' Name +'\n\t\t' Text.Whitespace +'.Audio0/adsr' Name.Variable.Magic +' ' Text.Whitespace +'INC' Keyword.Reserved +' ' Text.Whitespace +'DEO' Keyword.Reserved +' ' Text.Whitespace +'&no-s' Name.Label +'\n\t' Text.Whitespace +'[' Punctuation +' ' Text.Whitespace +'#03' Literal.Number.Hex +' ' Text.Whitespace +']' Punctuation +' ' Text.Whitespace +'!~' Name +' ' Text.Whitespace +',&no-r' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +'\n\t\t' Text.Whitespace +'.Audio0/adsr' Name.Variable.Magic +' ' Text.Whitespace +'INC' Keyword.Reserved +' ' Text.Whitespace +'DEI' Keyword.Reserved +'\n\t\t' Text.Whitespace +'DUP' Keyword.Reserved +' ' Text.Whitespace +'#f0' Literal.Number.Hex +' ' Text.Whitespace +'AND' Keyword.Reserved +' ' Text.Whitespace +'STH' Keyword.Reserved +' ' Text.Whitespace +'#01' Literal.Number.Hex +' ' Text.Whitespace +'.Mouse/state' Name.Variable.Magic +' ' Text.Whitespace +'DEI' Keyword.Reserved +' ' Text.Whitespace +'#10' Literal.Number.Hex +' ' Text.Whitespace +'=' Name +' ' Text.Whitespace +'#0e' Literal.Number.Hex +' ' Text.Whitespace +'*' Name +' ' Text.Whitespace +'+' Name +' ' Text.Whitespace +'+' Name +' ' Text.Whitespace +'#0f' Literal.Number.Hex +' ' Text.Whitespace +'AND' Keyword.Reserved +' ' Text.Whitespace +'STHr' Keyword.Reserved +' ' Text.Whitespace +'+' Name +'\n\t\t' Text.Whitespace +'.Audio0/adsr' Name.Variable.Magic +' ' Text.Whitespace +'INC' Keyword.Reserved +' ' Text.Whitespace +'DEO' Keyword.Reserved +' ' Text.Whitespace +'&no-r' Name.Label +'\n\t' Text.Whitespace +'[' Punctuation +' ' Text.Whitespace +'#05' Literal.Number.Hex +' ' Text.Whitespace +']' Punctuation +' ' Text.Whitespace +'!~' Name +' ' Text.Whitespace +',&no-left' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +'\n\t\t' Text.Whitespace +'.Audio0/volume' Name.Variable.Magic +' ' Text.Whitespace +'DEI' Keyword.Reserved +' \n\t\t' Text.Whitespace +'#10' Literal.Number.Hex +' ' Text.Whitespace +'.Mouse/state' Name.Variable.Magic +' ' Text.Whitespace +'DEI' Keyword.Reserved +' ' Text.Whitespace +'#10' Literal.Number.Hex +' ' Text.Whitespace +'=' Name +' ' Text.Whitespace +'#e0' Literal.Number.Hex +' ' Text.Whitespace +'*' Name +' ' Text.Whitespace +'+' Name +' ' Text.Whitespace +'+' Name +'\n\t\t' Text.Whitespace +'.Audio0/volume' Name.Variable.Magic +' ' Text.Whitespace +'DEO' Keyword.Reserved +' ' Text.Whitespace +'&no-left' Name.Label +'\n\t' Text.Whitespace +'[' Punctuation +' ' Text.Whitespace +'#06' Literal.Number.Hex +' ' Text.Whitespace +']' Punctuation +' ' Text.Whitespace +'!~' Name +' ' Text.Whitespace +',&no-right' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +'\n\t\t' Text.Whitespace +'.Audio0/volume' Name.Variable.Magic +' ' Text.Whitespace +'DEI' Keyword.Reserved +'\n\t\t' Text.Whitespace +'DUP' Keyword.Reserved +' ' Text.Whitespace +'#f0' Literal.Number.Hex +' ' Text.Whitespace +'AND' Keyword.Reserved +' ' Text.Whitespace +'STH' Keyword.Reserved +' ' Text.Whitespace +'#01' Literal.Number.Hex +' ' Text.Whitespace +'.Mouse/state' Name.Variable.Magic +' ' Text.Whitespace +'DEI' Keyword.Reserved +' ' Text.Whitespace +'#10' Literal.Number.Hex +' ' Text.Whitespace +'=' Name +' ' Text.Whitespace +'#0e' Literal.Number.Hex +' ' Text.Whitespace +'*' Name +' ' Text.Whitespace +'+' Name +' ' Text.Whitespace +'+' Name +' ' Text.Whitespace +'#0f' Literal.Number.Hex +' ' Text.Whitespace +'AND' Keyword.Reserved +' ' Text.Whitespace +'STHr' Keyword.Reserved +' ' Text.Whitespace +'+' Name +'\n\t\t' Text.Whitespace +'.Audio0/volume' Name.Variable.Magic +' ' Text.Whitespace +'DEO' Keyword.Reserved +' ' Text.Whitespace +'&no-right' Name.Label +'\n\t' Text.Whitespace +'POP' Keyword.Reserved +'\n\n\t' Text.Whitespace +'(' Comment.Multiline +' release ' Comment.Multiline +')' Comment.Multiline +' ' Text.Whitespace +'#00' Literal.Number.Hex +' ' Text.Whitespace +'.Mouse/state' Name.Variable.Magic +' ' Text.Whitespace +'DEO' Keyword.Reserved +'\n\t' Text.Whitespace +';draw-adsr' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +'\n\t' Text.Whitespace +';draw-cursor' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +' \n\n' Text.Whitespace + +'BRK' Keyword.Reserved +'\n\n' Text.Whitespace + +'@play' Name.Function +' ' Text.Whitespace +'(' Comment.Multiline +' pitch -- ' Comment.Multiline +')' Comment.Multiline +'\n\t\n\t' Text.Whitespace +'DUP' Keyword.Reserved +' ' Text.Whitespace +'#0c' Literal.Number.Hex +' ' Text.Whitespace +'MOD' Name +' ' Text.Whitespace +'.last-note' Name.Variable.Magic +' ' Text.Whitespace +'STZ' Keyword.Reserved +' \n\t' Text.Whitespace +'.Audio0/pitch' Name.Variable.Magic +' ' Text.Whitespace +'DEO' Keyword.Reserved +'\n\n' Text.Whitespace + +'RTN' Name +'\n\n' Text.Whitespace + +'@draw-cursor' Name.Function +' ' Text.Whitespace +'(' Comment.Multiline +' -- ' Comment.Multiline +')' Comment.Multiline +'\n\t\n\t' Text.Whitespace +'(' Comment.Multiline +' clear last cursor ' Comment.Multiline +')' Comment.Multiline +'\n\t' Text.Whitespace +';cursor' Name.Variable.Global +' ' Text.Whitespace +'.Screen/addr' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +' \n\t' Text.Whitespace +'.pointer/x' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'.Screen/x' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +' \n\t' Text.Whitespace +'.pointer/y' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'.Screen/y' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +' \n\t' Text.Whitespace +'#40' Literal.Number.Hex +' ' Text.Whitespace +'.Screen/sprite' Name.Variable.Magic +' ' Text.Whitespace +'DEO' Keyword.Reserved +'\n\t' Text.Whitespace +'(' Comment.Multiline +' record pointer positions ' Comment.Multiline +')' Comment.Multiline +'\n\t' Text.Whitespace +'.Mouse/x' Name.Variable.Magic +' ' Text.Whitespace +'DEI2' Keyword.Reserved +' ' Text.Whitespace +'DUP2' Keyword.Reserved +' ' Text.Whitespace +'.pointer/x' Name.Variable.Magic +' ' Text.Whitespace +'STZ2' Keyword.Reserved +' ' Text.Whitespace +'.Screen/x' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +' \n\t' Text.Whitespace +'.Mouse/y' Name.Variable.Magic +' ' Text.Whitespace +'DEI2' Keyword.Reserved +' ' Text.Whitespace +'DUP2' Keyword.Reserved +' ' Text.Whitespace +'.pointer/y' Name.Variable.Magic +' ' Text.Whitespace +'STZ2' Keyword.Reserved +' ' Text.Whitespace +'.Screen/y' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +' \n\t' Text.Whitespace +'(' Comment.Multiline +' colorize on state ' Comment.Multiline +')' Comment.Multiline +'\n\t' Text.Whitespace +'#41' Literal.Number.Hex +' ' Text.Whitespace +'[' Punctuation +' ' Text.Whitespace +'.Mouse/state' Name.Variable.Magic +' ' Text.Whitespace +'DEI' Keyword.Reserved +' ' Text.Whitespace +'#00' Literal.Number.Hex +' ' Text.Whitespace +'!' Name +' ' Text.Whitespace +']' Punctuation +' ' Text.Whitespace +'+' Name +' ' Text.Whitespace +'.Screen/sprite' Name.Variable.Magic +' ' Text.Whitespace +'DEO' Keyword.Reserved +'\n\n' Text.Whitespace + +'RTN' Name +'\n\n' Text.Whitespace + +'@draw-octave' Name.Function +' ' Text.Whitespace +'(' Comment.Multiline +' -- ' Comment.Multiline +')' Comment.Multiline +'\n\t\n\t' Text.Whitespace +'.octave-view/x1' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'#0048' Literal.Number.Hex +' ' Text.Whitespace +'++' Name +' ' Text.Whitespace +'.Screen/x' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +'\n\n\t' Text.Whitespace +';arrow-icns' Name.Variable.Global +' ' Text.Whitespace +'.Screen/addr' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +'\n\t' Text.Whitespace +'.octave-view/y1' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'.Screen/y' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +'\n\t' Text.Whitespace +'#01' Literal.Number.Hex +' ' Text.Whitespace +'.Screen/sprite' Name.Variable.Magic +' ' Text.Whitespace +'DEO' Keyword.Reserved +'\n\n\t' Text.Whitespace +';arrow-icns' Name.Variable.Global +' ' Text.Whitespace +'#0008' Literal.Number.Hex +' ' Text.Whitespace +'++' Name +' ' Text.Whitespace +'.Screen/addr' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +'\n\t' Text.Whitespace +'.octave-view/y1' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'#0010' Literal.Number.Hex +' ' Text.Whitespace +'++' Name +' ' Text.Whitespace +'.Screen/y' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +'\n\t' Text.Whitespace +'#01' Literal.Number.Hex +' ' Text.Whitespace +'.Screen/sprite' Name.Variable.Magic +' ' Text.Whitespace +'DEO' Keyword.Reserved +'\n\n\t' Text.Whitespace +';font-hex' Name.Variable.Global +' ' Text.Whitespace +'.octave' Name.Variable.Magic +' ' Text.Whitespace +'LDZ' Keyword.Reserved +' ' Text.Whitespace +'#03' Literal.Number.Hex +' ' Text.Whitespace +'+' Name +' ' Text.Whitespace +'#00' Literal.Number.Hex +' ' Text.Whitespace +'SWP' Keyword.Reserved +' ' Text.Whitespace +'8**' Name +' ' Text.Whitespace +'++' Name +' ' Text.Whitespace +'.Screen/addr' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +'\n\t' Text.Whitespace +'.octave-view/y1' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'#0008' Literal.Number.Hex +' ' Text.Whitespace +'++' Name +' ' Text.Whitespace +'.Screen/y' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +'\n\t' Text.Whitespace +'#03' Literal.Number.Hex +' ' Text.Whitespace +'.Screen/sprite' Name.Variable.Magic +' ' Text.Whitespace +'DEO' Keyword.Reserved +'\n\n\t' Text.Whitespace +'.octave-view/x1' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'.Screen/x' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +'\n\t' Text.Whitespace +'.octave-view/y1' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'.Screen/y' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +'\n\t' Text.Whitespace +'AUTO-YADDR' Name +'\n\t' Text.Whitespace +'.last-note' Name.Variable.Magic +' ' Text.Whitespace +'LDZ' Keyword.Reserved +' ' Text.Whitespace +'STH' Keyword.Reserved +'\n\t' Text.Whitespace +';keys-left-icns' Name.Variable.Global +' ' Text.Whitespace +'STHkr' Keyword.Reserved +' ' Text.Whitespace +'#00' Literal.Number.Hex +' ' Text.Whitespace +'=' Name +' ' Text.Whitespace +'INC' Keyword.Reserved +' ' Text.Whitespace +',draw-key' Name.Variable.Instance +' ' Text.Whitespace +'JSR' Keyword.Reserved +'\n\t' Text.Whitespace +';keys-middle-icns' Name.Variable.Global +' ' Text.Whitespace +'STHkr' Keyword.Reserved +' ' Text.Whitespace +'#02' Literal.Number.Hex +' ' Text.Whitespace +'=' Name +' ' Text.Whitespace +'INC' Keyword.Reserved +' ' Text.Whitespace +',draw-key' Name.Variable.Instance +' ' Text.Whitespace +'JSR' Keyword.Reserved +'\n\t' Text.Whitespace +';keys-right-icns' Name.Variable.Global +' ' Text.Whitespace +'STHkr' Keyword.Reserved +' ' Text.Whitespace +'#04' Literal.Number.Hex +' ' Text.Whitespace +'=' Name +' ' Text.Whitespace +'INC' Keyword.Reserved +' ' Text.Whitespace +',draw-key' Name.Variable.Instance +' ' Text.Whitespace +'JSR' Keyword.Reserved +'\n\t' Text.Whitespace +';keys-left-icns' Name.Variable.Global +' ' Text.Whitespace +'STHkr' Keyword.Reserved +' ' Text.Whitespace +'#05' Literal.Number.Hex +' ' Text.Whitespace +'=' Name +' ' Text.Whitespace +'INC' Keyword.Reserved +' ' Text.Whitespace +',draw-key' Name.Variable.Instance +' ' Text.Whitespace +'JSR' Keyword.Reserved +'\n\t' Text.Whitespace +';keys-middle-icns' Name.Variable.Global +' ' Text.Whitespace +'STHkr' Keyword.Reserved +' ' Text.Whitespace +'#07' Literal.Number.Hex +' ' Text.Whitespace +'=' Name +' ' Text.Whitespace +'INC' Keyword.Reserved +' ' Text.Whitespace +',draw-key' Name.Variable.Instance +' ' Text.Whitespace +'JSR' Keyword.Reserved +'\n\t' Text.Whitespace +';keys-middle-icns' Name.Variable.Global +' ' Text.Whitespace +'STHkr' Keyword.Reserved +' ' Text.Whitespace +'#09' Literal.Number.Hex +' ' Text.Whitespace +'=' Name +' ' Text.Whitespace +'INC' Keyword.Reserved +' ' Text.Whitespace +',draw-key' Name.Variable.Instance +' ' Text.Whitespace +'JSR' Keyword.Reserved +'\n\t' Text.Whitespace +';keys-right-icns' Name.Variable.Global +' ' Text.Whitespace +'STHr' Keyword.Reserved +' ' Text.Whitespace +'#0b' Literal.Number.Hex +' ' Text.Whitespace +'=' Name +' ' Text.Whitespace +'INC' Keyword.Reserved +' ' Text.Whitespace +',draw-key' Name.Variable.Instance +' ' Text.Whitespace +'JSR' Keyword.Reserved +'\n\t' Text.Whitespace +'AUTO-NONE' Name +'\n\n' Text.Whitespace + +'RTN' Name +'\n\n' Text.Whitespace + +'@draw-key' Name.Function +' ' Text.Whitespace +'(' Comment.Multiline +' addr* color -- ' Comment.Multiline +')' Comment.Multiline +'\n\t\t\n\t' Text.Whitespace +'STH' Keyword.Reserved +'\n\t' Text.Whitespace +'.Screen/addr' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +'\n\t' Text.Whitespace +'.Screen/y' Name.Variable.Magic +' ' Text.Whitespace +'DEI2' Keyword.Reserved +'\n\t' Text.Whitespace +'STHr' Keyword.Reserved +' ' Text.Whitespace +'.Screen/sprite' Name.Variable.Magic +' ' Text.Whitespace +'DEOk' Keyword.Reserved +' ' Text.Whitespace +'DEOk' Keyword.Reserved +' ' Text.Whitespace +'DEO' Keyword.Reserved +'\n\t' Text.Whitespace +'.Screen/x' Name.Variable.Magic +' ' Text.Whitespace +'DEI2k' Keyword.Reserved +' ' Text.Whitespace +'#0008' Literal.Number.Hex +' ' Text.Whitespace +'++' Name +' ' Text.Whitespace +'ROT' Keyword.Reserved +' ' Text.Whitespace +'DEO2' Keyword.Reserved +'\n\t' Text.Whitespace +'.Screen/y' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +'\n\n' Text.Whitespace + +'RTN' Name +'\n\n' Text.Whitespace + +'@draw-adsr' Name.Function +' ' Text.Whitespace +'(' Comment.Multiline +' -- ' Comment.Multiline +')' Comment.Multiline +'\n\t\n\t' Text.Whitespace +'(' Comment.Multiline +' adsr ' Comment.Multiline +')' Comment.Multiline +'\n\t' Text.Whitespace +'.adsr-view/x1' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'.adsr-view/y1' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +'\n\t\t' Text.Whitespace +'.Audio0/adsr' Name.Variable.Magic +' ' Text.Whitespace +'DEI' Keyword.Reserved +' ' Text.Whitespace +'#04' Literal.Number.Hex +' ' Text.Whitespace +'SFT' Keyword.Reserved +'\n\t\t' Text.Whitespace +';draw-knob' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +'\n\t' Text.Whitespace +'.adsr-view/x1' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'#0018' Literal.Number.Hex +' ' Text.Whitespace +'++' Name +' ' Text.Whitespace +'.adsr-view/y1' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +'\n\t\t' Text.Whitespace +'.Audio0/adsr' Name.Variable.Magic +' ' Text.Whitespace +'DEI' Keyword.Reserved +' ' Text.Whitespace +'#0f' Literal.Number.Hex +' ' Text.Whitespace +'AND' Keyword.Reserved +'\n\t\t' Text.Whitespace +';draw-knob' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +'\n\t' Text.Whitespace +'.adsr-view/x1' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'#0030' Literal.Number.Hex +' ' Text.Whitespace +'++' Name +' ' Text.Whitespace +'.adsr-view/y1' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +'\n\t\t' Text.Whitespace +'.Audio0/adsr' Name.Variable.Magic +' ' Text.Whitespace +'INC' Keyword.Reserved +' ' Text.Whitespace +'DEI' Keyword.Reserved +' ' Text.Whitespace +'#04' Literal.Number.Hex +' ' Text.Whitespace +'SFT' Keyword.Reserved +'\n\t\t' Text.Whitespace +';draw-knob' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +'\n\t' Text.Whitespace +'.adsr-view/x1' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'#0048' Literal.Number.Hex +' ' Text.Whitespace +'++' Name +' ' Text.Whitespace +'.adsr-view/y1' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +'\n\t\t' Text.Whitespace +'.Audio0/adsr' Name.Variable.Magic +' ' Text.Whitespace +'INC' Keyword.Reserved +' ' Text.Whitespace +'DEI' Keyword.Reserved +' ' Text.Whitespace +'#0f' Literal.Number.Hex +' ' Text.Whitespace +'AND' Keyword.Reserved +'\n\t\t' Text.Whitespace +';draw-knob' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +'\n\t' Text.Whitespace +'(' Comment.Multiline +' volume ' Comment.Multiline +')' Comment.Multiline +'\n\t' Text.Whitespace +'.adsr-view/x2' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'#0028' Literal.Number.Hex +' ' Text.Whitespace +'--' Name +' ' Text.Whitespace +'.adsr-view/y1' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +'\n\t\t' Text.Whitespace +'.Audio0/volume' Name.Variable.Magic +' ' Text.Whitespace +'DEI' Keyword.Reserved +' ' Text.Whitespace +'#04' Literal.Number.Hex +' ' Text.Whitespace +'SFT' Keyword.Reserved +'\n\t\t' Text.Whitespace +';draw-knob' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +'\n\t' Text.Whitespace +'.adsr-view/x2' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'#0010' Literal.Number.Hex +' ' Text.Whitespace +'--' Name +' ' Text.Whitespace +'.adsr-view/y1' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +'\n\t\t' Text.Whitespace +'.Audio0/volume' Name.Variable.Magic +' ' Text.Whitespace +'DEI' Keyword.Reserved +' ' Text.Whitespace +'#0f' Literal.Number.Hex +' ' Text.Whitespace +'AND' Keyword.Reserved +'\n\t\t' Text.Whitespace +';draw-knob' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +'\n\n' Text.Whitespace + +'RTN' Name +'\n\n' Text.Whitespace + +'@draw-wave' Name.Function +' ' Text.Whitespace +'(' Comment.Multiline +' -- ' Comment.Multiline +')' Comment.Multiline +'\n\t\n\t' Text.Whitespace +'(' Comment.Multiline +' clear ' Comment.Multiline +')' Comment.Multiline +'\n\t' Text.Whitespace +'.wave-view/x1' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +'\n\t' Text.Whitespace +'.wave-view/y1' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +'\n\t' Text.Whitespace +'.wave-view/x2' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'INC2' Keyword.Reserved +'\n\t' Text.Whitespace +'.wave-view/y2' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +'\n\t' Text.Whitespace +'#00' Literal.Number.Hex +' ' Text.Whitespace +';fill-rect' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +'\n\n\t' Text.Whitespace +'#01' Literal.Number.Hex +' ' Text.Whitespace +';draw-wave-length' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +'\n\n\t' Text.Whitespace +'.wave-view/x1' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'.Screen/x' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +'\n\n\t' Text.Whitespace +'(' Comment.Multiline +' waveform ' Comment.Multiline +')' Comment.Multiline +'\n\t' Text.Whitespace +'#ff' Literal.Number.Hex +' ' Text.Whitespace +'#00' Literal.Number.Hex +' \n\t' Text.Whitespace +'&loop' Name.Label +'\n\t\t' Text.Whitespace +'(' Comment.Multiline +' dotted line ' Comment.Multiline +')' Comment.Multiline +'\n\t\t' Text.Whitespace +'DUP' Keyword.Reserved +' ' Text.Whitespace +'#01' Literal.Number.Hex +' ' Text.Whitespace +'AND' Keyword.Reserved +' ' Text.Whitespace +',&no-dot' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +' \n\t\t\t' Text.Whitespace +'.wave-view/y1' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'#0010' Literal.Number.Hex +' ' Text.Whitespace +'++' Name +' ' Text.Whitespace +'.Screen/y' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +'\n\t\t\t' Text.Whitespace +'#03' Literal.Number.Hex +' ' Text.Whitespace +'.Screen/pixel' Name.Variable.Magic +' ' Text.Whitespace +'DEO' Keyword.Reserved +'\n\t\t' Text.Whitespace +'&no-dot' Name.Label +'\n\t\t' Text.Whitespace +'#00' Literal.Number.Hex +' ' Text.Whitespace +'OVR' Keyword.Reserved +' ' Text.Whitespace +'.Audio0/addr' Name.Variable.Magic +' ' Text.Whitespace +'DEI2' Keyword.Reserved +' ' Text.Whitespace +'++' Name +' ' Text.Whitespace +'LDA' Keyword.Reserved +' \n\t\t' Text.Whitespace +'2/' Name +'\n\t\t' Text.Whitespace +'TOS' Name +' ' Text.Whitespace +'4//' Name +' ' Text.Whitespace +'.wave-view/y1' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'++' Name +' ' Text.Whitespace +'.Screen/y' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +'\n\t\t' Text.Whitespace +'.Screen/x' Name.Variable.Magic +' ' Text.Whitespace +'DEI2' Keyword.Reserved +' ' Text.Whitespace +'INC2' Keyword.Reserved +' ' Text.Whitespace +'.Screen/x' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +'\n\t\t' Text.Whitespace +'(' Comment.Multiline +' draw ' Comment.Multiline +')' Comment.Multiline +' ' Text.Whitespace +'DUP' Keyword.Reserved +' \n\t\t\t' Text.Whitespace +'.Audio0/length' Name.Variable.Magic +' ' Text.Whitespace +'DEI2' Keyword.Reserved +' ' Text.Whitespace +'NIP' Keyword.Reserved +' ' Text.Whitespace +'>' Name +' \n\t\t\t' Text.Whitespace +'.Audio0/length' Name.Variable.Magic +' ' Text.Whitespace +'DEI2' Keyword.Reserved +' ' Text.Whitespace +'#0100' Literal.Number.Hex +' ' Text.Whitespace +'!!' Name +' ' Text.Whitespace +'#0101' Literal.Number.Hex +' ' Text.Whitespace +'==' Name +' ' Text.Whitespace +'DUP' Keyword.Reserved +' ' Text.Whitespace +'ADD' Keyword.Reserved +' ' Text.Whitespace +'INC' Keyword.Reserved +' ' Text.Whitespace +'.Screen/pixel' Name.Variable.Magic +' ' Text.Whitespace +'DEO' Keyword.Reserved +'\n\t\t' Text.Whitespace +'INC' Keyword.Reserved +' ' Text.Whitespace +'GTHk' Keyword.Reserved +' ' Text.Whitespace +',&loop' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +'\n\t' Text.Whitespace +'POP2' Keyword.Reserved +'\n\n\t' Text.Whitespace +'(' Comment.Multiline +' range ' Comment.Multiline +')' Comment.Multiline +'\n\t' Text.Whitespace +'AUTO-X' Name +'\n\t' Text.Whitespace +'.wave-view/x1' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'.Screen/x' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +'\n\t' Text.Whitespace +'.wave-view/y1' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'#0010' Literal.Number.Hex +' ' Text.Whitespace +'--' Name +' ' Text.Whitespace +'.Screen/y' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +'\n\t' Text.Whitespace +'.Audio0/addr' Name.Variable.Magic +' ' Text.Whitespace +'DEI2' Keyword.Reserved +' ' Text.Whitespace +'#02' Literal.Number.Hex +' ' Text.Whitespace +';draw-short' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +'\n\t' Text.Whitespace +'.wave-view/x2' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'#0020' Literal.Number.Hex +' ' Text.Whitespace +'--' Name +' ' Text.Whitespace +'.Screen/x' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +'\n\t' Text.Whitespace +'.Audio0/length' Name.Variable.Magic +' ' Text.Whitespace +'DEI2' Keyword.Reserved +' ' Text.Whitespace +'#02' Literal.Number.Hex +' ' Text.Whitespace +';draw-short' Name.Variable.Global +' ' Text.Whitespace +'JSR2' Keyword.Reserved +'\n\t' Text.Whitespace +'AUTO-NONE' Name +'\n\n' Text.Whitespace + +'RTN' Name +'\n\n' Text.Whitespace + +'@draw-wave-length' Name.Function +' ' Text.Whitespace +'(' Comment.Multiline +' color -- ' Comment.Multiline +')' Comment.Multiline +'\n\t\n\t' Text.Whitespace +'STH' Keyword.Reserved +'\n\t' Text.Whitespace +'.wave-view/x1' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'.Audio0/length' Name.Variable.Magic +' ' Text.Whitespace +'DEI2' Keyword.Reserved +' ' Text.Whitespace +'++' Name +' ' Text.Whitespace +'.Screen/x' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +'\n\t' Text.Whitespace +'.wave-view/y1' Name.Variable.Magic +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'DUP2' Keyword.Reserved +' ' Text.Whitespace +'#0020' Literal.Number.Hex +' ' Text.Whitespace +'++' Name +' ' Text.Whitespace +'SWP2' Keyword.Reserved +'\n\t' Text.Whitespace +'&loop' Name.Label +'\n\t\t' Text.Whitespace +'DUP2' Keyword.Reserved +' ' Text.Whitespace +'.Screen/y' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +'\n\t\t' Text.Whitespace +'(' Comment.Multiline +' draw ' Comment.Multiline +')' Comment.Multiline +' ' Text.Whitespace +'STHkr' Keyword.Reserved +' ' Text.Whitespace +'.Screen/pixel' Name.Variable.Magic +' ' Text.Whitespace +'DEO' Keyword.Reserved +'\n\t\t' Text.Whitespace +'INC2' Keyword.Reserved +' ' Text.Whitespace +'GTH2k' Keyword.Reserved +' ' Text.Whitespace +',&loop' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +'\n\t' Text.Whitespace +'POP2' Keyword.Reserved +' ' Text.Whitespace +'POP2' Keyword.Reserved +'\n\t' Text.Whitespace +'POPr' Keyword.Reserved +'\n\n' Text.Whitespace + +'RTN' Name +'\n\n' Text.Whitespace + +'@draw-knob' Name.Function +' ' Text.Whitespace +'(' Comment.Multiline +' x* y* value -- ' Comment.Multiline +')' Comment.Multiline +'\n\n\t' Text.Whitespace +'(' Comment.Multiline +' load ' Comment.Multiline +')' Comment.Multiline +' ' Text.Whitespace +'STH' Keyword.Reserved +' ' Text.Whitespace +'.Screen/y' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +' ' Text.Whitespace +'.Screen/x' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +'\n\t' Text.Whitespace +';knob-icns' Name.Variable.Global +' ' Text.Whitespace +'.Screen/addr' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +' \n\t\t' Text.Whitespace +'(' Comment.Multiline +' draw ' Comment.Multiline +')' Comment.Multiline +' ' Text.Whitespace +'#01' Literal.Number.Hex +' ' Text.Whitespace +'.Screen/sprite' Name.Variable.Magic +' ' Text.Whitespace +'DEO' Keyword.Reserved +'\n\t' Text.Whitespace +'.Screen/x' Name.Variable.Magic +' ' Text.Whitespace +'DEI2' Keyword.Reserved +' ' Text.Whitespace +'#0008' Literal.Number.Hex +' ' Text.Whitespace +'++' Name +' ' Text.Whitespace +'.Screen/x' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +' \n\t' Text.Whitespace +';knob-icns' Name.Variable.Global +' ' Text.Whitespace +'#0008' Literal.Number.Hex +' ' Text.Whitespace +'++' Name +' ' Text.Whitespace +'.Screen/addr' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +' \n\t\t' Text.Whitespace +'(' Comment.Multiline +' draw ' Comment.Multiline +')' Comment.Multiline +' ' Text.Whitespace +'#01' Literal.Number.Hex +' ' Text.Whitespace +'.Screen/sprite' Name.Variable.Magic +' ' Text.Whitespace +'DEO' Keyword.Reserved +'\n\t' Text.Whitespace +'.Screen/y' Name.Variable.Magic +' ' Text.Whitespace +'DEI2' Keyword.Reserved +' ' Text.Whitespace +'#0008' Literal.Number.Hex +' ' Text.Whitespace +'++' Name +' ' Text.Whitespace +'.Screen/y' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +' \n\t' Text.Whitespace +';knob-icns' Name.Variable.Global +' ' Text.Whitespace +'#0018' Literal.Number.Hex +' ' Text.Whitespace +'++' Name +' ' Text.Whitespace +'.Screen/addr' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +' \n\t\t' Text.Whitespace +'(' Comment.Multiline +' draw ' Comment.Multiline +')' Comment.Multiline +' ' Text.Whitespace +'#01' Literal.Number.Hex +' ' Text.Whitespace +'.Screen/sprite' Name.Variable.Magic +' ' Text.Whitespace +'DEO' Keyword.Reserved +'\n\t' Text.Whitespace +'.Screen/x' Name.Variable.Magic +' ' Text.Whitespace +'DEI2' Keyword.Reserved +' ' Text.Whitespace +'#0008' Literal.Number.Hex +' ' Text.Whitespace +'--' Name +' ' Text.Whitespace +'.Screen/x' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +' \n\t' Text.Whitespace +';knob-icns' Name.Variable.Global +' ' Text.Whitespace +'#0010' Literal.Number.Hex +' ' Text.Whitespace +'++' Name +' ' Text.Whitespace +'.Screen/addr' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +' \n\t\t' Text.Whitespace +'(' Comment.Multiline +' draw ' Comment.Multiline +')' Comment.Multiline +' ' Text.Whitespace +'#01' Literal.Number.Hex +' ' Text.Whitespace +'.Screen/sprite' Name.Variable.Magic +' ' Text.Whitespace +'DEO' Keyword.Reserved +'\n\t' Text.Whitespace +'.Screen/x' Name.Variable.Magic +' ' Text.Whitespace +'DEI2' Keyword.Reserved +' ' Text.Whitespace +'#0004' Literal.Number.Hex +' ' Text.Whitespace +'++' Name +' ' Text.Whitespace +'.Screen/x' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +'\n\t' Text.Whitespace +'.Screen/y' Name.Variable.Magic +' ' Text.Whitespace +'DEI2' Keyword.Reserved +' ' Text.Whitespace +'#0008' Literal.Number.Hex +' ' Text.Whitespace +'++' Name +' ' Text.Whitespace +'.Screen/y' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +'\n\t' Text.Whitespace +';font-hex' Name.Variable.Global +' ' Text.Whitespace +'#00' Literal.Number.Hex +' ' Text.Whitespace +'STHkr' Keyword.Reserved +' ' Text.Whitespace +'#30' Literal.Number.Hex +' ' Text.Whitespace +'SFT' Keyword.Reserved +' ' Text.Whitespace +'++' Name +' ' Text.Whitespace +'.Screen/addr' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +'\n\t\t' Text.Whitespace +'(' Comment.Multiline +' draw ' Comment.Multiline +')' Comment.Multiline +' ' Text.Whitespace +'#01' Literal.Number.Hex +' ' Text.Whitespace +'.Screen/sprite' Name.Variable.Magic +' ' Text.Whitespace +'DEO' Keyword.Reserved +'\n\t' Text.Whitespace +'.Screen/x' Name.Variable.Magic +' ' Text.Whitespace +'DEI2' Keyword.Reserved +' ' Text.Whitespace +'#0004' Literal.Number.Hex +' ' Text.Whitespace +'--' Name +' ' Text.Whitespace +'#00' Literal.Number.Hex +' ' Text.Whitespace +'#00' Literal.Number.Hex +' ' Text.Whitespace +'STHkr' Keyword.Reserved +' ' Text.Whitespace +';knob-offsetx' Name.Variable.Global +' ' Text.Whitespace +'++' Name +' ' Text.Whitespace +'LDA' Keyword.Reserved +' ' Text.Whitespace +'++' Name +' ' Text.Whitespace +'.Screen/x' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +'\n\t' Text.Whitespace +'.Screen/y' Name.Variable.Magic +' ' Text.Whitespace +'DEI2' Keyword.Reserved +' ' Text.Whitespace +'#0010' Literal.Number.Hex +' ' Text.Whitespace +'--' Name +' ' Text.Whitespace +'#00' Literal.Number.Hex +' ' Text.Whitespace +'#00' Literal.Number.Hex +' ' Text.Whitespace +'STHr' Keyword.Reserved +' ' Text.Whitespace +';knob-offsety' Name.Variable.Global +' ' Text.Whitespace +'++' Name +' ' Text.Whitespace +'LDA' Keyword.Reserved +' ' Text.Whitespace +'++' Name +' ' Text.Whitespace +'.Screen/y' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +'\n\t' Text.Whitespace +';knob-icns' Name.Variable.Global +' ' Text.Whitespace +'#0020' Literal.Number.Hex +' ' Text.Whitespace +'++' Name +' ' Text.Whitespace +'.Screen/addr' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +'\n\t\t' Text.Whitespace +'(' Comment.Multiline +' draw ' Comment.Multiline +')' Comment.Multiline +' ' Text.Whitespace +'#05' Literal.Number.Hex +' ' Text.Whitespace +'.Screen/sprite' Name.Variable.Magic +' ' Text.Whitespace +'DEO' Keyword.Reserved +'\n\n' Text.Whitespace + +'RTN' Name +'\n\n' Text.Whitespace + +'@draw-short' Name.Function +' ' Text.Whitespace +'(' Comment.Multiline +' short* color -- ' Comment.Multiline +')' Comment.Multiline +'\n\n\t' Text.Whitespace +'STH' Keyword.Reserved +' \n\t' Text.Whitespace +'SWP' Keyword.Reserved +' ' Text.Whitespace +'STHkr' Keyword.Reserved +' ' Text.Whitespace +',draw-byte' Name.Variable.Instance +' ' Text.Whitespace +'JSR' Keyword.Reserved +' \n\t' Text.Whitespace +'STHr' Keyword.Reserved +' \n\n' Text.Whitespace + +'@draw-byte' Name.Function +' ' Text.Whitespace +'(' Comment.Multiline +' byte color -- ' Comment.Multiline +')' Comment.Multiline +'\n\n\t' Text.Whitespace +'STH' Keyword.Reserved +' \n\t' Text.Whitespace +'DUP' Keyword.Reserved +' ' Text.Whitespace +'#04' Literal.Number.Hex +' ' Text.Whitespace +'SFT' Keyword.Reserved +' ' Text.Whitespace +'STHkr' Keyword.Reserved +' ' Text.Whitespace +',draw-hex' Name.Variable.Instance +' ' Text.Whitespace +'JSR' Keyword.Reserved +' ' Text.Whitespace +'#0f' Literal.Number.Hex +' ' Text.Whitespace +'AND' Keyword.Reserved +' \n\t' Text.Whitespace +'STHr' Keyword.Reserved +' \n\n' Text.Whitespace + +'@draw-hex' Name.Function +' ' Text.Whitespace +'(' Comment.Multiline +' char color -- ' Comment.Multiline +')' Comment.Multiline +'\n\n\t' Text.Whitespace +'SWP' Keyword.Reserved +' ' Text.Whitespace +'TOS' Name +' ' Text.Whitespace +'8**' Name +' ' Text.Whitespace +';font-hex' Name.Variable.Global +' ' Text.Whitespace +'++' Name +' ' Text.Whitespace +'.Screen/addr' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +'\n\t' Text.Whitespace +'.Screen/sprite' Name.Variable.Magic +' ' Text.Whitespace +'DEO' Keyword.Reserved +'\n\n' Text.Whitespace + +'RTN' Name +'\n\n' Text.Whitespace + +'@fill-rect' Name.Function +' ' Text.Whitespace +'(' Comment.Multiline +' x1* y1* x2* y2* color -- ' Comment.Multiline +')' Comment.Multiline +'\n\t\n\t' Text.Whitespace +',&color' Name.Variable.Instance +' ' Text.Whitespace +'STR' Keyword.Reserved +'\n\t' Text.Whitespace +'(' Comment.Multiline +' x1 x2 y1 y2 ' Comment.Multiline +')' Comment.Multiline +' ' Text.Whitespace +'ROT2' Keyword.Reserved +'\n\t' Text.Whitespace +'&ver' Name.Label +'\n\t\t' Text.Whitespace +'(' Comment.Multiline +' save ' Comment.Multiline +')' Comment.Multiline +' ' Text.Whitespace +'DUP2' Keyword.Reserved +' ' Text.Whitespace +'.Screen/y' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +'\n\t\t' Text.Whitespace +'STH2' Keyword.Reserved +' ' Text.Whitespace +'STH2' Keyword.Reserved +' ' Text.Whitespace +'OVR2' Keyword.Reserved +' ' Text.Whitespace +'OVR2' Keyword.Reserved +' ' Text.Whitespace +'SWP2' Keyword.Reserved +'\n\t\t' Text.Whitespace +'&hor' Name.Label +'\n\t\t\t' Text.Whitespace +'(' Comment.Multiline +' save ' Comment.Multiline +')' Comment.Multiline +' ' Text.Whitespace +'DUP2' Keyword.Reserved +' ' Text.Whitespace +'.Screen/x' Name.Variable.Magic +' ' Text.Whitespace +'DEO2' Keyword.Reserved +'\n\t\t\t' Text.Whitespace +'(' Comment.Multiline +' draw ' Comment.Multiline +')' Comment.Multiline +' ' Text.Whitespace +',&color' Name.Variable.Instance +' ' Text.Whitespace +'LDR' Keyword.Reserved +' ' Text.Whitespace +'.Screen/pixel' Name.Variable.Magic +' ' Text.Whitespace +'DEO' Keyword.Reserved +'\n\t\t\t' Text.Whitespace +'(' Comment.Multiline +' incr ' Comment.Multiline +')' Comment.Multiline +' ' Text.Whitespace +'INC2' Keyword.Reserved +'\n\t\t\t' Text.Whitespace +'OVR2' Keyword.Reserved +' ' Text.Whitespace +'OVR2' Keyword.Reserved +' ' Text.Whitespace +'GTS2' Name +' ' Text.Whitespace +',&hor' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +'\n\t\t' Text.Whitespace +'POP2' Keyword.Reserved +' ' Text.Whitespace +'POP2' Keyword.Reserved +' ' Text.Whitespace +'STH2r' Keyword.Reserved +' ' Text.Whitespace +'STH2r' Keyword.Reserved +'\n\t\t' Text.Whitespace +'(' Comment.Multiline +' incr ' Comment.Multiline +')' Comment.Multiline +' ' Text.Whitespace +'INC2' Keyword.Reserved +'\n\t\t' Text.Whitespace +'OVR2' Keyword.Reserved +' ' Text.Whitespace +'OVR2' Keyword.Reserved +' ' Text.Whitespace +'GTS2' Name +' ' Text.Whitespace +',&ver' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +'\n\t' Text.Whitespace +'POP2' Keyword.Reserved +' ' Text.Whitespace +'POP2' Keyword.Reserved +' ' Text.Whitespace +'POP2' Keyword.Reserved +' ' Text.Whitespace +'POP2' Keyword.Reserved +'\n\n' Text.Whitespace + +'RTN' Name +'\n\t' Text.Whitespace +'&color' Name.Label +' ' Text.Whitespace +'$1' Keyword.Declaration +'\n\n' Text.Whitespace + +'@within-rect' Name.Function +' ' Text.Whitespace +'(' Comment.Multiline +' x* y* rect -- flag ' Comment.Multiline +')' Comment.Multiline +'\n\t\n\t' Text.Whitespace +'STH' Keyword.Reserved +'\n\t' Text.Whitespace +'(' Comment.Multiline +' y < rect.y1 ' Comment.Multiline +')' Comment.Multiline +' ' Text.Whitespace +'DUP2' Keyword.Reserved +' ' Text.Whitespace +'STHkr' Keyword.Reserved +' ' Text.Whitespace +'#02' Literal.Number.Hex +' ' Text.Whitespace +'ADD' Keyword.Reserved +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'LTH2' Keyword.Reserved +' ' Text.Whitespace +',&skip' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +'\n\t' Text.Whitespace +'(' Comment.Multiline +' y > rect.y2 ' Comment.Multiline +')' Comment.Multiline +' ' Text.Whitespace +'DUP2' Keyword.Reserved +' ' Text.Whitespace +'STHkr' Keyword.Reserved +' ' Text.Whitespace +'#06' Literal.Number.Hex +' ' Text.Whitespace +'ADD' Keyword.Reserved +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'GTH2' Keyword.Reserved +' ' Text.Whitespace +',&skip' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +'\n\t' Text.Whitespace +'SWP2' Keyword.Reserved +'\n\t' Text.Whitespace +'(' Comment.Multiline +' x < rect.x1 ' Comment.Multiline +')' Comment.Multiline +' ' Text.Whitespace +'DUP2' Keyword.Reserved +' ' Text.Whitespace +'STHkr' Keyword.Reserved +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'LTH2' Keyword.Reserved +' ' Text.Whitespace +',&skip' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +'\n\t' Text.Whitespace +'(' Comment.Multiline +' x > rect.x2 ' Comment.Multiline +')' Comment.Multiline +' ' Text.Whitespace +'DUP2' Keyword.Reserved +' ' Text.Whitespace +'STHkr' Keyword.Reserved +' ' Text.Whitespace +'#04' Literal.Number.Hex +' ' Text.Whitespace +'ADD' Keyword.Reserved +' ' Text.Whitespace +'LDZ2' Keyword.Reserved +' ' Text.Whitespace +'GTH2' Keyword.Reserved +' ' Text.Whitespace +',&skip' Name.Variable.Instance +' ' Text.Whitespace +'JCN' Keyword.Reserved +'\n\t' Text.Whitespace +'POP2' Keyword.Reserved +' ' Text.Whitespace +'POP2' Keyword.Reserved +' ' Text.Whitespace +'POPr' Keyword.Reserved +'\n\t' Text.Whitespace +'#01' Literal.Number.Hex +' \n' Text.Whitespace + +'RTN' Name +'\n\t' Text.Whitespace +'&skip' Name.Label +'\n\t' Text.Whitespace +'POP2' Keyword.Reserved +' ' Text.Whitespace +'POP2' Keyword.Reserved +' ' Text.Whitespace +'POPr' Keyword.Reserved +'\n\t' Text.Whitespace +'#00' Literal.Number.Hex +'\n\n' Text.Whitespace + +'RTN' Name +'\n\n' Text.Whitespace + +'@cursor' Name.Function +' \n\t' Text.Whitespace +'80c0' Literal +' ' Text.Whitespace +'e0f0' Literal +' ' Text.Whitespace +'f8e0' Literal +' ' Text.Whitespace +'1000' Literal +' \n\n' Text.Whitespace + +'@arrow-icns' Name.Function +' \n\t' Text.Whitespace +'0010' Literal +' ' Text.Whitespace +'387c' Literal +' ' Text.Whitespace +'fe10' Literal +' ' Text.Whitespace +'1000' Literal +'\n\t' Text.Whitespace +'0010' Literal +' ' Text.Whitespace +'1010' Literal +' ' Text.Whitespace +'fe7c' Literal +' ' Text.Whitespace +'3810' Literal +' \n\n' Text.Whitespace + +'@notes' Name.Function +' \n\t' Text.Whitespace +'30' Literal +' ' Text.Whitespace +'32' Literal +' ' Text.Whitespace +'34' Literal +' ' Text.Whitespace +'35' Literal +'\n\t' Text.Whitespace +'37' Literal +' ' Text.Whitespace +'39' Literal +' ' Text.Whitespace +'3b' Literal +' ' Text.Whitespace +'3c' Literal +'\n\n' Text.Whitespace + +'@keys-left-icns' Name.Function +' \n\t' Text.Whitespace +'7c7c' Literal +' ' Text.Whitespace +'7c7c' Literal +' ' Text.Whitespace +'7c7c' Literal +' ' Text.Whitespace +'7c7c' Literal +'\n\t' Text.Whitespace +'7c7c' Literal +' ' Text.Whitespace +'7c7c' Literal +' ' Text.Whitespace +'7c7c' Literal +' ' Text.Whitespace +'7e7f' Literal +'\n\t' Text.Whitespace +'7f7f' Literal +' ' Text.Whitespace +'7f7f' Literal +' ' Text.Whitespace +'7f7f' Literal +' ' Text.Whitespace +'3e00' Literal +' \n\n' Text.Whitespace + +'@keys-middle-icns' Name.Function +' \n\t' Text.Whitespace +'1c1c' Literal +' ' Text.Whitespace +'1c1c' Literal +' ' Text.Whitespace +'1c1c' Literal +' ' Text.Whitespace +'1c1c' Literal +'\n\t' Text.Whitespace +'1c1c' Literal +' ' Text.Whitespace +'1c1c' Literal +' ' Text.Whitespace +'1c1c' Literal +' ' Text.Whitespace +'3e7f' Literal +'\n\t' Text.Whitespace +'7f7f' Literal +' ' Text.Whitespace +'7f7f' Literal +' ' Text.Whitespace +'7f7f' Literal +' ' Text.Whitespace +'3e00' Literal +' \n\n' Text.Whitespace + +'@keys-right-icns' Name.Function +' \n\t' Text.Whitespace +'1f1f' Literal +' ' Text.Whitespace +'1f1f' Literal +' ' Text.Whitespace +'1f1f' Literal +' ' Text.Whitespace +'1f1f' Literal +'\n\t' Text.Whitespace +'1f1f' Literal +' ' Text.Whitespace +'1f1f' Literal +' ' Text.Whitespace +'1f1f' Literal +' ' Text.Whitespace +'3f7f' Literal +'\n\t' Text.Whitespace +'7f7f' Literal +' ' Text.Whitespace +'7f7f' Literal +' ' Text.Whitespace +'7f7f' Literal +' ' Text.Whitespace +'3e00' Literal +' \n\n' Text.Whitespace + +'@knob-icns' Name.Function +' \n\t' Text.Whitespace +'0003' Literal +' ' Text.Whitespace +'0c10' Literal +' ' Text.Whitespace +'2020' Literal +' ' Text.Whitespace +'4040' Literal +'\n\t' Text.Whitespace +'00c0' Literal +' ' Text.Whitespace +'3008' Literal +' ' Text.Whitespace +'0404' Literal +' ' Text.Whitespace +'0202' Literal +'\n\t' Text.Whitespace +'4040' Literal +' ' Text.Whitespace +'2020' Literal +' ' Text.Whitespace +'100c' Literal +' ' Text.Whitespace +'0300' Literal +'\n\t' Text.Whitespace +'0202' Literal +' ' Text.Whitespace +'0404' Literal +' ' Text.Whitespace +'0830' Literal +' ' Text.Whitespace +'c000' Literal +'\n\t' Text.Whitespace +'0000' Literal +' ' Text.Whitespace +'183c' Literal +' ' Text.Whitespace +'3c18' Literal +' ' Text.Whitespace +'0000' Literal +' \n\n' Text.Whitespace + +'@knob-offsetx' Name.Function +' \n\t' Text.Whitespace +'01' Literal +' ' Text.Whitespace +'00' Literal +' ' Text.Whitespace +'00' Literal +' ' Text.Whitespace +'00' Literal +' ' Text.Whitespace +'00' Literal +' ' Text.Whitespace +'01' Literal +' ' Text.Whitespace +'02' Literal +' ' Text.Whitespace +'03' Literal +'\n\t' Text.Whitespace +'05' Literal +' ' Text.Whitespace +'06' Literal +' ' Text.Whitespace +'07' Literal +' ' Text.Whitespace +'08' Literal +' ' Text.Whitespace +'08' Literal +' ' Text.Whitespace +'08' Literal +' ' Text.Whitespace +'08' Literal +' ' Text.Whitespace +'07' Literal +' \n\n' Text.Whitespace + +'@knob-offsety' Name.Function +' \n\t' Text.Whitespace +'07' Literal +' ' Text.Whitespace +'06' Literal +' ' Text.Whitespace +'05' Literal +' ' Text.Whitespace +'03' Literal +' ' Text.Whitespace +'02' Literal +' ' Text.Whitespace +'01' Literal +' ' Text.Whitespace +'00' Literal +' ' Text.Whitespace +'00' Literal +'\n\t' Text.Whitespace +'00' Literal +' ' Text.Whitespace +'00' Literal +' ' Text.Whitespace +'01' Literal +' ' Text.Whitespace +'02' Literal +' ' Text.Whitespace +'03' Literal +' ' Text.Whitespace +'05' Literal +' ' Text.Whitespace +'06' Literal +' ' Text.Whitespace +'07' Literal +' \n\n' Text.Whitespace + +'@font-hex' Name.Function +' ' Text.Whitespace +'(' Comment.Multiline +' 0-F ' Comment.Multiline +')' Comment.Multiline +'\n\t' Text.Whitespace +'007c' Literal +' ' Text.Whitespace +'8282' Literal +' ' Text.Whitespace +'8282' Literal +' ' Text.Whitespace +'827c' Literal +' ' Text.Whitespace +'0030' Literal +' ' Text.Whitespace +'1010' Literal +' ' Text.Whitespace +'1010' Literal +' ' Text.Whitespace +'1010' Literal +'\n\t' Text.Whitespace +'007c' Literal +' ' Text.Whitespace +'8202' Literal +' ' Text.Whitespace +'7c80' Literal +' ' Text.Whitespace +'80fe' Literal +' ' Text.Whitespace +'007c' Literal +' ' Text.Whitespace +'8202' Literal +' ' Text.Whitespace +'1c02' Literal +' ' Text.Whitespace +'827c' Literal +'\n\t' Text.Whitespace +'000c' Literal +' ' Text.Whitespace +'1424' Literal +' ' Text.Whitespace +'4484' Literal +' ' Text.Whitespace +'fe04' Literal +' ' Text.Whitespace +'00fe' Literal +' ' Text.Whitespace +'8080' Literal +' ' Text.Whitespace +'7c02' Literal +' ' Text.Whitespace +'827c' Literal +'\n\t' Text.Whitespace +'007c' Literal +' ' Text.Whitespace +'8280' Literal +' ' Text.Whitespace +'fc82' Literal +' ' Text.Whitespace +'827c' Literal +' ' Text.Whitespace +'007c' Literal +' ' Text.Whitespace +'8202' Literal +' ' Text.Whitespace +'1e02' Literal +' ' Text.Whitespace +'0202' Literal +'\n\t' Text.Whitespace +'007c' Literal +' ' Text.Whitespace +'8282' Literal +' ' Text.Whitespace +'7c82' Literal +' ' Text.Whitespace +'827c' Literal +' ' Text.Whitespace +'007c' Literal +' ' Text.Whitespace +'8282' Literal +' ' Text.Whitespace +'7e02' Literal +' ' Text.Whitespace +'827c' Literal +'\n\t' Text.Whitespace +'007c' Literal +' ' Text.Whitespace +'8202' Literal +' ' Text.Whitespace +'7e82' Literal +' ' Text.Whitespace +'827e' Literal +' ' Text.Whitespace +'00fc' Literal +' ' Text.Whitespace +'8282' Literal +' ' Text.Whitespace +'fc82' Literal +' ' Text.Whitespace +'82fc' Literal +'\n\t' Text.Whitespace +'007c' Literal +' ' Text.Whitespace +'8280' Literal +' ' Text.Whitespace +'8080' Literal +' ' Text.Whitespace +'827c' Literal +' ' Text.Whitespace +'00fc' Literal +' ' Text.Whitespace +'8282' Literal +' ' Text.Whitespace +'8282' Literal +' ' Text.Whitespace +'82fc' Literal +'\n\t' Text.Whitespace +'007c' Literal +' ' Text.Whitespace +'8280' Literal +' ' Text.Whitespace +'f080' Literal +' ' Text.Whitespace +'827c' Literal +' ' Text.Whitespace +'007c' Literal +' ' Text.Whitespace +'8280' Literal +' ' Text.Whitespace +'f080' Literal +' ' Text.Whitespace +'8080' Literal +' \n\n' Text.Whitespace + +'@sin-pcm' Name.Function +'\n\t' Text.Whitespace +'8083' Literal +' ' Text.Whitespace +'8689' Literal +' ' Text.Whitespace +'8c8f' Literal +' ' Text.Whitespace +'9295' Literal +' ' Text.Whitespace +'989b' Literal +' ' Text.Whitespace +'9ea1' Literal +' ' Text.Whitespace +'a4a7' Literal +' ' Text.Whitespace +'aaad' Literal +'\n\t' Text.Whitespace +'b0b3' Literal +' ' Text.Whitespace +'b6b9' Literal +' ' Text.Whitespace +'bbbe' Literal +' ' Text.Whitespace +'c1c3' Literal +' ' Text.Whitespace +'c6c9' Literal +' ' Text.Whitespace +'cbce' Literal +' ' Text.Whitespace +'d0d2' Literal +' ' Text.Whitespace +'d5d7' Literal +'\n\t' Text.Whitespace +'d9db' Literal +' ' Text.Whitespace +'dee0' Literal +' ' Text.Whitespace +'e2e4' Literal +' ' Text.Whitespace +'e6e7' Literal +' ' Text.Whitespace +'e9eb' Literal +' ' Text.Whitespace +'ecee' Literal +' ' Text.Whitespace +'f0f1' Literal +' ' Text.Whitespace +'f2f4' Literal +'\n\t' Text.Whitespace +'f5f6' Literal +' ' Text.Whitespace +'f7f8' Literal +' ' Text.Whitespace +'f9fa' Literal +' ' Text.Whitespace +'fbfb' Literal +' ' Text.Whitespace +'fcfd' Literal +' ' Text.Whitespace +'fdfe' Literal +' ' Text.Whitespace +'fefe' Literal +' ' Text.Whitespace +'fefe' Literal +'\n\t' Text.Whitespace +'fffe' Literal +' ' Text.Whitespace +'fefe' Literal +' ' Text.Whitespace +'fefe' Literal +' ' Text.Whitespace +'fdfd' Literal +' ' Text.Whitespace +'fcfb' Literal +' ' Text.Whitespace +'fbfa' Literal +' ' Text.Whitespace +'f9f8' Literal +' ' Text.Whitespace +'f7f6' Literal +'\n\t' Text.Whitespace +'f5f4' Literal +' ' Text.Whitespace +'f2f1' Literal +' ' Text.Whitespace +'f0ee' Literal +' ' Text.Whitespace +'eceb' Literal +' ' Text.Whitespace +'e9e7' Literal +' ' Text.Whitespace +'e6e4' Literal +' ' Text.Whitespace +'e2e0' Literal +' ' Text.Whitespace +'dedb' Literal +'\n\t' Text.Whitespace +'d9d7' Literal +' ' Text.Whitespace +'d5d2' Literal +' ' Text.Whitespace +'d0ce' Literal +' ' Text.Whitespace +'cbc9' Literal +' ' Text.Whitespace +'c6c3' Literal +' ' Text.Whitespace +'c1be' Literal +' ' Text.Whitespace +'bbb9' Literal +' ' Text.Whitespace +'b6b3' Literal +'\n\t' Text.Whitespace +'b0ad' Literal +' ' Text.Whitespace +'aaa7' Literal +' ' Text.Whitespace +'a4a1' Literal +' ' Text.Whitespace +'9e9b' Literal +' ' Text.Whitespace +'9895' Literal +' ' Text.Whitespace +'928f' Literal +' ' Text.Whitespace +'8c89' Literal +' ' Text.Whitespace +'8683' Literal +'\n\t' Text.Whitespace +'807d' Literal +' ' Text.Whitespace +'7a77' Literal +' ' Text.Whitespace +'7471' Literal +' ' Text.Whitespace +'6e6b' Literal +' ' Text.Whitespace +'6865' Literal +' ' Text.Whitespace +'625f' Literal +' ' Text.Whitespace +'5c59' Literal +' ' Text.Whitespace +'5653' Literal +'\n\t' Text.Whitespace +'504d' Literal +' ' Text.Whitespace +'4a47' Literal +' ' Text.Whitespace +'4542' Literal +' ' Text.Whitespace +'3f3d' Literal +' ' Text.Whitespace +'3a37' Literal +' ' Text.Whitespace +'3532' Literal +' ' Text.Whitespace +'302e' Literal +' ' Text.Whitespace +'2b29' Literal +'\n\t' Text.Whitespace +'2725' Literal +' ' Text.Whitespace +'2220' Literal +' ' Text.Whitespace +'1e1c' Literal +' ' Text.Whitespace +'1a19' Literal +' ' Text.Whitespace +'1715' Literal +' ' Text.Whitespace +'1412' Literal +' ' Text.Whitespace +'100f' Literal +' ' Text.Whitespace +'0e0c' Literal +'\n\t' Text.Whitespace +'0b0a' Literal +' ' Text.Whitespace +'0908' Literal +' ' Text.Whitespace +'0706' Literal +' ' Text.Whitespace +'0505' Literal +' ' Text.Whitespace +'0403' Literal +' ' Text.Whitespace +'0302' Literal +' ' Text.Whitespace +'0202' Literal +' ' Text.Whitespace +'0202' Literal +'\n\t' Text.Whitespace +'0102' Literal +' ' Text.Whitespace +'0202' Literal +' ' Text.Whitespace +'0202' Literal +' ' Text.Whitespace +'0303' Literal +' ' Text.Whitespace +'0405' Literal +' ' Text.Whitespace +'0506' Literal +' ' Text.Whitespace +'0708' Literal +' ' Text.Whitespace +'090a' Literal +'\n\t' Text.Whitespace +'0b0c' Literal +' ' Text.Whitespace +'0e0f' Literal +' ' Text.Whitespace +'1012' Literal +' ' Text.Whitespace +'1415' Literal +' ' Text.Whitespace +'1719' Literal +' ' Text.Whitespace +'1a1c' Literal +' ' Text.Whitespace +'1e20' Literal +' ' Text.Whitespace +'2225' Literal +'\n\t' Text.Whitespace +'2729' Literal +' ' Text.Whitespace +'2b2e' Literal +' ' Text.Whitespace +'3032' Literal +' ' Text.Whitespace +'3537' Literal +' ' Text.Whitespace +'3a3d' Literal +' ' Text.Whitespace +'3f42' Literal +' ' Text.Whitespace +'4547' Literal +' ' Text.Whitespace +'4a4d' Literal +'\n\t' Text.Whitespace +'5053' Literal +' ' Text.Whitespace +'5659' Literal +' ' Text.Whitespace +'5c5f' Literal +' ' Text.Whitespace +'6265' Literal +' ' Text.Whitespace +'686b' Literal +' ' Text.Whitespace +'6e71' Literal +' ' Text.Whitespace +'7477' Literal +' ' Text.Whitespace +'7a7d' Literal +'\n' Text.Whitespace |