From e37bf5ae110487457ef1ce010cbc4f2da07864ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carl-Henrik=20Sk=C3=A5rstedt?= Date: Sat, 28 Jan 2017 13:29:42 -0800 Subject: [PATCH] Visual Studio Code colorizing extension, Error includes line number of undefined label reference * PrintError has an optional argument for enclosing file * Visual Studio Code extension --- vscode/CHANGELOG.md | 2 + vscode/README.md | 18 +++ vscode/package.json | 42 +++++++ vscode/x65.configuration.json | 25 ++++ vscode/x65.png | Bin 0 -> 23706 bytes vscode/x65.tmLanguage | 229 ++++++++++++++++++++++++++++++++++ vscode/x65.tmTheme | 226 +++++++++++++++++++++++++++++++++ x65.cpp | 9 +- 8 files changed, 547 insertions(+), 4 deletions(-) create mode 100644 vscode/CHANGELOG.md create mode 100644 vscode/README.md create mode 100644 vscode/package.json create mode 100644 vscode/x65.configuration.json create mode 100644 vscode/x65.png create mode 100644 vscode/x65.tmLanguage create mode 100644 vscode/x65.tmTheme diff --git a/vscode/CHANGELOG.md b/vscode/CHANGELOG.md new file mode 100644 index 0000000..44e93a7 --- /dev/null +++ b/vscode/CHANGELOG.md @@ -0,0 +1,2 @@ +## 0.1.0 +* Bunched together a shabby working version of Visual Studio Code editing of 6502 intended for assembling with x65 diff --git a/vscode/README.md b/vscode/README.md new file mode 100644 index 0000000..933fd86 --- /dev/null +++ b/vscode/README.md @@ -0,0 +1,18 @@ +# x65 - Visual Studio Code Text Package + +[Visual Studio Code](http://code.visualstudio.com/) is a funny little simple text editor with surprising extensibility. This little editor has matured and it's worth exploring. + +As I don't like the marketplaceification of seemingly simple tools I'm not putting this on the visual studio coded marketplace, but if anyone wants to do that I don't mind. + +In order to "side load" this extension into visual studio code follow these steps + +1. Install Visual Studio Code unless already Installed +2. Go to the visual studio code extension folder + * Windows %USERPROFILE%\.vscode\extensions + * Mac ~/.vscode/extensions + * Linux ~/.vscode/extensions +3. Create a folder named x65 +4. Copy the contents of this folder +5. Start Visual Studio code, change your theme to x65 which is pretty much required to read x65 the "language" + +For more information about Visual Studio Code extensions: https://code.visualstudio.com/Docs/extensions/install-extension \ No newline at end of file diff --git a/vscode/package.json b/vscode/package.json new file mode 100644 index 0000000..1837dc6 --- /dev/null +++ b/vscode/package.json @@ -0,0 +1,42 @@ +{ + "name" : "x65", + "displayName" : "x65", + "description" : "x65 Assembler syntax", + "version" : "0.1.0", + "publisher" : "x65", + "icon": "x65.png", + "license" : "maybe", + "engines" : { + "vscode" : "^1.0.0" + }, + "categories" : [ + "Languages" + ], + "keywords" : [ + "x65", "6502", "6510", "65816" + ], + "contributes" : { + "languages" : [ + { + "id" : "x65", + "aliases" : ["6502"], + "extensions" : [ ".s", ".i" ], + "configuration" : "./x65.configuration.json" + } + ], + "grammars" : [ + { + "language" : "x65", + "scopeName" : "source.asm.6502.x65", + "path" : "./x65.tmLanguage" + } + ], + "themes" : [ + { + "label": "x65", + "uiTheme": "vs-dark", + "path": "./x65.tmTheme" + } + ] + } +} diff --git a/vscode/x65.configuration.json b/vscode/x65.configuration.json new file mode 100644 index 0000000..3ff5392 --- /dev/null +++ b/vscode/x65.configuration.json @@ -0,0 +1,25 @@ +{ + "comments": { + "lineComment": ";", + "blockComment": [ "/*", "*/" ] + }, + "brackets": [ + ["{", "}"], + ["[", "]"], + ["(", ")"] + ], + "autoClosingPairs": [ + ["{", "}"], + ["[", "]"], + ["(", ")"], + ["\"", "\""], + ["'", "'"] + ], + "surroundingPairs": [ + ["{", "}"], + ["[", "]"], + ["(", ")"], + ["\"", "\""], + ["'", "'"] + ] +} \ No newline at end of file diff --git a/vscode/x65.png b/vscode/x65.png new file mode 100644 index 0000000000000000000000000000000000000000..2cb8c978baa66724f6c2e5a33ff5014290babca6 GIT binary patch literal 23706 zcmeFY^;aCh@;;0cJR!j?2@u?23AR{p2<|NI?(QTw!7aGE>*54=*TsVS5^S-BFZX`# zukU~Go-;jNGks>xoT~2Xs;8cbQ2H)~gGq{sfPjD_BmGU~wZHsNdxQ3R_OMJVeC<#y zL={945b9#Fo{UgmuQ42@wOtSpaR2*vUg>* zH*@{S&C1ToWA>BN3;{upSmv9kny3C*CwhjSL;_3~*4H7>_c0Edvg!lvY_Tre>qNlt zf_B0-8=Vx_16gvNgD>!g}-O&WpOvuc-s$Rnn%e zGrBY(di(a`O44{Dc!>4m$E|~y{>b?D|4E)p68{_RxXS$Bvqpap{x>?g@G^vog7VZ6 zzua-^a6YtCbKY0g<*H-6rvs;__t!4&oasANRNxYW8bD7WkN)n&H z8ZrK-8rUQ$c)-M^1N);M)s{jwtOqI#%9F=|PQ}yqjcAkC?=O36V6bNA-`yJfHQacM zKnrjYKlomY@2O5#=pmw?+%uksk}F<|>$Z+O^N%&g;sVL0*V|#Hu%i0E7WOM!QkY2T zA|Pg*tWz)Yzse#aA|5GF@9_6Mk3;rWFRBBa5!Bn(1JhhB)-;iQZ-CF+(ARgZ1d_S(-G9)!>M88)fW`X;1F{ZJyA6 z%OR`OZ;uSTYwoi#jX6mlg*Z_CVx&Nd@OMj~faNCj^Y^D7F-7fqcD?SJbX!ed95M`} zDhMxh2;N>Wq1U}dcT(1^RhZGLALB_rcW2r2(UZDCT+()#z5$TC!4-zqMO?g}-evUJ zmC$I2GTWm@jC9%H?}bWqYVIBT$T+SjTzl#zH1tXE2@J2~!z=Y7rle6zKpyKHU?eJ! zsy+0gPmg-4BS1}qT1{omTFAn_T;KsTMG~quzmJac^gHkc8fo0yf-vGSU%q5Wh7 z@WdESMoPe60PAB2r1hE$_Ke^6`=8=9&_6=3BerSXy`ZWEUb&cEAuZWlT$Yp7k!vfS_Pkv)fwcV;1?`IAw z2CVb&uDQxl+UO-JDKs*Qc_b10b=xByu{TE9m3 zVz#qe3(0fjfHWXbYpv~Aw1)goi?na8T0Zd4qZ}}~p$7}Lu}x$T&sSV)`$^T_ z^nPmnH|o^dD(cjFeO{O|N%zT@w)57YK_>g!qsS9_;S*A<*w(>dlj<+9+KNfO)AD`H zePTxQGmpK7Ta4S+b!)A}=hJ=nOd0j_O~0hu`6o?*m$f2w&Ha;oE7a0 zpy0he*m`}h4}L#vm+wAwt;HbT=T5G=eLwo7Jf%T?=AC9vfD);pg#dW}GY12`k^%oJ% zWOe%hyoF#a?3{_4Qi@XA7dZW2wN;W*JEHF3-Q@1|d7z?PfH1b&?aK^DdRS2B6she} z*ObOky}k+`@iQt8FWl8;8r`=4_IgZ=Va{S09e+!ULa%x~36Lq)w_Kc$+L%tkiyw+PYPrJ*IwH6T#WJ1|5co2FT1uL&(yf)j`uDV zZ9B>H#%avvGY`L?HquRkp3~Gx_)2NVuV$_mH+`v@P~9nT*Wi0+S|F>a?>x^3PT9^) z_5ERWkNvR7V5aq6fcHBcIN_fr#2MY%Gz5Z*bS9hb$_fhPTgm=xH*ji`@ zP4~Nu5#74TkMp*I>Vo53n~G)VF{XQ)j_7^n#B8ksX}{O1VQufkd(?fneOAV!gUzc) zUKqZwLTNPY>PN0Ks?}o1YSIn?GkS#CFs|(UmV>oT{uZxp(XXDy8K>1f#c9q=N)x0N z^^@G;X0b=LlH=C?4R-FY^*v1AqV9bUZWNA(oYL9nU*(b6w4X@o*tegLGF8h>t2wSN z>}I|t_egFaUgJL~+x@JFXicP#hj-a=oyD^I;ENAs+dwDYUdltnVD7+Yn>v>7J5E^m0-Es6Ns}n9<% zL9rzG(rh!{d33z5N3`bH)KCLn<D6yLY#**sH7D6UX1 z8QjE^S=}wOoIi)?&ceaE0+&@j4%=+!@Sg!L8L7|h!Ja4(jVFiyv(zHNi>s5Z_AOqE z8DCIFzNTO8p-+p`KZCW^8R0epxB=L#)1b9(|G>WSANZuo^KcdOoc{Ozy5kMsQem$q zHEnh4v34p75o#*3KTQWt;?|El;h1rL)Rom+6J;&|@f=&XmluqG&6w6GE7#sU7mrv+ z-g00!d@>w->WM4b+=F#jP!Wtal(Idqt;AmWpv1oZsz{gTE?KvGOVPfs-vi&niGO!< zecvoVF-kMG{~;oEG9==VM>fivAr-2)ULH?mzsHUx65aN71^$io(b;GHbF!v^dLyBM z;|;h3l$C3J%b_WB5WZ$im8@$ke$?)qfwRGPD!ai~xaAkPyt6(`38hp{QfSds0`{Gz ziQWE0cbebJ_GGc%`$q?X3R>@zrve4OwD=2tDLO7@DN=@1#>_syIqZRz%Ux%iY`3Y6 za~p)GYI7ZEEdu)E6~c0mnl9Va~5;dv#*!}H*d>TH#|j>S-0+lX4tn&tjDg+KF5Aw3Iom%>+w8@nK;J;{>RtE zS(r}wph&9!U>#7A_xn!yqu!Fc;%63~@zijtp5_4UlAh~g(vpQKDI-p{pESQBJC@ll zpSBV+{qHYRICHlrj|f4_1(vJ&eh%M_E^_Kj@QoqA!5jxeBs)P2IXe{*^?4du%T&Sy zUx~h(Po|V-9JG11C!8g9U7tx2Nt_bHfe(7D&u`fptO32uH(wxBf29tu*pLNG7c1Bw z)#Td8V<%FB?(2niyw}xWn)fcIWWL?p-hk>P&Pu_-gxwzuuN!5R96+0bPbpv>XK~Z< zeHLu*{w{v2u0KbR3`;%~ANKc)RY5l(k_rSLFM3qI@jFx)FK?+GoKVdWq7;1 zi&?^Pa99U2cy;rCM=j1=2^wH+k$ml-vnS+gAT;;WOPmdT_}c)3L#M9-oc^j*e*5a5 z%rpzmYozu- zf(8^8jFD}XIWm%UnsfUgh#%x3_(#u-In6IlnJws1-)x;e*sx&Fi~3CrNV&$VdrVmI z&i~=Q;NjiyQZR;w8Y@FtVq~^mj(XNj$GvF=`KP|(9V&@em8?6G)c|(0zFlD~fjqRz zG?a)>F!NZ>9SOj*UUR&y`A5)KH?2#Bd}VP0nsguzHYlp$>yGJpG~n2OhFJ5$cq>5X zx&W45wX7AUUpLjRw_oa@gql2?mJT=r?Ro_Wt7MjFWldzH&NI?ftAVv*`*g=POM5+cju{?;~kMLz(W6)c@arE@WNpnzKk^R@)N!W4KRgu=N&cE!rfs&58<g#6 zlU}P{2CzE+=N5S>J%wL_<5Mvor;rhkO4B+OvlDS?B4{@>7LaU*jUS5tyss{KNO%n( zk0f>X7R#mV^U&_*T97?L3t7MvensSMH5$}=B!Py@V9U!%!6fT%I&=fwW}{@q9X zoPH~vHB5YgCBFkf_eyx8G6^a~<7LE7+e~c`Pt$h~fCZ5EEyi1{*v<3FzY0;d)cubU^{4cMJnTiTZa$NK?6lyuYnAW0GfaE!{vV3C3Jea=d7?%#uvAO%Tf z?aJx20DDFW9#U@EUvCOxpP@<44kYnrA4^IeB2{h@9+Bp4((Zj-F#DPbw|FecAWoDXvaZZwhR-qL>_6p8<5y-Pq&A2MSHv>wh(DdjcUZ zPvSke8}7@_XTh)e4l3Jxv*G=Plry@kLG>_{WfXJuedg zbFR4hiJ3yXhvVwji0by$C8p4v!*z@^V;95+jk9+vf5rd1Hv7x#(2bS)MwPV`(Io$* z;Erk=Z>8w2L01%)cD3*G$!rt2R2$=o3;fjid_G*TkC~ro+^YU_m1H6TZyXy2eduJW zf!d}lu{=Dd;<$3NTi-KgjU}Nr%&CvB>{wsj$_$;yN;=`S73Yh;raVcU6Fr^>>Sq1y zA?zz-_V_KXH1DmC#1Q9OB3J>^9jrt8Gdo^Tqnwp#g#ZPs(0Ij5o zZ*yKtx)x+i%}J!{1U;@?m>ZO52eTxQd`**%^zX%~&Mp>EC%1d_Bw8uHB#beOMz}0D zDOTUm6V{ds`}sw85|!-M7|a&fqO_VbdldN@I#LARQu?aF--5eMyU%kL zwK_Cs)DnVU)>Pc5n^GVmii#9m?}k7D?{|s8$hoJ*?=f#pPs+^<55sM$zHTL*X|zhM zzEO9}Fl=Y?3}YbNJgD{AQ1nMbox>izNN?yk&E0 zeTv#s@iA5B?vU^y3xKn@5ybPKTEQaf!QM>-*ADTS(U=c1OGmq9C-?C5|n8wAHD_@5R#T6)i`otHpR7xV|kb zI88XIY0o3JX+QYFPucntRBJH&-B1hA!`Ob%Rx>AS#mhqu`@}WanB^$*|c~bQ@e_Htzfe; z;TUHXn_sv2$(6jL-aR%V6U730VPz}cZjL&{H3>x6zNSL4)BJC&AYy>$w_ou1d$vT5 zllbMPhnKIh6cx{MD~bpysN*FpW6wuP@WyK@`@TDv{lXTny~N9sz35m;aB6k;Lxc@m z#{qxjdHdoMq>Z?P0~T7Jb9~@UC@mt6JDy5rowN9)E6aIQ;hR66T31YD@07}6uowd$ zvD3P+FzfbZzxQad`nS0@D5J}+C~TVqH5{rWdmLmrgU>27cFk|X)PWjEauyu&jXv6< zR5)q@yJ$AqBM!j$&4BY1m>f?g~CQ-v;JPuETQ8@w=oz1=WR&4AN+0x2MFpJ2#-qG~h zNww9pn_1U&lJHyffMddl#P9CU8&#waI+;&4N8`e>7PEN_9o>fl7;O&gqd{ya1|$F2 z8u28_gz*njL|9S~7(0sm;&H0(c^kX3F^`|5Pclxu%iLyLY9U`Eh`XFlhF(gy9{2nf zp;!>%WPV|1@f*e6en&cOfZryKWj33K)w95L64a9H26tXCWwU$QTNBs6h_2vfXR{SX z_^j=wD(}x!Gjs5h{k-cP$Y|YZHsQU-g7{pMG?Lb})w@lb-vKNbW}6rtody_Ye7*9r zFO=O?=>$Pt(f4osba=k;$uC39kWo_Y8 zCiC^#KHDZ9-dNo)#kQ}jUwDt+^6U9dEo&&@#z~;)L0X^#Bv?+pFDEy{2L^Q&DOiL2Ldlf_~H5?&|hTdnqcE4%RM(XYy`uYO{{< zJ8QE0KKt!+P93FGjv7{g%lD$2Hr;k8V2x{Ktu-s4ze_a1a^6o@>&+N@YYo9sd$3Y?^DrZot}k8rdt>E=!ful)@P-VDL+{T_-!y` zW!$K`M_PUt&D6@e*Ir%GaMpJ-78=w# z0mZQGzv8h*Ub*4D>dv~I-fEP7sQ=P#h7EJie~&RH~|llD_jY>OnP z?vmU)N5W~QNLKcvIzOq^g)`v4uug_=H=O6jnMMTmDc{%NnOa&5Y8a`Hl&zkW3Lb+0?fHmxLAg7CfEV8Ul-2mO>D|5Ht<2AUBL-}NH!PCiZvZINQ)LdeZWWR~=u#5^R<%7J@r*0a68%2;UWb_@N){QL07 zLooNn8y5Z=*|vhLsjqiiKmrcJ*V;&3(sc#J6i(dcnBP&Hd9TUwenf{ZH+&uh`N) z`tmopZjZ`DO2Uq@PjSYijqiZnwuzE^u?`QpSLoMW}T9 ze(oJJ^JWRwCgN$ylgEb3PblZjt~Q%|%iRP_1I+hglbrDgSs3;GU7?lLPk#Thwpr=S z{w=MXKKnk1Q-Sfo&RzYAw|(`=t~&3BReDx+nQN+Cy(#CkQb*syu7ewomosNtU(zp& z%EHxa{^{pGN6-@o2B~yD6*igX`UUhms`a~J{SR7#PqM7Tk2HNU$EwoncS`T!8isHUT7OB1q50o{bh{yY+idhG89##l zC*Jqo%s^IP%;wd`kXZTJO|`TyPC&)@iZPJ&IrKY1d*O<>ejRG%H+DuR(pcTNk472j z5bIwa`mQ@5XN|+gDqbN;fyoH!EG2U^EY#(Hcxn?SW_Yf=`w0aR_WML`PCbwIU6VPp zp35BLSu4A(VL2uXsQ7bEgkb(jQ9ilQh2c!P`G!k)b!Wm)Y9ga&%tqp0EM}0rltBks2_losHbi(w0 zH`Q-fU}npUO#%hFRzSrhv-Cfga`mf{$W{;l}CT{e;S;1nq zY|ZM6iAl;O*i@%pN|2mcu6>&5ADVp)pObVb@Kcb2BbjYimL@W= z{Azbb&nv9wLE)IFea7Jq3%Gv}m(KMImT^SO|NQ+)3$FR}_0mX7!Aba*y*Y8>olkd* z*48(&6^Vz9r!(<7jQRQXZHLEiB_^Z>%QR-ONuXskqJEP_>VJPD*+7^EG%Ft}ZJKuN znCC5G&P&<|JysB8CaCD6e%>sy>*&bsl9ZRR(eyTHSo+{UIy6U}#eLO9tk6nvWoi!DSFRBNoP(R+aals4qC0!qFyBQT%er*f* z(|gQQRkkT7-=#RVmO2#!MVzTp=9-R@6Ccf(y1^7Rp*T$a?}#TMM%XiW@3TCb^xX|? z*#s)!fvoy$XJMsm<@>{DyKCaXeZe8s=G9eE`vEDor|2T-;PHl4eiMI#34ZS*U3jL? z*FSZpaJTr$N;=7@dGGCZ`+@1X!tBa-yapj6z1}bK?y-K&g~2pD4Ln27yn#1!RyhL( zOKhCA+1~5HiaZ#f;26t!30-7FR3#@s)h$codO?2%Nbb;GC5T3Bv^zGpZzq;nJam@ITIX`+F^Q~! zicPZo36eyCUzhXQefZ&LNsYHAMoG+Vk9|9 z?DZ?@ll%gs=evH56%ojjMi=(4LSm*xfFvIYpII&q#er*2P%m1ujuCsTvg#-#FoXe% zRsg`v-Tby7vQe`|)VeFHGBF-x0E7xXc_8bQxEg1~sMSloA19mgRhCpj1F*n9^Y!%R zBT8nFd^{@eD0Jh@osaX_;K7`I5Y_%FvJus}^YU1is|erv9XvJi(&x)x62g!R2 zv(Is9howgoJ~SXRqk7#t)ErUs*M;3Tkki+=3#@g8gmsQtM z8tYAhS_~z&?ek}@HkzKc_0*T@o0IIPZtols`ThCwJ_+=FmA*YNh#yM5{KGW-?%~+7 z7rjd&!wATLg$)V+eu!7Rx-XD=F^+GRN{_cf{Miv8L)zs3&SD~#LZ&bU&xOaI9&giQ zk5P;eY%|Jb_O`H2gp}2SERCY+ia6awWH(N5x&btb7lNYc=qNBcX_YQMp}7|spfI&X z6RXRAr&JSYxIoYRu{wpJhxqSzqk3r9r3ZNQ)kw~EMJ1^2Lp|wnT-E507$+-rchPzr zlQy5L@`@|m&B*VEk4fYfdMymk3~L-bD?HY}!6@t;0^kx$s(zw&h^?eY$uc$H<@<=Q zg*40SugXtE`qX(hoK&mTTGa7O`1}gpr%=cjid5Lr4wJn1sx52(l_$9XW>qso`DZ_B z20e*KwsnYaN8bW*1IR;E+>jn>C4cQis_;lv181euFZ_sJeu>r|llx;~jb0Dk7QWlV zwQ9Zj%^68J0vfOH9rE@Nt>-kMbSk0d$6RFdWu+U9ovYPHFi6*Yu36io$u9D1?zgzL z_E6Gbbq5Izj`H|Quu5jN%=;rdqoeZ@lL3eZY~OV2C%*3jvkm0|BF;mt4=6OIU;42F z-$|0=jDcwCP%k*PC+O^v^|FNeqW)9Ly9=VRhY_UopLKCs82&1xb24$AmW*M6CGIu; z^U8HaQI$F|{HCC=J=mqcJNS2b)eDe63{;3tabL<#u^7Zsp(|*0)-A52Fd4t|8{p=h z+yeP2J{k_N=L<}GZrsdgJ5{x{q!Cx6ge6-PNLa%!@uH_kE-Jo1zj?_?RL+-tz`tsafHIN26oWj&Q9Y0OwblG{S< zed@{-oD`{3OMNhOKL-G^ zFW@B{wyE;(?>s$}qAH36!Q9x8;zqW+C56I;#f+hth`m{L6piw({@y-RIEuyAUF-?; zJk+IEwwW$OKbN|x?=yI%%(?-N8G2-1gnk#t}oS#Wimc(MO(CxdO z?JrLz{-ELq(MK^?iGV=R!yZb{2p!3A5#cb-PX-HL)%oEFwUVvzudTE=H(vy09<@YiI_3w;xZRCHp1&r>ic0R z3Zq4|2#r#?Kpl`y8n5d9mvmAVHtIR<#YiImzMzT2qGRNK9a#tzg`#n_X*?fW7GIVI zO9_e>x*Hv*O&wo8HY|z5D*@n@lg@YeRaXTIr4Yvm{w4==W3Fj?nc3rKIw?K7sx?d! zbFnu^Hw{2b^2J9_tA+9ot1N(Q#(_<;jyx`!J<=R5a#_F zD{9ul*B^CrxeVs{MQgXam+Yh;(-HFMNsnLoBfkYDx6)N%zgnovko`V{L50Z{nx3Oy za-N6q(qaNJr8kY~l(MjBoek!@k1Ug(?HP+>(Ch!ur#}unEAg(FM0K%Gv*lJHwVf%~ zVRikpTPC0C|q+SfuzoiycLRtuOU%IbuAug`r1 zLg6}6m3gd^-9=Cq^X3SgG^?OyZzZduJD#pej*^1=#g}oKcd7qn6-d`o=L|__D4=`R z-V@DzLRK&h$4hwzU5EDm*??{YLWIM52q(xpq# zKqKr4FOnp1M<=7ZPc*T>j~|cWj3v{4j-~AWk7fw&zDFR=?XqY*pJJ92VOCnG;WIZ+ z>@aTRb<`RUd&!#ZJkaG&!732adTwZYJZ?DW@%X{te&H%bNRxy;W`LXYYE{1me`c&S zvaA`R$Ivca{4ixfrS|P*3XapEC#P>7*lgi4qwgUCBH+_SNlAaJw!hq{38;0?bKU?n zkFo=vOwAT1-yUME=&4)?L%N{a2fZWo1PzoJXm)}c z*g`3~hf>ZC&(bZv+Ov3Bk)lC9&QZ<=VaF?uvAsdfDrjiLMZiyZmzTag2XRappITzL zb^+f+{xr`X`G95`*Q+niK+a_Ka|9g|k!-bG5y6{h)6l5mvv^&uN4phyFi-Mj+J@nD zq5U%lMR;D>2OMXnMJLF8%q+I^$qMQ@J+TPVd+pqplPzMtW>tUW-4-lV zTX!k#L%~IVRrIM>S{`FsvElEMPn*S_%knYFDr%N@*%y&IwTIwd9yIu2Y7sJav|wBVN35VSL;}xsR$;B5wLBwm z$|N_YD6KhtGrWWI5QVtaG%nW8udRX=WBQ+KA$8+CvX!0U%^Bs9u9q)9=*XhyQQq>h zYZ#5d^b(e_cvS2vA6EA%%PvT@09mYTs;2*Gm@T0On6FYg_Z}We&FZ(*F@|=Y*kwE&P43QVK~nY3Mfj1!AXr zPZh~Bmd8#?hWVQ$P`}9<;mf$@?;adRlYoUCn&c`zJjNBbrMSfW2-ZM#i$TYKCQ=iG6%0b`AoCUoc34Hkx$NZ@5nK@X!hLfMXi+5A^6a<)J5Nb z-uFbZTitxRzKbonxolox2Hdc`EU7e;dy>anNjL{N*%1~u;sU&7{$%oIUE|m&VQ?9q zuDf~_7XHWlVfxEvmmSly_#+)|7o_>m^TDRL$Bt(~XHf_=nh*w+fkzj=$+}>(hcA1` zDuWmTDKQ$XrB4+$|19Rit^CL=FyRQko6n|isej>NX5brU&|EOY`Cy^wKU?Ry$MQswW$Ntw+?d(o+8Gpp%sn#4Yr0nHf|#6AaCYEzSwgVjMFM5i06@PWT^D zIDe&Ww4}q+FchWsI=?m>m)rR>M}LlrO;eDe9G3WjpltB2CppwZh&c#}C+e^m+#b% zVY1h=WZ#6s$*uAr<#i~_5Zab@d@!Di7IA|GbaATGzVK=JUh92bG+VsP@GVg~#&??# z=1QBJQ}}LmCJ;#<~wK=`fWYQIDSlRhD zYh`4h$3YXj7)aOaQ4_puYxTlaw`bB)dsWwrZf)k!gn}0F;Of-RphVoUys$hy4p?3=5Djo-ZfC{pZL{ul)x!w7Zw;ZM8X z4-oo(du#Nkr@V|qPkNv`EA&8(NG~p%^V(CPq~1(KlwdpE|j6f zsB7&Z)!-dj;*|_#Ss~EfU;7K(5NAN)IV^G(n2VU``k7ANY5$cdk@Yk}*)HG~Rk) zQYP`^kH$3rWA@YxPB-%~tvA6aP~MrgDymNN;!)cS2cVhFslJvMV;G0aX?FguT9eaT zD$PiLGe46n>GAT*?ad4MauNAU_4g)oX}}P9MiwtY<~spNrq!guVM5{9-EWuut0-)m z`Z8O|r#Xl4$kGYJh{KLT-X@_byx!Dq`OL-9t^OOWQ_Cb#jis`U12@=q|IHyOjXOviLIJ0k(O6bANvdS2yi{$3zps zvMCt@ChnYrbxRfF(P>;M=Lt4!0#&sj z7)%ZsCKqB?TVeWOZ!uC$jKGe$6#J8vJB~AQbNx)#;#7IL{1X|r5s2fkIzG2LdD6O- z-p+)FxS}xa#LNisD!e#siHVF5i|}SmnfdTX^~lz+1WQB3app;7qucnQ?EVi~df(aX z`gH95(_hz3UVUZWad9!=>-BQ1Zj*?|A<<9|wy|GpE75D)TC9!&$l=DA#77|doKv%QO5)Aqk^ z9b|yIM+R4AL>qh>OPsbD@ zPptl79Z&N12P&EX&DciBLr|U8f5@cmy9y{+rU{b&Lbz1Izbav0h$_d?=$cl_p$LfEj)FJ6CB@rtyJ?%0To{bH=!s zQFk?g1n@Quoo1Z%34s+|hO{w$I(OsuYo~rEmqvpY+bTGxn}+p{r5KFsNeyN&9-B z>+o1nYoBQ49iAx?cKcuS=U|EZYlgG5lbb6M#f62(K(o@u+ZBF{?S6F5J?DJOgy$=G z{HYHjk($1$6A7v_v%Tmxe1J`loQ%-#6d>=vy?FE)Zef3hMA#s#&P=vTk_29a*ysMO z-|%iub%FHG_M13EeCQ*}!Oeji`;)CW>m@A&4}5KK8L_T|X8LD}7HO+EU1dTj^5{Wx z1o)eM7DBsTZ68{T(we#RW25wHoAq^>AoUQ@zT!YRhgVmUE}?xNSbZ-g0kXb0o2UbD z>6}lVS6DT4$(z~vR-g4acm20r_E#c={*h&j*A5X_Blz1jDaXn0hA63dB$EfA4`gnU zqptMhZP$fV!8;5-$BK-9np^w?j-j+|``i*}(KKOaMh9~F=d|u7mRce?J>?u_+me2; zI}^l=Lxa;^)?&SExkqo~)%(6`GvtK}THTU4Fy)CuejMN=Y3Epll+T>@Nk`@@aAE2sb8$nOS6V`b2hL|H?HQw<(_dW5O zrd5}79q%aId7T>_%^{Dtn>H)J1-)zh<(PM;B^%z+V2>hROXVcRg1j0F^fzHPgTe`4 zf870(kN6Cg(F-0=LyZ8Pbh%JY7c|#!*y>Wu5Nmpo?r5rLCH1r9b8vqAP{JXmZ9>H; z%$^^3ds95m7Ie;#{Ntx!e&Un{MR*Nx5XA7X{mz;z%|7{8t18TQvvs~(%?$4WEy zL$1{YoifkxScCFDh!$`pps<;3x_0p1qu;n(n<+X_JXKf(G=7+vIf2PO@mfW9O$o)k zJ1&l$pg4KX{10z#pWthB(5?~{GsoraW0VuUWsEX@i;UbQ>WytZEH5DsgH)ri@q>7d ziHW0?;3PI8Xfm=Vb{_trc7a_Fkv*$ofsB!UsU!ai>{{lh7)sQAt6mQv)N~fz|IH%MO86msb5`;p%o!m= z85=N6A!+ zgneqt1llV-3olYRI`qx&$h~_IiTtJfifJY3p_8N$vd3P^==DfHzS#$o2CLS+`ub|= z@`Zf)&lLq4$Exsz`ENEEvkT_a`Ww2sJN%xvQ7utoqe1F(YNn@jfI>3cwvR2EM0@V6 z61{RW=PFx10E>`3)RRb{;SRt7otTIDdMb1j%w8ScwW1u9#Y&(1t*iPw!c}w^EaTZt zV-%zu#8H)NSA0a*BUv@Yf(PGBty7>QU?IWl^e~c6oXJ zqP9LN=`*AEA9pcDvvIST8RTLzSFvSjCGwe6XWw@E9PdQGtclpn z+n~&Cf;s;h#V@%nqG2JxA?R>FdRA2tP4>^XaNofZHQmN6Aem7i9fkHA9j`)_2!=z%6JY;93?}&B)=ZfmjrlH z?Y2zN;t!h*MSo_zy%815HJ_V9#x!M&0~?O4%a?&_5!yTQiMnJBO75Z8RmTS__rqwG z(Ot}6Pm}Nn7LZox8@pIGq%ba;h3@R!wxjzvyl`5^*79Cpd?0*8ie>4pci>spTay4Pb!0B-6z ziY*V&!cg>s<{)9U@deUhWLe^eBte_hrT5e3A+rzPa^^ksWASKvgp+W?5E}>7$7%l( zXAo0{(|ZghgNJnZvbFePHMLw8??`H}+~car5CaEm(=vL_2cu|Fv_MUr~4M9>67)5Cm?J z25F=l!6Btfx?yOE0i`>Y7zSi0>Fyea4gqOIU}zaa6bXk0hoRxj{XFOW`3KJHz1Lp9 z_1iD@-q-qGpRv`39r{rmKPU!=C%*Oa^~I(pYa2Yg2!xI~`0?kLeDfTapUL)qy3Dy- zkF`WxhK$QU@}eBhiy=ytDt|(F%33dF%XB*pQ=1I@D)yc}>;}0JBh6pa6cZ@DaFm(w ze^7pJLr@W3#G_Piw4#^mcJ0xa_V5fe=RKWsI*reb|Hg`0jx9A zZ!lc9T|^cZph2Zaym3r6d_EiEBQeXccl4#htaHiRmDLAt=b*qHd~#3On<<7i{lFG> zLQA;sk7*a_io8HiAUFo~5EEFFH+T>YU=LoZsmq`JlO%W~ux)cNp7%JIE9Bdh6+stU z?1FF|ZR!ej*kQ{l8fj1V$5T_y{6u zt~%E>X~gMR&yHRZ8b{U3RyujFESm%yc(uBFgJc;!*G13X7nmPQZu(qw+ptUxEipJm}sv-Kq0t5BWZxuRS&xW4e z*Um3!c(?Ku=`w%ZG&jF8mKymKJSy9uS8upK_8VO9E6eW3Y`D@)LhP6MEko2jjADGt zq%i#V#mE5ra)9;+KlSUGD7EZ@|A6ydU3@4IqjBXE*3J&ReLoLC%cB>b74i%n_7SYNeVi!v z6AXn=y2^E5GQ@o_g#!pc+4_87Rx?8SU)hwEZbZo{)r_{PG9z);#67wa2n$EKUJwZC7^ z{%(!?7=?Q0^u3JMVb`H|m93scHmwHCgfw)^pXSsLSV;!~%zJqN_38C9_Ue{kVVDLzbMuMgl zU|ric|Db)C{eJiWoX9gaDm4aWY`Yc)Z4+;MGiCa|T5v<2d64pf*HeZ-9lsKmq9D;r zzbf3v(`4``MSxG2NvZxojyWtc-M#o9bS{r$v8D z1h;iry85qViI-35gj=%T#U}$TxCfG(OmC7MW}E)Jr0_9QT`$^mpE&^ zXBX)GSaMZ_Q2RSOHmQ@)1k8M#LWM-nNq*fcyCH|P%Du&#Wu}#3DmN_yELMz!(xApN znt2Gu=sZkUIsNREmmF@GzqpB+q%7dQ)QXn`;(0ulbuYps?=^HBc0F(CjJ@2k%14KR zl8*xV`Qgg%cag&7y1bU8fE7(ajrBDnNZYEZ}s-8o#L;f;rZ*u(9#AxI>CXpgbf5X`eX0i#BtOkxii z&Kv$&>3I+soafA@IM60-qOuRB9xSPADg?&SUTdUvzyo{|;e}?ADUR~};Ac-t-#c>% zH*>fN+e7Hm9Ko*&54z(O*^UfJDYhS%Pe6$L`|O$7~^gETM_} z36nP4x3^hL`WWRkFJu#56OUu{AFUUSP&41CDSqJxEm38T_z*9Ke`E^(spGI$yxe^E zImbri%XC8ciUnKy$%5%CSZxmL$FNL|yzT7Qy-6*JrVh@~XVA$7B<(uQ))(|Mv#`#I zfZ*e7N4FobJrdr0Yr&RiN(TQBhKdJ?kRzOgHK4Qp({!zHM9HH*yPl>mY>WCY`JA}i z>#L6;g7d%=vV`BM!C>2BzI};W`EsH4Vm{Duo0?u94|{IGgEq?1fz(0Wr3~*4ndq_t zeE_hReQn8 z;P_^{&Y}+X9fa z+>kDaf}GeRE-{czJB0d@#;2eu3cwCari-qnD$?9<8BQ&X_%r`vmaAW&Q8GKZh3J@n z-4uHn+cHm;bDi@?ia9af$rdEytiZ@5Y)#hetcv-Z9Q5S==KY~l2s_)S3?7HRtS?`> z$_ujaJu}ok+3C{;K1Dl1`h}{?KOfQ;B$^AlIWTmUR_yv4FaI9pZiAtd7|l{qwEG1~p;b zpdA_U8@Ah>Qzo#5Ab_72sVD!vJvvaN%g`nn_jx(jUSEQTIrcANG59S*6EpNXH7bPo zKOl?9V$ets#9#Q#j@>~LMpA`)w-R_sZ}waz;#n${Y6z)7c&R%J^Cmc*aA zbRa+l$t@^GAs&C9hUn66lsp>hTKFe%X7|v7*K}N~UmYK^in}uHS;$PjS7S3?l{fmP z4rCU`jP!sKCF5<{MZd%WS{mE?CkyOkp>PcbX@61L%xrr(<3@DGdkl*rM7>IV@VlA)a{^0vPjbt}+ z_bcg#^M{%*(IC%=?idT~y#dr8moH>EOdS@-#bFkwxw;hc}sp>L-YFy#1*jbdwyPR0ICE;#H zja4ANYo=T|o#$Ip*q(13D^@PCKJ>~;PW|q2A>cvx&uWneeFcwZc{2*gSXDemS%V`3 zO`hSUub{xsgzHW@Pjc4{670u*eJ$6`Hn2R?Msw)zNAUSj18-gbp(27T`>Qo+E-w`= z`-seal~TS&vIBjxH2?{R@={h%F8NUaBHKU2wG+W2@0AH0>Em2qewoT!*ihH*Zc)G1 zana=;om(CZ$rnuAkJQOhWvgnA5{>+hBm4N3u8z60az(p=`lby9(~Dg+{}2X_0*n2S=u9$&$qHA`N1oy=vK-;43OKe*kCT z3B^p>I-b5n0-f4wZjiFR4yn! zIp~gaQ09K$(UNuQKfEzIWzSy-wQKJCKSL-6)o}y%m#E>-qq%wvB(>c#^d*gU7@^*q zi=7*Jdo?e)+dEg8zX`<7s|<)P7B$TKiU>!lSKCi;F5+MNFvEdu*$hb9~v16u)XmF{{WSlQR{3{no7k>OImp?1(pnk8Fwme0hj>61#?rnxNe zostG>oJ9&xsp2oOd6E+#G-eK=kx7)hr^#a{_A$7Ng3WlFu1;AfvO?=RZ3hCq=NS`S zL=IK1(M@jvL86mm1A5H^;duK}dt1~?!Dzh}k1XB&qVeQ34wS>_d@?a1LRZCos=lZ7 z@60gzb(l?@y51tNlsjChL>&Fz2r*SwcHWQaN~}g-YQjYh%$t9j&pZ1PyaSZqnxpYC z3@;=rDt86?l-He<$>(i>r@#32fk@+o!aV5cL&6E&N3^AO{4uS+OT1ci8S}+8ENSF1 z$8xaIxt%|S?r$Om%z$zOrS#h3{t{;l4}Y$sAHsLOTlKZm+J8Hu{x5~F({+>=2QP#; zK^^6x`0m4|;Kx)W;cQ>c+c-RRKDek{&OdlE9d{K^bSl$$@EDJZRJd`H)Z{xjGp6Bm}fJ(@#Bq2AUu&d`WiPy6X@2 zA|oD^GvDcoG@T`LAn1|5>}>mp^TpX8K#Nczr}2sYn%dx7IWp-W|lbmGD?) zUE+5N;ZmW1vof3|Msx(1y`PS~p+qaMnC7f`mqzhgk~{1RCBW{vzKP^YbNwW^f5+ZZ zYw6(%iSa&$caXMkU!$TqkgN!aE2OCZ{{uJS=omUh(pCj!OWxHV_=~ zn{}*afIF)OC2edW_BT_&>YEjv9^(EFA3!CgvEJ0td{$|LxL^lw)s317x);Ov;1~)k zS~iYI2cZp5gCrB%ClBq7{${eDZ4q};!dUBfmqup^8yH7`zZML9!uQ9P|D*v=x{F8l z8erStWWltCj2XW}#y}mVhDV{_4Tj!4=hYS2_fun&-g>}Ce&JBhN46fD!Or4(t$sCP z&b0W?1e>iK(TX@czhXz+$lbzV#u_$uS^%9MGhtjY1HLq-{C2h{_kF+bu}_>|+uO8G z<@g5OU}Lt0npJ>no2DpZFFgnDZ)srPZ?LneKA{1b;o)p@nAIh7+(Hv$!>=Pqy?=M8m82lvJ2udO$Bc$gE$J29ezUhp z_~sFv2iuZVqx8NIj zu;9B{1x6daA9|eRwCq))gP1jm%FWA6Ux1`NLQ_`nO^_i#Q4#=}FT8PrTv(RKdn6X5 z@MZD#AFfhXwi`d$Yu5(+W}V5W3!R=6un6I(D+WLWGo$J0UrIhYw z<`8J|q7;kIXxqsLl|`H3O4|b!T;4+!Dftoeub<}=Hm#~|BGV~y!IvX^Vm$T_k?2Ia z(m&RzHpo~%$Hw2Zsr@G*lqqoWS)tleL-Q{6pMg$d#o0uATcq4?KD9NLrBdN)oz?j8 z$5*pE%^O_&gX$MpCsD-V~Y7xNL}|f@xlS^23`SjJc=4Ry$??I^fl? zN4y+AY+_OMKy8MAsi|MGp!xhyPCdkTMVS#!_0(4by@h|U@@EBvquJE9AB;v zjyyG;wC4@>?myO+N}c2dc}vc@8LrTO-!c9ITWDX9q(~IH>N$Vm6s{uUb2@-9C-VSx z*Kt>iW73A0a6ls202`{rtA;L*>Gz)2giFc=LyQe%Em^b-iRbI`D2|s%4Lal$Yd_Rec$`6(0C1I#y zDkF2BoA*~Bt(y3%AikSJcv&!fPklP>CHgHWUvBAZ767?&>+tJ4yQOz``aw@`EXyM@KIO#fQ3e)>xjfZEnBUiTpVDzEm$s4S4pZ4;)59AlxDjwJwIwbh#yu zuRXnPrepA`qr&`Bk^14MVGo6rRS$tq0(Bt%3aD}XIUUK$iJJ@;Tj7PlX=%e}C9<{T z*i)oIdcz*}$S0jCV!~t7FO`4sKTQ<*P|{P#-Q__gSy8m~60-W4)Z)vg-CXNwcF5*p zG_`Q|CT74y8cs>*|D+BY8EGqb?AN#J-d%FRO*gYz4KQ_>8yxkpA05B<&0Z2@<;~*4p9@vWjCtfgT``=w?{+pV z<+<=h%Jbd#qcyX+(PT&SocX$+ZK8(sJ8RQjG!sQj zGK9v;fBUIs(8%)@ncBzO<2HHBBJpc}qX8jKgj5Gah1#YWDvG)11Q^;WYHtYfSd~2S zmDd@-8lWVxvlc{~^8tQ7B^=?DPlwe1-dHwN-azqB4W+Ekt#Gr4-WPVamU4KTdXVYZHWV1tQvApW6z#&vj{aj3H z@pKGpg89Yx1z4-0j62zE{U$#=P4}aNLMfiRuS}uT(Fe$a$WCN>Gj1-M*?9k^j#Op_WMDmKO zlAG|sCHTo6OVG3mdgTsX*%2%is#^e)E)21I_QB z#@PN+NmZ!IES+p;zpBx9&lur}H2G}5M9Kd=A4;1v>~7DAMA+gKKFjw&)t%{hhm=A{ z9hq4NW%zQg_RI)_u%2k%I{{9P0Ec^<#ci-CuFc*~vqkKs^R*!B&!>r(qeJWFrp%YU z1JZLzb;CmT{j=}B>kFE05#!Q5Kkyrlp6b@6x;Rs^Y`L&}e$ws{pEbc;>)Kf;DnclO zbLm`Ce28h5kr+<@2l!kQn-`s;*Q<2+E&9fJLJOTw=>hJj4rym400kJ}Un zzLkbiWMOvYrYapOKFo53XVJkD9;b1DzG0)HfN5VoRHUeycY75ircAsQS5LhBo3+_agBk z?V5hI5xmT+Kqj-~D;>m}hO?L$i?y<;_CQj=Lrd! zQ(BsaAB2;(eSvQJZJ9<3CDndj?dWG2pt8Yq_R@Q0o#Wu(@IGOeliR);Q_tgIZl-d5DrT#xjZZEckp?kb=8?qo>bAbY^BmO``MfX*M5-|FI0L}>}=>Px# literal 0 HcmV?d00001 diff --git a/vscode/x65.tmLanguage b/vscode/x65.tmLanguage new file mode 100644 index 0000000..80b8571 --- /dev/null +++ b/vscode/x65.tmLanguage @@ -0,0 +1,229 @@ + + + + + fileTypes + + s + i + + name + x65 + patterns + + + include + #comments + + + include + #constants + + + include + #control + + + include + #opcodes + + + include + #quotes + + + include + #storage + + + include + #operators + + + include + #labels + + + repository + + control + + patterns + + + match + (?i)((^|\s+)(CPU|PROCESSOR|PC|ORG|LOAD|EXPORT|SECTION|SEG|SEGMENT|MERGE|LINK|INCOBJ|ALIGN|MACRO|MAC|EVAL|PRINT|ECHO|BYTE|BYTES|WORD|WORDS|LONG|DC|DV|TEXT|INCLUDE|INCBIN|IMPORT|CONST|LABEL|STRING|UNDEF|INCSYM|LABPOOL|POOL|IF|IFDEF|ELSE|ELIF|ENDIF|STRUCT|ENUM|REPT|REPEAT|INCDIR|A16|A8|XY16|XY8|I16|I8|DUMMY|DUMMY_END|DS|ABORT|ERR)|\s+ert)\b + name + directive + + + + opcodes + + patterns + + + match + \b(adc|and|asl|bit|clc|cld|cli|clv|cmp|cpx|cpy|dec|dex|dey|eor|inc|inx|iny|lda|ldx|ldy|lsr|nop|ora|pha|php|pla|plp|rol|ror|sbc|sec|sed|sei|sta|stx|sty|tax|txa|tay|tya|tsx|txs|ADC|AND|ASL|BIT|CLC|CLD|CLI|CLV|CMP|CPX|CPY|DEC|DEX|DEY|EOR|INC|INX|INY|LDA|LDX|LDY|LSR|NOP|ORA|PHA|PHP|PLA|PLP|ROL|ROR|SBC|SEC|SED|SEI|STA|STX|STY|TAX|TXA|TAY|TYA|TSX|TXS)\b + name + keyword.other.opcode + + + match + \b(bcc|bcs|beq|bmi|bne|bpl|brk|bvc|bvs|jmp|jsr|rti|rts|BCC|BCS|BEQ|BMI|BNE|BPL|BRK|BVC|BVS|JMP|JSR|RTI|RTS)\b + name + keyword.pc + + + match + (?i)(\s+|(?<=:))(aso|rln|lse|rrd|sax|lax|dcp|isb|anc|alr|arr|ane|anx|sbx|las|sha|shs|shx|shy|npo|cim|dop|top)(?=\s+|[:$#(]) + name + keyword.other.opcode.6502.illegal + + + + comments + + patterns + + + begin + /\* + end + \*/ + name + comment.block + + + match + //.* + name + comment.line.double-slash + + + match + ;.* + name + comment.line.semicolon + + + match + ^\S*\s*(\*.*) + captures + + 1 + + name + comment.line.asterisk + + + + + + quotes + + patterns + + + begin + ' + end + ' + name + string.quoted.single + + + begin + " + end + " + name + string.quoted.double + + + + constants + + patterns + + + match + (?i)(?<=,)\s*[xy]\b(?!.*\.reg) + name + constant.language.registers + + + match + \b[0-9]+\b + name + constant.numeric.decimal + + + match + (?i)\$\b\h+\b|\b0x\h+\b + name + constant.numeric.hexadecimal + + + match + %\b[0-1]+\b + name + constant.numeric.binary + + + + storage + + patterns + + + match + (?i)(^|\s+)align\b + name + storage.modifier + + + + labels + + patterns + + + match + (?i)(^|\s+)[\!\.][a-zA-Z0-9_]+\b + name + label.local + + + match + (?i)(^|\s+)[!\!\.][a-zA-Z0-9_]+\b + name + label.global + + + match + (?i)[\!\%]\b + name + label.scope + + + + operators + + patterns + + + match + (?i)[+\-*/%!|^=~\:&<>] + name + constant.language + + + + + scopeName + source.asm.6502.x65 + uuid + 3a93182b-9647-4133-bead-cd118e3ed088 + + diff --git a/vscode/x65.tmTheme b/vscode/x65.tmTheme new file mode 100644 index 0000000..c01c1f8 --- /dev/null +++ b/vscode/x65.tmTheme @@ -0,0 +1,226 @@ + + + + + name + x65 + settings + + + settings + + background + #000048 + caret + #ffffff + foreground + #eeee88 + invisibles + #3B3A32 + lineHighlight + #40406060 + selection + #0088ff + + + + name + Comment + scope + comment + settings + + foreground + #cc44cc + + + + name + String + scope + string + settings + + foreground + #00cc55 + + + + name + Number + scope + constant.numeric + settings + + foreground + #77e0c0 + + + + name + Directive + scope + directive + settings + + foreground + #40b0ff + + + + name + Built-in constant + scope + constant.language + settings + + foreground + #c090ff + + + + name + User-defined constant + scope + constant.character, constant.other + settings + + foreground + #c0a040 + + + + name + Variable + scope + variable + settings + + foreground + #a9fdac + + + + name + Keyword + scope + keyword + settings + + foreground + #ff7979 + + + + name + Storage + scope + storage + settings + + fontStyle + + foreground + #dede79 + + + + name + LocalLabel + scope + label.local + settings + + fontStyle + + foreground + #a0c0ff + + + + name + GlobalLabel + scope + label.global + settings + + fontStyle + + foreground + #80ffa0 + + + + name + ScopeLabel + scope + label.scope + settings + + fontStyle + + foreground + #ff80a0 + + + + name + Function name + scope + entity.name.function + settings + + fontStyle + + foreground + #8cdaff + + + + name + Tag name + scope + entity.name.tag + settings + + fontStyle + + foreground + #88ddbb + + + + name + Library constant + scope + support.constant + settings + + fontStyle + + foreground + #ecfdb9 + + + + name + Invalid + scope + invalid + settings + + background + #f92649 + fontStyle + + foreground + #F8F8F0 + + + + uuid + 38b4e4f7-c037-42d5-8ccc-eda7c052d512 + colorSpaceName + sRGB + + \ No newline at end of file diff --git a/x65.cpp b/x65.cpp index 81e9763..2a3303b 100644 --- a/x65.cpp +++ b/x65.cpp @@ -1640,7 +1640,7 @@ public: StatusCode BuildSegment(); // Display error in stderr - void PrintError(strref line, StatusCode error); + void PrintError(strref line, StatusCode error, strref file = strref()); // Conditional Status bool ConditionalAsm(); // Assembly is currently enabled @@ -3687,7 +3687,7 @@ StatusCode Asm::CheckLateEval(strref added_label, int scope_end, bool print_miss if (resolved) { i = lateEval.erase(i); } } else { if (print_missing_reference_errors && ret!=STATUS_XREF_DEPENDENT) { - PrintError(i->expression, ret); + PrintError(i->expression, ret, i->source_file); error_encountered = true; } ++i; @@ -5572,12 +5572,13 @@ StatusCode Asm::AddOpcode(strref line, int index, strref source_file) { } // Build a line of code -void Asm::PrintError(strref line, StatusCode error) { +void Asm::PrintError(strref line, StatusCode error, strref source) { strown<512> errorText; if (contextStack.has_work()) { errorText.sprintf("Error " STRREF_FMT "(%d): ", STRREF_ARG(contextStack.curr().source_name), contextStack.curr().source_file.count_lines(line)+1); - } else { errorText.append("Error: "); } + } else if (source) { errorText.sprintf_append("Error (%d): ", source.count_lines(line)); } + else { errorText.append("Error: "); } errorText.append(aStatusStrings[error]); errorText.append(" \""); errorText.append(line.get_trimmed_ws());