From 321b273a0f1a3679151c39512205bd44964aca9f Mon Sep 17 00:00:00 2001 From: burniouf Date: Fri, 30 Dec 2022 17:29:57 +0100 Subject: [PATCH] CC:wip, partially working, committing before breaking everything again --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes BIN/CC.S.CORE.txt | 20 ++--- BIN/CC.S.DECL.txt | 42 ++++----- BIN/CC.S.F.txt | 72 ++++++++------- BIN/CC.S.FIO.txt | 3 + BIN/CC.S.KW.txt | 124 ++++++++++++++------------ BIN/CC.S.LINK.txt | 2 +- BIN/CC.S.SCOPE.txt | 20 ++++- BIN/CC.S.STMT.txt | 40 +++++---- BIN/CC.S.SYM.txt | 173 ++++++++++++++++++++++++------------ BIN/CC.S.txt | 82 +++++------------ ROOT/ctest/helloworld.c.txt | 10 +++ ROOT/ctest/testargs.c.txt | 55 ++++++++++++ ROOT/ctest/testf.c.txt | 37 ++++++++ ROOT/ctest/testif.c.txt | 29 ++++++ ROOT/ctest/testlib.c.txt | 82 +++++++++++++++++ ROOT/ctest/testloop.c.txt | 32 +++++++ ROOT/ctest/testptr.c.txt | 76 ++++++++++++++++ ROOT/ctest/testsc.c.txt | 23 +++++ ROOT/ctest/testtdef.c.txt | 46 ++++++++++ 20 files changed, 700 insertions(+), 268 deletions(-) create mode 100644 ROOT/ctest/helloworld.c.txt create mode 100644 ROOT/ctest/testargs.c.txt create mode 100644 ROOT/ctest/testf.c.txt create mode 100644 ROOT/ctest/testif.c.txt create mode 100644 ROOT/ctest/testlib.c.txt create mode 100644 ROOT/ctest/testloop.c.txt create mode 100644 ROOT/ctest/testptr.c.txt create mode 100644 ROOT/ctest/testsc.c.txt create mode 100644 ROOT/ctest/testtdef.c.txt diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 5d1c07aec6289c4c903bbd9fd1af91441c9ca0bb..caf5adc7ffd2d46483d935aa193fc9cc3460bf72 100644 GIT binary patch delta 398111 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
    0p$Tpf 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Μ?UmdK{p@*aKrXn{#>`46oIusjGaFg1h~0r%AqW>9o6^nFhin?6MM zfx9x{1by^YF0Tz~E z2rgj$SV3l2L17gM{R&*0LP#xxHF?D@G}s9j>B-x~_<(P?7^5%I7hW_AA!`tTXd%jg z!j1ioe)*!=LVvy}1nP+vLJC+K|2?60rx=^{1AjOEB##HEMmK{91Y!d)LD*|nYStYb zYYZHa_*{rI;`Rih2z<)J`4eAy!YPJX@Nxy_)Z`GYKi}^pYiUr2m?S{NfK4cL$-rij z2pu~}NtfO(n$@ueTGJuMsDo7W!f`{gIy{6P>JY>9M!<&?b1F$P(RVw42}1)D&ur_KK~Z)ub9`37V@@v`GrS<7 zwGAyL&H}WNa8m+S1VebhQvv6=c(L(1mD5uW^925Ek=y{{1MUX!vC{5|1XRnxi8XLw z8o$;xK+b6A&D9XYWS{NiK!LSZ#pioAyYWHx`XeA(fb+>n zaAY5&38>z1;uY>yfEeQh05}g9+789CLyv;Uf-_$bRp0_8@D-Sy^1jNf=pd}XT(oIq z<}Gw#x0naHMusCj_oieot5I6qEITfFcw_E}8O2de=@d!}cef z58lh=9V`m;5Of5C(!z}j%xxLqx)<@VtXw%B<$_%mUgHvRfDbK7Hwc~Jz7Tw>KZ8=k zxlQdblC*_HJj!95TDU#|qfDWPQ0upJubNX@mbP*ZT#}-LD-&3(33UIj@&Mqg{s=Hb zad73(4>3H6D#L&wbp1CO7>?sT?FC#?u^bQJ66>=Vk!HX-sSDgZ*F6W#kc~OSa>T0{ z0I+7J7gca-kgY)R#rfNplvfbzOI$Eufkt-0)X57Y?@wWO*L9pf9aq$w9usKyNycR# z{v_GrW&G;9E7$3@q}jm0;2OQ2x(Cwrp|qkGKCka6l^ZtE%8Yqcxa- zPmpg?iy<^?pD37(vR}jkm3W&B2@9oD9tjf6p(gGiDTp9`Z=pN(iQs(_8eLf!t`1|k z%<6E${#cnRqW2G?RfLEFKO8*a%9}}qU3uddg>J>F-rtHM{Q0u8y}uJhs(F9%S^C0e zt0_1%8oR7fXz%^K7-^UmM-&RO?!rI&maI-t#xR+WA@P@ENTM-o;19ku?Gt@Xa_B(8 z0^>;K<49-Y2+K2N{NhNt3FMAu1{*1Vqb(Dl@Ncwfv$&TQl}#V{gE(m_L>0I(gK+IM zWeb8^*y&Kg%n1pGKmw{7vvN5^%tN;y&Q@~(>;%5s<8&k1+1%H|U;@t1;CUDh;cG7V zSVoK-08V)@E8u7Z3?AkW4{{Mx5$p(Zz3(-HBh&J3zQnT`T!15(olY#J3UgQ7&HK1E zk(kRoeJErFLrlTFhk*c^jRnxmp^N2^Q$ki&X66we*jX*XeZHWopgoU>W{53Jbn?VX z76z~cFPnfbd(AnK$xQ7{gYjF^UdD2(o&(MR)7Of#1dkt`?lM zq93MfhumCdb3SKuWGB6?UyPV?$1l|hA_mMy>hh>lH=hvEJLu7VF-o-)dk_NdVlN+A9Hl!R5@XZ$d5ui@dybah0u``?d2!H2gx?c-Z*zf#ejQ~Ivf*w=ui6DW z-Gs6EY3%13jiA<)9$;E)H6QengzRRCe`d_efp7sX z%f?}@^=|aWM}gfe=q&fAb;)c!#6~;c^w`7}(4Xn?iEW@r`vk|Y9g#QShq=gNpQKp> zp!I)a$nteh$wGpUGtcmGxFdKNQoxm6`#eWwf*1lU{oRaN+-DSDq;EP4thu_E01cau z#P~9&#e?Qm9_tK+kikUOilZ`{AaLNWQP}hbW0Uhux$n35pcz(vMTcq3t0P{d{ii(W zfAK*Z-vO0Xz7!TLhpUJnpn$rpeNX1fe>hi!|1uSTY&(qYt;%0n*u|WkV_=kVLp})t z3v9dQos_411<<|^J7~zs3x)uLdl+CcKjeB6c9M@j1fmUanM5~p;~^>}p5~@)(#JI8 z5i!#G31>eX34p`|m>+oYg!n17KOzcY=V4s(S39En40+8Wxt0su=t9_l`86mR+*ym` z47EA%E4;Old3|5=fks}WCms=-2_#I=z%w zzT=k7I~GZFSKOiw{lRO%Y_fizK~XS5Ac5&6q#d9uDjI0# zuqb2%PehMNo=W0D9tmdo2D0q{;g}GWb+!ef30@WlzO7d+BRaT`k-5E)Rw_V@0`Iqg zyCYb3DmYAKY^WBIQ5qEqmoa+oNmXE$bC?K(F;AJK>?f2f86%@rC@a{HAzYTnhm;3gJ0p2sMS!(@bC zavYNpaH9bnpQEB<{{y<_GP=}}^QmzNG&Y~Jve3=SBEFA_EcRw)_C!`f5++Dl69)G# zqMApQdRPgW2yW`Q?k<#B2{8r_D8o=m+EpWn9->0+%kF{Ucj!Y7)Yyk1%4=av2@2zUMJDW3S$w04_<~>a78}vN&Z*PBA;(Gn!AT2!laa#?AF@LMVt zm4}#V0h~zCj&VTa+YFF>Y`6<~5&Tc!n-eZHTvJiq+6r-vf5AI`g@jwM-bIl#6VrQu zYT_RY*Z&74fy;X)F&$G)+?2xJ{y0>#@LLw~{{Tb{P#<0e1(DB_P?OaQyH{WM6XT~; z7y>Y>PE+UOqDB1?+|e2i`>u~+X~VE9Tzmw_5I>n{U(Pc7qBftSCm$D0`cI)(t^$_N zxLiJG0EM~>GCg2U#ud$DE=~!Hgc-hK%Oks6muN4dY?_Jg8yq7G)r5bm>itkB=(LwP z+as^2XwQrJ;dS53^7;{@T1>Tmk_GcK^4rk{X(4i&NzT=IAw11ws+<@CX(nso)Rt+Q z7Z_xjEU3gQ`g;93Q+7La384JU49 zdBMz{08?FCE5pq3f|<)K=*d9*ON9iR&JT?;c6$9+})dlGr_x)IE~iJ(AKrlG;6z);*HmJ(AHq zGNpSYvwI|~dnCJiB&U01YWK*r?vd%;BQv^3a=Se8u-f<`VuU##X@2>v4<|emnwEQgaiL71ksm5i6eGpES!{qt0&q0H<1g~xQIcZ zlI8p6@4y>hWdo^S1XsPW%Rj+=fNT2LVBnfQ+`xoY(8l-SkF-NL2~1gc!<>)ZbnsuZ6OPM&%LLYLq7 zYUcVWmBlOAN&MTyE{cc{e6K*g_ zip85e+Ti3$W^D2-1KyhnuTs4i=2K5P@0q z!k^`hzhw?|Nw+^ZFFwYDxCIdZO2dbLKToaBj-`)3I4?8j{}(z(=|-Wvy7&KU@4n-s zs?z^~-ziBZnY8JX0?8zh&_anwm6Cf0M2&&e_!G7BSzW zFC&nLcWmzSj@!AO>aH8#f2vQL?7Ccgn((}1v>?_l?---Rp1IK+@#H&3!24s<8}cLH zgif{}h2vfN=NIwvH*`y`de<23{DC$VpRP1QV(+^~D|1z{o2N-?sDHVSlSXIrtSkv6 zr_;@DFn8?!jp3zIZsj*dj&-aB-xw9@?-ACbcHbIh^!Ih&8iw#L*S+GIZw(h+!l&OE ze(~0~Mta)wvC9;mkyod4Ev(*SX zs5@hX#oON)$>PbA^o%@x#%L+#oiRKjh5zqAXN*f|usJ@Jtx(MP&d5nF;UAzDiJQMO zlGN$~5nisRt4n)c?EKDXX+O|XUQOz$qg(QMpL6msu4MYV{*%-6CGk3cvqy@AtvLGI zj{SXnQG16DV$f>C-}vFZ#s{_?nSJ}ZXsivbb6IPz_TQ75wzkZXDFy}m_RjjmE|+em z&z!cdELUs{_HE(h?ZoTBz7w;DB&_D8%X@_SHueZr?0eE#rWI+T?zM`D%`SGnR#BMY zFvonP5dJnv;?!Qfb$*H(KhYZCPD@MW!6!Mt7fh3Hwmt0TaT!A;G(Is8wdu;>p*Sh? znyJ36DyE3rEkt1UshRdL}SJB$Ec`)N7SWqp&Hwdz9hZ; zH$}{`Ec>+|SanrDDt8pAfgxSRYNwzazgP|VnJ~)$4G7CQYJaIY?4vaU0X3lI&f>-ydZrh2zHg#WBqw`hUK;^F)4DS~jhtY0%*Rom7J zdndh({c+iYz*iYG%T=*}f8Im$QVEMoXz{L{T-M^`&P!!2S@@+6v+ZTHJ2$w>=|!Fq zHVUV=hqlSNFIs!3#AVGcBg0R;)ZE(Spw#L*erkQWo>n+s^Hb?7c4W$v(LQq2dU@mCCqYG8QWlE1s2WzCG%4s1(YV$5|E^ z71j7v=b{=H!F^OzGYhJ6lST*3Vrz z?dB@#VXaXwIPQENyvJe&t_e$=Au#@Uj!B3)WsaW@M8E{r~oG`8mZtWulK!+ zH#wqKWl@2SC)`jHRKKilnxo)D^Z8uai=NMq)bknsIDS>`f70LT!xKIxUhSoaQjc4| zxURRpAU$^xRn1bgQgzM3DUB<7>$lp}5*{)Kr-efm<=$Z2&+8DGW^Q}ngCv9BJnf1`TARD2s><^4__JmJATYd*OD zN_f1~gZsVt;QmKFxPc$!`1!4UKP9}8X6)!M@fv}1sx+PRt4;K-pqlCPbaq+b@1_NR zlSgtC{%#ZVD)i>vXwZD?OX0Gs@2HCs9r+?T%^|1bFH(}qQU{aeV9q{gh!UfEU8mu< z2WR+eT|CgPnyiT*MlGDC5*%*#qf!ht{Y|`KCdZe#IkBO#D}4$)lsF~qL}6VtdVZ64 zkkTf;9=|8ydaT!v5-a)oQDP+)ZPR_VltA%8NudA< zTXIuS?#0{YncGt8rH*Q-VZD9Ln`~Q4&pZuvE}wN8h(B>-J~X9pO)rDeINmy)(l~XO zx@s;O@|;s_FQsTrELxcsl&)R$DQZJMJ(Fwps1U^|c(9$FC#>-~0_~}w^GnFrlEyq& z@RTleGL!dGnzA6hJpLF&>ig?OREGL=y`Eo7>s(#bDP2^K;_tM#JEh!Rt>$vsB-Dd` z73Tzcsx5rIXp1Hd>QtcOP24oiw_+dXlMyK30gN$Ik3+>Au4H?G)^v@YCHi!nwI$WT5=f zN%W(O28n_xdc-zZR7}wW(V?7K;X4r@B%I`7c+mU0jFiRQ^C#ZR6$S)SZit2#(eNxT5-+&5ix?y2Uvr^U}*qkeVs z>3nY0YiCu{FlmiPLYFbrGx&i{jG=Bdo5Q7CGu8U=Z2B6QZAFyrj0aJhgQ3?Z-D2OM z`EFJBmrKFsG+0SGs(PX3S*|WM z9$R}?{5&mI3delCxce&pWX)Y>jX5%Xl9qF~+D$eaQcwa1BlCzZTKYZl-9z_^G4u6c z-kSI#9zk8*b{=@+e)G1ki*JxuXWsUSa_kN9zi#`6i*EZL)oo9I$hz%IsDpsI?-`r; zz7M_Px_&gCUG~G~>8)(vX0@a15%pnkZBaXwJxb-9@R^J@X|BiAlG3d-X^vh}P%kMo z_v7@2ngi54L07NpO>>_Vdv4PMwoz1<@cWM2byuqYjLm;R<;9suNm0D=qQ{mJnwDA? zaxbpD;4R*tJ_>ee zFs%JGRs0R4L7~lUJv87me5E_`~9<>+FSWKQEMqMeXy2w?!xE&SG(Bu zQ7FfL-Y(w!DAYQGMtYWq?xuD6ou(f7IMks;qw#-azG7+3be{6hXIDetBpfwFV>=Jt z680Cko#r@0-L%sgqhe{;eG(3=*NTjRbcbaF2T_1;%%c8}y1mi%kTl$=w@F&Wf9DzU|GwvJFaWYR+ zOF0kCb&Gi=)VYc8K>SMF6sV+%wpw^T2k8ZCvne#miVLL5F3q<1yl=PT4G50n*H_O!eZl|%(n>0|}VP9uufPJ<03md4)wNy%aWYna4 zq4mM#i92L&$-h`u{;Fh8)&J6XuJmrk>ww*q_?TVw+{^7P=`oYjgt{r^kqH{r46mS% z1Lde)E7f=TlDoxod-ZY(E|WD(l%Vj2vAUA9`}ljo8B&`2m+Ox0p>?9-H9c5DGjhlp zraDd#sfLNu6OI6lMaEJM(*vr8DP;p)71b~a+ctfdC%jdY)d^IIEyuiCE)H(f3w>b< z1Y?+lb>bYYC=F8>Sd$g98ld@~5|6W5^xUpDIzqd(9nb1cyNI-CevGPXn$^9aJ9(0% z^YuG)XO{Z#nHl(ITjdRR$s4Za*Ykhn<ERX>kQVFmPhH8b(L9a3B%$b)|Dt$sm!8+0V$;+IM1ATzX_>ps zB|KM)Soo_y;P<}Vbff04i0nDuJckzABO;sifHRNc*6Mfb$pg54@IiIc0}pW;O_4Mg z)DLbnlZoz{i!uWfD89f&nE?LRO_=~$OfT1p9u>(q^@?1-HI`j4>-#AAmjww*{<)}; z*1+?Xah}cpl=WUE)cgI3G7DVq_jHqWRPPs}*-LC2!-3E?bKQmQM%z`p(X+DMD3bmh zKbopM>U|+08B{?nJE(X|!^`D;ZR=6X|-SdH!1*8$y z23|wexBoD!Z`~iof7!?Cm*pL$CMuQWQ#TwMzck)A&rfrB&?`Wm zndr7bPj7KtU8b2|pRC#& zx=)%pecHn6g|n+~SV$8PXzrf0G3V7Nh=u|(%_i1(5KZrdWA)M2X`#NHd!cXOGBqOJ zxH*$1O{BrzEBMo-qUXA*>-17EJxxzV+s%?)tOsizL!ChKjjS-V^r&@o%6s-#V{2V* zEuxwTik+7^3_022m9&C?HifZO%5LxZH0i3FV&=_&&GdosJzEVDKfIxrHlv7nxerx$ zr&0fV73`2o;qvqmSt80F4(FGpUu%V4Q`u#tx<{ewxbr)GaFz|BCBtGbcNu`d?Snm%pfbh_YMt7~S@S~z?9LW)x$ zcxsBL8Ckf$c^@skI(~gTxZi%=pEQwz;x83n?bq8jn?!5n*QeXks;aBG&sB8zAT2zZ zwkWR?(+}v)I%H73RS{7i2^l#riMnV>lx@|rD5q-O6&|T$x{M(8_$k+#5GL4vc>O`$ zUTftiDYw(HRyW_OIkP!GtL436rW_SZ zdB{#m2qs&r{1mEeraUU_vp)sH9-uMTo_kC87931GnHrfr?X6e_^ly!iv`ZdrYqY(s z_jHci7fI4yOwlUKdZuXSRp3CDyRa3vv``n!p=MJ{@~zaM(wHPSyHmv%__NIhnL)#b z#2RG&8A;WsbB{clYLMxgEjGQQhq~RGu=BdIuC#LrpW}-D*1lTuS9Fdg4z)8k+N>(m zJnqK9`F(x19q;KbKMkpMVR1Ak(kc=wj#As}VIv?iztq!2!I%1{lrzb!|4Mf{KGI&N z677F&k-F~s@AYT(>?|5nrIgAV@{KL;wp465pyv&1L1henBY7MUIeI}gjc8Ckm0}X; zjg&9n1d0nZzfg13Bks9{zEB*HJw*;iL*qo+o#w(Of5*&WSQlOJx%W^3gug8D$__4lmCL_G+AdpPZ?wr?PS@MLE_SpP>yI1$jFs`D1@0C$o8ccwC6V}>vYOWO zn?fIkqcndS8S_aP#a>&w9U@#2}Y{sn( zamZ@!@KCj?c35nc`xcE16&tb=K;K7|x{W z)B*D;@rXC<3uQdbP4BXzieeN0Z01zT#Y?y8IUF3kT|}-i{DseP@ku7R@v)PixAJsa z?hdZi3OXs)sgV!s_rJ)wFMc>Frzs14Wt7uY)n&WYf>tkyH?J{D3tm<^QuiyI6<6aq z?}_D?^7abP2qTxWoa$m#_+!!s55KMG|~ORJ`*pMOQz784jl^T)X;}&{A3P#D&!d!Gcv6B zmnM-r9Qjk+x-c=&hVJIf*;K>Ckuxd+h@yY2Gj)8pPtZfBj0fIu{ErxLmoZt4S#2bV z=kGGEZgk$%H zVx>`NTOcAU>6?A;v}jONt~A`@_)3a^`9M@pi-vhTn3YBsnnj*#1~X(`qxGhX%UI2UD~ceQ(-*6 zh@9Ot$r<6p_@xV6DXr6Y@_=BP7l)0^_x1_djz-8PyT4>@s$%lUixW+Caao@kdJcTasL0!wzbC_id9PR#StSzI2{ydbxu7~=fvPuhCgM?&cf8)4L_)5 z?c_s9ThOWiMP%_mV%M~2ns~-xTy8t7w(6_4I?JmIX`wpKZa&V}a*GxN=whdZ3-?*h z-IIbBICpP(OH0%FkTD`X;b)waPk<;oVuZ~EE+keTHavyb6cxT0QIUaWU3%_)Ck~}- zwrxL=yY@uoaPbN!jJ%(^A>paf_WTZo#eu2O)}nf9G{-hfy<=;pMoYy2dauOyy!3jt zG{SG5{6G4^{ls?;iX9s}jn>am>tkSi@0CrCfYI<}I zJp}{nTsD`#pX0*!t6%ZrVurj={JC#h%fKh{=Bw;O-v4^ZJ~ZYzw?!I)@i8$QK)iknwa6%u{vtuYn*Lt4+zhc44;ucBECF$t+gW` zI=1J?_!jQ#%#%?iqc`m)#T86?@bBoD|iFXRC9x= z=5$ToY0-pj2GfY3n!ARUBvgcQ4a8EJD|ks|;ak6~>OQG`(3~4!sT@qu%>`!aaLRdQ zG2k_yVI#uX6CQO>CcSPE7RYOEzn%l zRg{yY&^s!>E?XvRVrfwNyYWpkj&O05awDa;muhJra7BW+^>d?FzqF&V+&A_2V?oX}qy5>4z7Fka6@2#609aw+LuwS1s$w8z2Q1+6CRB_#)T7cY> zWwuf-y3x$6-ek`6Fjci34&%Q~X6DUKMZz__NX*Sq=6PEoNl6cU3@7)fnrsDJH+oNjKEE`PAce_wG~u{zFZwGa3?ReYB8*nE^=CpSLP|g zi`5c!?EW;HgF3i>DP2s>M5AUlRdudZhYT(gwI_{0?Q(0?EP0UFPHiaWX$4hJp~^t#>qMhp8JEkyQiik6-AKE;&(X*^{< z-mamX-In)_l4Q==eO@e%eP;x1H0kR5#!zw92gVC@tXxre#K`4*Sc*6{H`+z~VO%s{ zWyY+$S+00{T(psU3uKG+SBic!-hfjI34Bg46>%7EvWL*0Q$xtZLv4{!84s zP4~C)d`~B#vSn<8(0^pp@G_2(lM7Wh`rr?8`&!?R3EQhx{-4bn5BXB5=)H96CT>-2 z_LACS+HiU~I#&dWB4 zd0!blM?c7`V#9mhr4A9=$V+8wrF_0GSvuz0(Ub$&q`n6JhpjWv^KL%a-p%qHJgTAG zg@)mIL}Y($1iEeE74*i^w(<(;`=z-aRY%HwOrA*g(xUbTu0dJCmq0^bZWY&mZG=Nq z-x8Y$V8Yyc)b&Lk7k7Vc6lOK>2Z#naU){c6RC7Hkwm+6uQ-5>Ro_;TX^r(V^zQ}7t zhhvUV?b_J)F7rO~Pij%4;kfUo|FY^)Wm7v^Gu1)+KtiBPgHTNIQjp-BoVElR?QrEjNwlZ^*`6pd(XPzhWqU&{S zHZO8Z{36T$kBc0t1s^q!ci}}omY7cH1#>3R>qHm1HFh2D`uIgYE-$jr6S0+<4d$Qf zBA=xHYJ%!|N?l~?pD4+bLkvB={#8%w`q@$Yz?svh&+aj9!uYO}I!~&ecxksu)tx6? zIh3){(*K6gmW9J-O`O@I#ce~Xs)pUpyLPbtV;p4@W=(GF zw8{CbEmIz}V+PF+G;>yuPK~xT#`m_`q>pW*9!+`qhZA=`^_T1=k+fG&4=KFA{~ft0 zC&u0p&bBR1ADFSE=lOQF@U@?^x|$EZ>oENDeObGg1&;SSxo7cLOM5(W)tj5X|KixltJ;TVjK4o^ z*Q(1N+~C@{;PXo!j~rY3-~H!4vwyrO-1{#l+C1BB#Dr5_2D+y{6dJYop0k;OYe%xo32k-v(zX#o0sGU9Td3cL`&D9$>Ci^0%CftAP6^Hgt{m-GSh~`~ea#duW%l7W( zeX~!OR}N}fUb(sYlK;$h{(F3%yk!fb%NF#jU(kPG8#T$A>RV1x_|_-gLp`WvCO0-} z+8ZMKVE@3dgfRSo)t8zYW|mwzbjZT$akD4}Uj=&0+_p8fhUaheZI_j~R;ND-%a;Kk z-8*UR4v9YLHIKDr4H4U@PuT-b4&%I7agZ@@?`7h zePZCEa5$9$?zz3Z#n&HgRCpP79cD8Qa0q4Q3uaq+w^>QF7iOHP~JmcJBhzxB7} zaoZYQZ}p#NtMwO}txS46MGi(TT&7ap%pz;4{OT1aG(gF(bbl?ig*8@LiAro~bah!s z@$j^2Rw0EuGr8KBISt38$z8bR#$H@3`-xGTG5>h^+uNx^OJSL~=}`XyTYItUQ2+ee z4vA^M96Bzwqj}mSY82Ky)EdkwO)T~%V6_ZWvK8xvmDZWE3sf)IhJv%@fI`%Mp#Jqx zqcC@(i0#kgrSUBtCo?D0-=S>oVroDbVe0rVVS4*wIX5yDh?ZEO=oz#y`uiS17c+E46qCkqils{T^Rs z!m5$0`FY_1)nsyLMS#)3BIboq!LYna$#@4{v=ucQ%gd#$hM3J}L-_(;c-7O#)|mZT zpLTZqKLj8E0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_< z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$## zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;| zfB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U< z00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_< z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$## zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;| zfB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U< z00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_< z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$## zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;| PfWZGZfi=q<6}JBe0xol- diff --git a/BIN/CC.S.CORE.txt b/BIN/CC.S.CORE.txt index 70014555..33a3aa78 100644 --- a/BIN/CC.S.CORE.txt +++ b/BIN/CC.S.CORE.txt @@ -101,14 +101,7 @@ CORE.CompileFile bcs .9 jsr CORE.CompileLine - bcs .9 - - >LDA.G bDebug - bpl CORE.CompileFile - - jsr PrintDebugMsg - - bra CORE.CompileFile + bcc CORE.CompileFile .9 rts *-------------------------------------- @@ -132,9 +125,12 @@ CORE.CompileLine .2 cmp #'}' End of CPStmt ? bne .3 - jsr CORE.GetNCharNB Skip '}' + jsr CORE.GetNCharNBNL Skip '}' jsr STMT.CPStmt.END + bcs .9 + + jsr CORE.GetCharNBNL bcc CORE.CompileLine rts @@ -142,7 +138,7 @@ CORE.CompileLine .3 cmp #';' End of Stmt ? bne .4 - jsr CORE.GetNCharNB Skip ';' + jsr CORE.GetNCharNBNL Skip ';' jsr STMT.Stmt.END bcs .9 @@ -410,7 +406,9 @@ CORE.GetCharNBNL bne CORE.GetNCharNB.RTS jsr FIO.FGetS - bcs CORE.GetNCharNB.RTS + bcc CORE.GetCharNBNL + + rts *-------------------------------------- CORE.GetNCharNBNL jsr CORE.GetNCharNB diff --git a/BIN/CC.S.DECL.txt b/BIN/CC.S.DECL.txt index df343067..8839342e 100644 --- a/BIN/CC.S.DECL.txt +++ b/BIN/CC.S.DECL.txt @@ -39,9 +39,7 @@ DECL.TYPEDEF jsr CORE.GetNCharNB .98 lda #E.CSYN sec -.99 -DECL.TYPEDEF.RTS - rts +.99 rts *-------------------------------------- * X = type qual *-------------------------------------- @@ -86,51 +84,43 @@ DECL.X jsr TYPE.GetTQInYA .98 lda #E.CSYN sec .99 rts -*-------------------------------------- + .7 sec Reset Buffer - +*-------------------------------------- DECL.YAC ldx #SYM.SC.STATIC Y,A = Type/Qual - bit bLocalScope - bpl .25 - bit #SYM.Q.FUNC someone wants to add a local f() ? - bne .98 + bit bLocalScope + bpl .22 ldx #SYM.SC.AUTO -.25 jsr SYM.New Y,A=T/Q, X=SC, C=clear/reuse +.22 jsr SYM.New Y,A=T/Q, X=SC, C=clear/reuse bcs .98 OOM or DUP -.22 jsr CC.GetCharNB + jsr SYM.GetTQInYA Y,A = T/Q + bit #SYM.Q.FUNC + bne .8 + + jsr CC.GetCharNB bcs .98 - cmp #';' - bne .26 + cmp #';' no initializer...store SYM + beq .28 - ldy #SYM.Q - lda (ZPSymBufPtr),y - and #SYM.Q.FUNC - beq .28 no initializer...store SYM - - clc function are already stored - rts -*-------------------------------------- -* Initializer -*-------------------------------------- -.26 cmp #'=' type var = value ? + cmp #'=' type var = value ? bne .98 jsr CORE.GetNCharNB skip '=' bcs .98 - jsr SYM.GetTypeInYA expected T/Q + jsr SYM.GetTQInYA expected T/Q jsr EXP.Eval bcs .99 jsr SYM.GetAddr1 bcs .99 - jsr SYM.GetTypeInYA Y,A = T/Q + jsr SYM.GetTQInYA Y,A = T/Q jsr SYM.PopValue Set value to this var .29 bcs .99 diff --git a/BIN/CC.S.F.txt b/BIN/CC.S.F.txt index e8e40fed..5b66235d 100644 --- a/BIN/CC.S.F.txt +++ b/BIN/CC.S.F.txt @@ -1,34 +1,26 @@ NEW AUTO 3,1 *-------------------------------------- -F.Decl ldy #SYM.Q - lda (ZPSymBufPtr),y - ora #SYM.Q.FUNC - sta (ZPSymBufPtr),y - - and #$FC - sta ZPPtr2+1 - - lda (ZPSymBufPtr) #SYM.T - sta ZPPtr2 T/Q for _RETURN_ - - stz LocalPtr - - jsr SYM.Store Store this f() with no prototype... - bcs .99 +F.Decl stz LocalPtr jsr SCOPE.New bcs .99 - lda ZPPtr2+1 #SYM.Q - and #$F0 + lda (ZPSymBufPtr) #SYM.T + pha + + ldy #SYM.Q + lda (ZPSymBufPtr),y + and #SYM.Q.PPPOINTER+SYM.Q.AAARRAY + + ply + cpy #SYM.T.VOID bne .10 - lda ZPPtr2 #SYM.T - cmp #SYM.T.VOID - beq .11 + tax + beq .11 function is void -.10 jsr F.AddReturnVar +.10 jsr F.AddReturnVar Y,A = T/Q bcs .99 .11 jsr CORE.GetNCharNBNL Skip ( @@ -85,20 +77,22 @@ F.Decl ldy #SYM.Q .6 jsr SYM.Add0000 definition End bcs .99 - ldy #SYM.ArgSize - lda LocalPtr - sta (ZPSymBufPtr),y - jsr CORE.GetNCharNBNL Skip ')' bcs .9 cmp #';' bne .7 - + jsr SCOPE.Close discard local scope bcs .99 - jmp SYM.Update Store this declaration & exit + jsr SYM.Update Store this declaration & exit + bcs .99 + + jsr CORE.GetNCharNBNL Skip ';' + + clc no error even if EOF + rts *-------------------------------------- .7 cmp #'{' bne .9 @@ -115,7 +109,7 @@ F.Def >LDA.G CC.bInitCode .1 jsr SYM.SetAddrCCode f() Code starts HERE - jsr SYM.Update + jsr SYM.Update Store f() Declaration bcs .99 lda LocalPtr @@ -123,7 +117,18 @@ F.Def >LDA.G CC.bInitCode bcs .99 >LDYA L.PCC.ENTER - jmp CODE.EmitPCC Store f() Declaration / Start Definition + jsr CODE.EmitPCC Start Definition + bcs .99 + + lda #$ff + >STA.G CC.CmdSave + + jsr STMT.New00 + bcs .99 + + jsr STMT.SetTypeCP + bcs .99 + .99 rts *-------------------------------------- @@ -131,14 +136,15 @@ F.Def.END lda #'X' define EXIT Label jsr SYM.NewLabelA bcs .9 + jsr STMT.Close + bcs .9 + >LDYA L.PCC.LEAVE jsr CODE.EmitPCC bcs .9 - jsr STMT.Close + jsr SCOPE.Close bcs .9 - - jmp SCOPE.Close .9 rts *-------------------------------------- @@ -193,6 +199,8 @@ F.AddReturnVar ldx ZPLineBufPtr ldx ZPLineBufPtr+1 phx + >STYA ZPPtr2 Y,A = T/Q + >LDYA L.CC._RETURN_ >STYA ZPLineBufPtr diff --git a/BIN/CC.S.FIO.txt b/BIN/CC.S.FIO.txt index 77ba4047..c836492c 100644 --- a/BIN/CC.S.FIO.txt +++ b/BIN/CC.S.FIO.txt @@ -102,6 +102,9 @@ FIO.FOpen phy FIO.FGetS >LDYA.G LineBufPtr >STYA ZPLineBufPtr + lda #0 + sta (ZPLineBufPtr) set to Empty line + >LDA.G LineCntPtr tay lda (pData),y diff --git a/BIN/CC.S.KW.txt b/BIN/CC.S.KW.txt index e074650f..0d94a825 100644 --- a/BIN/CC.S.KW.txt +++ b/BIN/CC.S.KW.txt @@ -3,7 +3,7 @@ NEW *-------------------------------------- * Built in Keywords *-------------------------------------- -KW.IF jsr STMT.NewCPS00 +KW.IF jsr SCOPE.New bcs .99 jsr CC.GetCharNB @@ -34,29 +34,27 @@ KW.IF jsr STMT.NewCPS00 cmp #')' bne .9 - jmp STMT.SetCPSType + jsr STMT.New00 + bcs .99 + + jmp STMT.SetType .9 lda #E.CSYN sec .99 rts *-------------------------------------- -KW.IF.END jsr CORE.GetCharNBNL - bcs .1 - - cmp #';' - beq .1 +KW.IF.END jsr STMT.Close + bcs .99 >LDYA L.CC.KW2.IF Check allowed KW for IF.... jsr CC.LookupID bcc .2 -.1 lda #'E' define ELSE Label + lda #'E' define ELSE Label jsr SYM.NewLabelA bcs .99 - jmp STMT.Close - - rts + jmp SCOPE.Close *-------------------------------------- .2 lda #'X' jsr SYM.LookupLabelA @@ -70,11 +68,13 @@ KW.IF.END jsr CORE.GetCharNBNL jsr SYM.NewLabelA bcs .99 - lda #KW.ELSE.ID replace IF by ELSE keyword - ldy CStackPtr - sta (ZPCCStack),y + lda #KW.ELSE.ID + >STA.G CC.CmdSave - jmp STMT.SetCPSType reuse IF STMT + jsr STMT.New00 + bcs .99 + + jmp STMT.SetType .9 lda #E.CSYN sec @@ -84,15 +84,21 @@ KW.ELSE lda #E.CSYN illegal sec rts *-------------------------------------- -KW.ELSE.END lda #'X' define EXIT Label +KW.ELSE.END jsr STMT.Close + bcs .99 + + lda #'X' define EXIT Label jsr SYM.NewLabelA bcs .99 - jmp STMT.Close + jmp SCOPE.Close .99 rts *-------------------------------------- -KW.WHILE lda #'C' define CONT Label +KW.WHILE jsr SCOPE.New + bcs .99 + + lda #'C' define CONT Label jsr SYM.NewLabelA bcs .99 @@ -123,17 +129,20 @@ KW.WHILE lda #'C' define CONT Label cmp #')' bne .9 - - jsr STMT.NewCPS00 + + jsr STMT.New00 bcs .99 - - jmp STMT.SetCPSType + + jmp STMT.SetType .9 lda #E.CSYN sec .99 rts *-------------------------------------- -KW.WHILE.END >LDYA L.PCC.SLEEP +KW.WHILE.END jsr STMT.Close + bcs .99 + + >LDYA L.PCC.SLEEP jsr CODE.EmitPCC bcs .99 @@ -147,13 +156,9 @@ KW.WHILE.END >LDYA L.PCC.SLEEP lda #'B' define BREAK Label jsr SYM.NewLabelA - bcs .99 - jsr SCOPE.Close - bcs .99 + jmp SCOPE.Close - jmp STMT.Close - .99 rts *-------------------------------------- KW.DO jsr SCOPE.New @@ -163,14 +168,17 @@ KW.DO jsr SCOPE.New jsr SYM.NewLabelA bcs .99 - jsr STMT.NewCPS00 + jsr STMT.New00 bcs .99 - jmp STMT.SetCPSType + jmp STMT.SetType .99 rts *-------------------------------------- -KW.DO.END >LDYA L.CC.KW2.DO Check allowed KW for DO.... +KW.DO.END jsr STMT.Close + bcs .99 + + >LDYA L.CC.KW2.DO Check allowed KW for DO.... jsr CC.LookupID bcs .9 @@ -196,23 +204,20 @@ KW.DO.END >LDYA L.CC.KW2.DO Check allowed KW for DO.... jsr CODE.TOABSYX bcs .99 - lda #'B' define BREAK Label - jsr SYM.NewLabelA - bcs .99 - jsr CC.GetCharNB bcs .99 cmp #')' bne .9 - jsr CORE.GetNCharNB + jsr CORE.GetNCharNB skip ')' bcs .9 - - jsr SCOPE.Close + + lda #'B' define BREAK Label + jsr SYM.NewLabelA bcs .99 - - jmp STMT.Close + + jmp SCOPE.Close .9 lda #E.CSYN sec @@ -245,7 +250,7 @@ KW.FOR jsr CC.GetCharNB jsr SCOPE.New bcs .19 - + >LDYA L.CC.TYPEQUAL jsr CC.LookupID bcs .1 @@ -328,10 +333,10 @@ KW.FOR jsr CC.GetCharNB jsr SYM.NewLabelA bcs .99 - jsr STMT.NewCPS00 + jsr STMT.New00 bcs .9 - jmp STMT.SetCPSType + jmp STMT.SetType .9 lda #E.CSYN sec @@ -342,15 +347,15 @@ KW.FOR.END lda #$60 jsr CODE.EmitByte set RTS for JSR code; bcs .99 + jsr STMT.Close + bcs .99 + lda #'B' define BREAK Label jsr SYM.NewLabelA bcs .99 - jsr STMT.Close - bcs .99 + jmp SCOPE.Close FOR () - jmp SCOPE.Close - .99 rts *-------------------------------------- KW.SWITCH jsr CC.GetCharNB @@ -384,6 +389,7 @@ KW.SWITCH jsr CC.GetCharNB .1 >LDYAI 256 >SYSCALL GetMem bcs .99 + txa jsr CC.Push push CPS.hMEM @@ -391,7 +397,7 @@ KW.SWITCH jsr CC.GetCharNB jsr CC.Push push CPS.MemPtr bcs .99 - jsr STMT.NewCPS + jsr STMT.New bcs .99 jsr CC.GetCharNB @@ -400,15 +406,15 @@ KW.SWITCH jsr CC.GetCharNB cmp #')' bne .98 + jsr STMT.SetType { + bcs .99 + lda #'J' jsr SYM.LookupLabelA bcs .99 lda #$4C emit JMP JmpTable - jsr CODE.TOABSYX - bcs .99 - - jmp STMT.SetCPSType + jmp CODE.TOABSYX .97 lda #E.TMISMATCH sec @@ -479,7 +485,7 @@ KW.SWITCH.END lda #'J' define JMP Label .2 >LDYA L.PCC.Pop16 jsr CODE.EmitPCC bcs .99 - + lda #'D' jsr SYM.LookupLabelA bcs .3 @@ -500,7 +506,7 @@ KW.SWITCH.END lda #'J' define JMP Label lda (ZPCCStack),y >SYSCALL FreeMem - jmp STMT.Close + jmp STMT.Close SWITCH () .99 rts *-------------------------------------- @@ -627,22 +633,22 @@ KW.RETURN ldx ZPLineBufPtr >LDYA L.CC._RETURN_ >STYA ZPLineBufPtr - + jsr SYM.Lookup - + plx stx ZPLineBufPtr+1 plx stx ZPLineBufPtr bcs .99 - + ldy #SYM.Q lda (ZPLookupSymPtr),y pha lda (ZPLookupSymPtr) SYM.T tay - pla + pla jsr EXP.Eval bcs .99 @@ -665,7 +671,7 @@ KW.RETURN ldx ZPLineBufPtr .9 lda #E.CSYN sec -.99 rts +.99 rts *-------------------------------------- KW.SIZEOF lda #E.CSYN diff --git a/BIN/CC.S.LINK.txt b/BIN/CC.S.LINK.txt index 9a1023d4..349ddb98 100644 --- a/BIN/CC.S.LINK.txt +++ b/BIN/CC.S.LINK.txt @@ -21,7 +21,7 @@ CC.Link >LDYA L.MSG.LINKING >PUSHB.G CC.hSyms >PUSHW ZPPtr1 SymID >PUSHW ZPSymBufPtr - >PUSHWI $ffff All + >PUSHWI 65535 All >PUSHWZ from Start >SYSCALL SListGetData bcs .99 diff --git a/BIN/CC.S.SCOPE.txt b/BIN/CC.S.SCOPE.txt index 56f7c6dd..017d6e51 100644 --- a/BIN/CC.S.SCOPE.txt +++ b/BIN/CC.S.SCOPE.txt @@ -29,10 +29,18 @@ SCOPE.New ldy ScopeIdx .DO _DBG_SCOPE=1 >PUSHW L.MSG.DEBUG.SCIN jsr SCOPE.Push + + lda ScopeIdx + sec + sbc #CC.ScopeIDs + lsr + >PUSHA + >PUSHB LocalPtr >PUSHB LocalFrame - >PUSHBI 4 + >PUSHBI 5 >SYSCALL PrintF +* >DEBUG .FIN clc @@ -59,12 +67,18 @@ SCOPE.Close .DO _DBG_SCOPE=1 .DO _DBG_SCOPE=1 + lda ScopeIdx + sec + sbc #CC.ScopeIDs + lsr + >PUSHA + >PUSHB LocalPtr >PUSHB LocalFrame jsr SCOPE.Push - >PUSHBI 6 + >PUSHBI 7 >SYSCALL PrintF - >DEBUG + .FIN clc diff --git a/BIN/CC.S.STMT.txt b/BIN/CC.S.STMT.txt index ef2bfcbc..ee8f70de 100644 --- a/BIN/CC.S.STMT.txt +++ b/BIN/CC.S.STMT.txt @@ -127,7 +127,7 @@ STMT.Stmt.END ldy CStackPtr lda (ZPCCStack),y bmi STMT.POP.8 local F context -* in an istruction ... +* in an instruction ... iny CPS.TERM lda (ZPCCStack),y cmp #'}' @@ -162,14 +162,14 @@ STMT.End ldy CStackPtr CPS.KW tax jmp (J.CC.KW.END,x) *-------------------------------------- -STMT.NewCPS00 lda #0 +STMT.New00 lda #0 jsr CC.Push CPS.hMEM - bcs STMT.NewCPS.RTS + bcs STMT.New.RTS jsr CC.Push CPS.MemPtr - bcs STMT.NewCPS.RTS + bcs STMT.New.RTS -STMT.NewCPS lda LocalFrame +STMT.New lda LocalFrame jsr CC.Push bcs .99 @@ -185,44 +185,44 @@ STMT.NewCPS lda LocalFrame jmp CC.Push .99 -STMT.NewCPS.RTS rts +STMT.New.RTS rts *-------------------------------------- -STMT.SetCPSType jsr CORE.GetNCharNBNL - bcs .9 +STMT.SetType jsr CORE.GetNCharNBNL + bcs STMT.SetType.9 ldx #';' cmp #'{' - bne .1 + bne STMT.SetType.1 - jsr CORE.GetNCharNB skip '{' - bcs .99 +STMT.SetTypeCP jsr CORE.GetNCharNB skip '{' + bcs STMT.SetType.9 jsr SCOPE.New - bcs .99 + bcs STMT.New.RTS lda #'F' jsr SYM.LookupLabelA - bcs .99 + bcs STMT.New.RTS txa jsr CODE.nAddLocal - bcs .99 + bcs STMT.New.RTS ldx #'}' -.1 txa +STMT.SetType.1 txa ldy CStackPtr iny CPS.TERM sta (ZPCCStack),y -.8 clc + clc rts -.9 lda #E.CSYN +STMT.SetType.9 lda #E.CSYN sec -.99 rts + rts *-------------------------------------- STMT.Close ldy CStackPtr CPS.KW iny CPS.TERM @@ -234,6 +234,10 @@ STMT.Close ldy CStackPtr CPS.KW jsr SYM.NewLabelA bcs .99 + lda LocalFrame + jsr CODE.AddLocal + bcs .99 + lda CStackPtr clc adc #CPS.LocalPtr diff --git a/BIN/CC.S.SYM.txt b/BIN/CC.S.SYM.txt index e0516084..a02a28da 100644 --- a/BIN/CC.S.SYM.txt +++ b/BIN/CC.S.SYM.txt @@ -10,9 +10,29 @@ SYM.New >STYA ZPPtr2 T/Q stx ZPPtr3 SC bit bPass2 - bpl SYM.New.1 -* PASS 2 + bmi SYM.New.Pass2 +*-------------------------------------- +SYM.New.Pass1 jsr SYM.BufInitYAXC set buf according C + >PUSHB.G CC.hSyms + >PUSHW ZPLineBufPtr + jsr SCOPE.Push + >SYSCALL SListNewKey + bcs SYM.New.9 + + >STYA.G CC.SymID Y,A = KeyID + + jsr CC.SkipX X = KeyLen + + .DO _DBG_SYM=1 + jsr SYM.DEBUGN + .FIN + + bra SYM.New.2 + +SYM.New.9 rts +*-------------------------------------- +SYM.New.Pass2 >PUSHB.G CC.hSyms >PUSHW ZPLineBufPtr jsr SCOPE.Push >SYSCALL SListLookup @@ -28,23 +48,10 @@ SYM.New >STYA ZPPtr2 T/Q >PUSHWI 65535 all >PUSHWZ From Start >SYSCALL SListGetData - bcc SYM.New.2 + bcs SYM.New.9 -SYM.New.9 rts -*-------------------------------------- -SYM.New.1 jsr SYM.BufInitYAXC set buf according C - - >PUSHB.G CC.hSyms - >PUSHW ZPLineBufPtr - jsr SCOPE.Push - >SYSCALL SListNewKey - bcs SYM.New.9 - - >STYA.G CC.SymID Y,A = KeyID - - jsr CC.SkipX X = KeyLen .DO _DBG_SYM=1 - jsr SYM.DEBUG0 + jsr SYM.DEBUGG .FIN *-------------------------------------- SYM.New.2 jsr CC.GetCharNB @@ -63,6 +70,17 @@ SYM.New.2 jsr CC.GetCharNB .1 cmp #'(' bne SYM.NewV + jsr SYM.GetSymSizeOfInAX + jsr SYM.SetSizeOf + + ldy #SYM.Q + lda (ZPSymBufPtr),y + ora #SYM.Q.FUNC + sta (ZPSymBufPtr),y + + jsr SYM.Store Store this f() with no prototype... + bcs .99 + jmp F.Decl .98 lda #E.CSYN @@ -141,12 +159,7 @@ SYM.SetAddr ldy #SYM.SizeOf jsr SYM.GetSymSizeOfInAX jsr SYM.SetSizeOf -.1 ldy #SYM.Q - lda (ZPSymBufPtr),y - and #SYM.Q.FUNC - bne .9 - - ldy #SYM.SC +.1 ldy #SYM.SC lda (ZPSymBufPtr),y beq SYM.SetAddrG SYM.SC.STATIC @@ -186,17 +199,13 @@ SYM.SetAddrL ldy #SYM.SizeOf+1 bne .9 lda LocalPtr - tax - clc - dey SYM.SizeOf adc (ZPSymBufPtr),y bcs .9 sta LocalPtr - txa ldy #SYM.Addr sta (ZPSymBufPtr),y @@ -466,17 +475,16 @@ SYM.Store clc bit bPass2 bmi .8 - php .DO _DBG_SYM=1 bcc .10 - jsr SYM.DEBUG1 + jsr SYM.DEBUGU bra .11 .10 - jsr SYM.DEBUG2 + jsr SYM.DEBUGS .11 .FIN >PUSHB.G CC.hSyms @@ -506,8 +514,20 @@ SYM.Store clc .3 >SYSCALL SListSetData rts -.8 clc - rts +.8 bcc .9 + + >PUSHB.G CC.hSyms + >PUSHW.G CC.SymID + >PUSHW ZPSymBufPtr + >PUSHWI 65535 all + >PUSHWZ From Start + >SYSCALL SListGetData + + .DO _DBG_SYM=1 + bcs .9 + jsr SYM.DEBUGG + .FIN +.9 rts *-------------------------------------- SYM.Lookup >LDA.G CC.LookupIdx @@ -573,15 +593,15 @@ SYM.Lookup >LDA.G CC.LookupIdx * clc rts *-------------------------------------- -* "B"reak -* "C"ontinue -* "D"efault -* "E"lse -* "F"rameSize -* "J"umptable -* "L"oop -* "S"statement -* e"X"it +* "_B"reak +* "_C"ontinue +* "_D"efault +* "_E"lse +* "_F"rameSize +* "_J"umpTable +* "_L"oop +* "_S"statement +* e"_X"it *-------------------------------------- SYM.NewLabelA bit bPass2 bpl .10 @@ -621,7 +641,7 @@ SYM.NewLabelA bit bPass2 .1 jsr SYM.SetAddrCCode .2 .DO _DBG_SYM=1 - jsr SYM.DEBUG0 + jsr SYM.DEBUGN .FIN >PUSHB.G CC.hSyms @@ -636,7 +656,7 @@ SYM.NewLabelA bit bPass2 .DO _DBG_SYM=1 bcs .99 - jsr SYM.DEBUG2 + jsr SYM.DEBUGS .FIN .99 rts *-------------------------------------- @@ -684,20 +704,34 @@ SYM.LookupLabelA tya >PUSHA KeyID.LO - >PUSHW ZPSymBufPtr + >PUSHWZ allocate >PUSHWI 65535 all >PUSHWZ From Start >SYSCALL SListGetData bcs .99 - ldy #SYM.Addr - lda (ZPSymBufPtr),y + phx + + txa + >SYSCALL GetMemPtr + >STYA ZPLookupPtr - tax + plx + + ldy #SYM.Addr + lda (ZPLookupPtr),y + + pha iny - lda (ZPSymBufPtr),y - tay + lda (ZPLookupPtr),y + pha + + txa + >SYSCALL FreeMem + + ply + plx * clc @@ -804,7 +838,7 @@ SYM.PopValue jsr SYM.GetYASizeOfInAX *-------------------------------------- * out : Y,A = T/Q *-------------------------------------- -SYM.GetTypeInYA ldy #SYM.Q +SYM.GetTQInYA ldy #SYM.Q lda (ZPSymBufPtr),y pha lda (ZPSymBufPtr) @@ -874,7 +908,7 @@ SYM.GetYASizeOfInAX clc rts *-------------------------------------- -* in/out : A,X,C = size +* in/out : A,X = size *-------------------------------------- SYM.SetSizeOf ldy #SYM.SizeOf sta (ZPSymBufPtr),y @@ -903,7 +937,7 @@ SYM.SetAddrYA phy rts *-------------------------------------- .DO _DBG_SYM=1 -SYM.DEBUG0 >PUSHW L.MSG.DEBUG.SYMN +SYM.DEBUGN >PUSHW L.MSG.DEBUG.SYMN >PUSHW.G CC.SymID jsr SCOPE.Push lda (ZPSymBufPtr) @@ -911,30 +945,53 @@ SYM.DEBUG0 >PUSHW L.MSG.DEBUG.SYMN ldy #1 lda (ZPSymBufPtr),y >PUSHA - >PUSHBI 6 + iny + lda (ZPSymBufPtr),y + >PUSHA + >PUSHBI 7 >SYSCALL Printf - >DEBUG +* >DEBUG rts -SYM.DEBUG1 >PUSHW L.MSG.DEBUG.SYMU +SYM.DEBUGU >PUSHW L.MSG.DEBUG.SYMU >PUSHW.G CC.SymID lda (ZPSymBufPtr) >PUSHA ldy #1 lda (ZPSymBufPtr),y >PUSHA - >PUSHBI 4 + iny + lda (ZPSymBufPtr),y + >PUSHA + >PUSHBI 5 >SYSCALL Printf rts -SYM.DEBUG2 >PUSHW L.MSG.DEBUG.SYMS +SYM.DEBUGS >PUSHW L.MSG.DEBUG.SYMS >PUSHW.G CC.SymID lda (ZPSymBufPtr) >PUSHA ldy #1 lda (ZPSymBufPtr),y >PUSHA - >PUSHBI 4 + iny + lda (ZPSymBufPtr),y + >PUSHA + >PUSHBI 5 + >SYSCALL Printf + rts + +SYM.DEBUGG >PUSHW L.MSG.DEBUG.SYMG + >PUSHW.G CC.SymID + lda (ZPSymBufPtr) + >PUSHA + ldy #1 + lda (ZPSymBufPtr),y + >PUSHA + iny + lda (ZPSymBufPtr),y + >PUSHA + >PUSHBI 5 >SYSCALL Printf rts .FIN diff --git a/BIN/CC.S.txt b/BIN/CC.S.txt index 3598cfb9..d6b71b5d 100644 --- a/BIN/CC.S.txt +++ b/BIN/CC.S.txt @@ -55,7 +55,7 @@ SYM.SizeOf .EQ 4 SYM.Addr .EQ 6 SYM.BitO .EQ 8 SYM.BitW .EQ 9 -SYM.ArgSize .EQ 10 +SYM.ScopeID .EQ 10 * * SYM.Def .EQ 14 Funtions : fTQ,a1TQ,a2TQ.... @@ -144,11 +144,11 @@ L.MSG.READING .DA MSG.READING L.MSG.LINKING .DA MSG.LINKING L.MSG.LINKING2 .DA MSG.LINKING2 L.MSG.GENERATING .DA MSG.GENERATING -L.MSG.DEBUG .DA MSG.DEBUG .DO _DBG_SYM=1 L.MSG.DEBUG.SYMN .DA MSG.DEBUG.SYMN L.MSG.DEBUG.SYMU .DA MSG.DEBUG.SYMU L.MSG.DEBUG.SYMS .DA MSG.DEBUG.SYMS +L.MSG.DEBUG.SYMG .DA MSG.DEBUG.SYMG .FIN .DO _DBG_SCOPE=1 L.MSG.DEBUG.SCIN .DA MSG.DEBUG.SCIN @@ -389,7 +389,7 @@ CS.RUN.CLOOP jsr CORE.CompileFile *-------------------------------------- .1 jsr PrintSummary bcs .99 - + >DEBUG jsr CC.Link bcs .99 >DEBUG @@ -456,7 +456,7 @@ CS.RUN.ARGS inc ArgIndex bra .90 -.2 cpx #4 +.2 cpx #2 LIB bcc .3 inc ArgIndex @@ -537,9 +537,16 @@ PrintVerboseMsg .DO _DBG_SCOPE=1 >PUSHW L.MSG.DEBUG.SC jsr SCOPE.Push + + lda ScopeIdx + sec + sbc #CC.ScopeIDs + lsr + >PUSHA + >PUSHB LocalPtr >PUSHB LocalFrame - >PUSHBI 4 + >PUSHBI 5 >SYSCALL PrintF * >DEBUG .FIN @@ -565,49 +572,6 @@ PrintVerboseMsg rts *-------------------------------------- -PrintDebugMsg >PUSHW L.MSG.DEBUG - - >PUSHW ZPCCCode - >PUSHW ZPCCConst - >PUSHW ZPCCData - - lda pStack - clc - adc #8 - pha - lda pStack+1 - adc #0 - >PUSHA - pla - >PUSHA - - >PUSHB LocalPtr - - >PUSHW ZPCCStack - - >PUSHB CStackPtr - tay - beq .1 - - lda (ZPCCStack),y - pha - iny - lda (ZPCCStack),y - ply - -.1 >PUSHYA - - lda ScopeIdx - sec - sbc #CC.ScopeIDs - lsr - >PUSHA - - >PUSHBI 15 - >SYSCALL PrintF - >DEBUG - rts -*-------------------------------------- PrintErrorMsg >LDA.G CC.hDefineBuf beq .10 @@ -685,24 +649,22 @@ CS.END *-------------------------------------- MSG.GREETINGS .CZ "\r\nA2osX C Compiler %d.%d\r\n\r\n" MSG.USAGE .CS "Usage : CC