From 28dac6c780c79df89ae297dd31b140526da46efc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Tue, 25 Feb 2020 17:42:22 +0100 Subject: [PATCH] Kernel 0.94 --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes BIN/ASM.S.DIR.txt | 8 +-- BIN/ASM.S.EXP.txt | 47 ++++++++++++++--- BIN/ASM.S.FIO.txt | 18 ++++++- BIN/ASM.S.MAC.txt | 108 ++++++++++++++++++++++----------------- BIN/ASM.S.OUT.txt | 5 +- BIN/ASM.S.SRC.txt | 61 ++++++++++------------ BIN/ASM.S.SYM.txt | 23 ++------- BIN/ASM.S.txt | 50 ++++++++---------- 9 files changed, 178 insertions(+), 142 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index f859540ab52ab184d7de1d4834f25d145f1f73ed..0c73830aaacbc497dac3089cba2529124522558b 100644 GIT binary patch delta 43492 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 QlKz(d@hqYA^XyphUq4U%lmGw# delta 43597 zcmZ^M34ByV@_)}H1236OjyLn>$U%l28Vc06|bLAt-q4Bm%;s zAb8NCs1X%DxF2ePaF09TFcu`6D9uIm}`z}x?~y8F$6{^b+rz3T4j>gww5>Zaps8~W|n&~KaL?teF>U*mWP5LSuGc)uFqyO3i}zo?0x2+Q|Qw+wVoaKQ0v+8_xBlS z{}0=>bYW{}ZYk4WXS>EX&uOlztgGv+Ty@S&mUJAD;Ed)eb1IqV4PH9f?Y6whzbdYG zC2DW6UF~aIneT1BwJqKgN;|=Jox6Hf=cL-kK<)A+?aclz+ckf|>dwF@miE3(Yo1fD z(msf!eI(QBE2~u6e(l79gv;`zkd&JyPO)lP_2r|ex6U)Cous+5i1z?Z+Pk4oBT*)@N8TW6r0 z6>sAAzpEEnHuJaM)zd9o_@V33EBY0dT?>}2?9442UbbOG@vt(MbR~+kosVuQVfr=; z`hHz!Ze??QAXqhU7_(hv*~JpKTLPtgVcR;U@1P8=orNo_TiaWU2CZY-)s|f=7q_z1 zYk+uVxG1wIlwaXnsFF6|7ImTp|SVnOTD zL7i3YYdgoGwYFU-T6_cFa(#SJ(r!>ux|1sN-At|VX5C`h)!w>}xw`PXw)OJKZS9>C zTNj+ySzFD#xAI%x*4@^O+j!Eh_;lwTmOvR_xwMsOdo8<`EMLdGcTxsV!CjVJ3)|K* z`#wc)8PonMbJ*{ZjRnQt{UWpbUR1QMl_lM0DZXZWbWOYu_$gIVq~{OTLxb4EUE+10vy;pt7V{~uT+B!$_I zST?cbqe@z+r7Zn93*Y{#?#=#ZB-isGSbITq4)eY!CGYax@el5{HDqE=+7x`)_E7NQ zJ{O!C`F;T#Ghl$0%ihnbn_XzQ-?A2w3^oUh^`0(&XN%r<1<>_U6;L%*~+ z2AyeniWeVt__;Mc&1C~)GM?sd&Z|$aeg;Dyk_w^%)iVM$)21=||EcK`qvr_QwYoie za5#@qVt7!X40Aun4HRnFIppxi^|_qmA@}5&;Ecv`FBS@-r1b!$^(0nKW4;|nucux3ubAW z*0fJ#?u<_v|7UBxFB!A580Vvy4HGlJ`#noP!-=^!nnl4W%zaX@DD<@=3iBZD2}s=ctm66RWD2_LIu=vn0JqknZ~xlWSeI zSP6K-P4&r+-%OfEv2?~y%&+&QTOiG6c7EuldbcHsKlQZ3V@c-!dD_u$R!Zz3oHT1%%_L?|RikSt zOVcf4fvuSx4AflEx|G?SVT?W((lE`_0y|^n!q)b-$xBzvN1hUc*FWPJV)5`xpKrvn?!%EOqJiJ?pDRhFDqGP1eez2uxF?WH4F($J_J!)Q5!GCI^=3DuJhLrxLa>6~;tKeN3J9Dpk>Nrd3M@B-U60zM-5J zL)WCRxS449JOAhKou!=t30l3Bxuzn+X|2`juxw*Bbk!rRaas%~JPnq>FiyH#EESDJ zh0x!;LBXrMCIu;Hj%j8)I}4b-8E|4iIdf0vza4QHl`~WeN||G(nG>wC&r&&uGsheg zPMn$xxZ+g$nU=tC&P%81uH>Y%2oKSKjy_wUPWn?Ab;dj)mm^xFu-IE6P9&F|EOCB# z(OsYMH3=XS~P+FL=M9Kzfw~Z^?mQPx; zw2j%$Meg+TEd22HdT;-wN@SO*3YW_Y`>hZa*41v~oehQ&S{be^ZIxM1U0`~ku9kUL zM?@LA&D6Ga7p_>fklEYAMeJ*2j=)Ifx-cel)#BDw%)VCTLYl~RoWnm7lmzgp*aLaR! zj6|rUn14H&aXD{&&f&CXZQ^5|b7UrNMx9Fu{uhF~3b!b}1gaVvwuG02x>|Z?3D8?5 zmMaC8g6yr4?2{&KJ3YS!O_rvtz5jIdvl>^)8g`gP>QAcy?=0bJvxaLVo!Qs&;!hm? z5~00HI(G^z7S7N4#F3QEl(9!3sIT0nCJ$O<>bd_@M<2&+=(=S~Fg)0RJ1o4< zCBeL;y#UD_LHb>^etE0i`@+2+Xbc9L=QNNaG$pDhdy<9M?oDnN2BdN$iA~1nQ4=yP(Tm29RNJ#API+PDJ_)7{XF$Ehs*sp*+<#~ zvVpb-ku~EXKKe69dgjA|z06L!@u;1m{g0{<`xsyOnIqfsI4}L&;mUA5VUC&zeKzR9 z%sBMWq0bzPEi?XOuF>Vt(Oy5Dz0TuGiJolsr$t|T$}J<&zeE2Td4zDoT-rG6+=C&|>0RO)|K>c=v*R_RhI z^%Ir)sYspCEK)<-XDaz~nXG>yk|ohwRxZYJ{v}QHYnk2~)69WGnd>WB24hu2?WEkz zXr3^6xr1cE@k#_l{}R)?K?~dD;KY2+9|37D#Q0w$J)-^p)BzSS|(|Q(SJOh zmHf^;)dN@o8_D}6tJv6SHmlsx^|4B{Fl6+#Mk|?Uyj>%RBsIZmlA35eeeBr@7r2`iO(lX{P<(-K^ zPjVSRw5F8~ThFkjFS7?dA^R|fcOmz-;p|$LIs)%yJ0+fC;2CM+flQBzQK6}IqX{Bf zXN*BXxw(vN+V!z=r=s+}LFmG9Og3~p{jN=cu7V2Wrkr^zdFh8fx79aM5N91!#jmgj z2PRdUgfmYK56#rwmP!2lfyo}rWRY)}YYOV-lIFaE^;6o`Rxo?5BD{<_&rnt%XlhvA zkj%VOC4xGBxL)^IJ@tHhQqY~$pvnwo?jSF%(+x|L%r{NsD|a`uz))4ufP(ca7PPl6 zMOD*Pv0==Z5mQwoWnkW!63HxqBsFCYgW4mhEdYlvAC!Fgpp?r8r9L<)O}i}gaK_ne zLIz`R`xo>dkyD;?<=6+t9Uk}mxYx&hIPU9lmhma$v&Pqr8#umf{N(X7#xEGZX8i8) z2gg4+{;}~-jh{De?YQ0J7F28+`|@~K#q^4q6=zmFJZ5dqB{>)6yq5EB&ZOK+a}VO* z|K+}!douUC-0yQ!@`8Eu@{UISEsQ+oy^eo@{1y43{2TIj=R5Ka=Kn4K!Tg8w>&9C1 z`{pO*r{%lzGxGiU`T3U?Tv)KGU_-$b1rHQFjejo}yjSpPK|-OcaA09g;i^K$x>64O zt9SlB%bs)n>~Y@OFD|`uOP6KGasR=>?q+}M$nFOJ!hzkj{%-?a47qxdt9#6b_cp%2 zrOUeGcm!6k;l##ww{*qrIPPuX!Irpm>!am-!hLCHO-wE6vK%`M1f&*`$z|E&J$e8|7ja*L~X9B=WqlyCR$W9M#lGyj1R-6M_; z?n&G?AxXX!ZgsJ(1`_xs|4PdYU0bsK?R{P4E&C1jyo>cF4sx?pYi&o}wI!hElALba zK8EKO|8*m}&+>no-#u;roC?S6ik_+aXI9ky23-4R(XYXFOZ5GY`g_xl4(b^~ne%04 z$E=E;4CDtrU$|J0?F)nTChSN4YfD1gzW}-W{#xEbL{Ke*s9^EEGb(zld#qjTk(m|9 z*6llTtmhkQOd9YzfZv9f?XT?X@}hWG=7HnsN44%kDnEeA_ZOfY$CqT@g?dpxNOsJr z=(X1YOVZ3GX(%%i`HuJFodrquNIqMVrhN|{eO9xl6 zjAY(YsHcaprJi3gaAJ^DjA&mNq`qY~Y|NPtyK>WNg1LP0q}sZghRXUH<{4t)oiFuq{mCei z1!J~LNm09YeP~4G!fM~v&h%jtLM99a87?8DoJxodn|0vBdLf2UseS<@HMyF06srJjSubEwi!a)4{GNmm)~y}I6K^`0xJ%5|K_ zqmL7BMFgw>+aisrTCr^9 z8nSF%MS2b#6x(^~4Bg1z@%xrFPGyd3Om@Ns;JKDt^q|{3@xd3}yZAA%XFy?UzKVtgQH6e!>|nvUKx`S-O#QfLH}%U^&aYpSR4?Gkkvo1p2$# z6{c7eKfsr`ff6GNC>qdo}%0{?zt*U&dpyvlAaD842BCNTi5!mz#3Lq&#$l43oH%%sY-oNToAqcZda3&TU#(Rrt#bsJwL74oXVIs zT`Ubect>APf6)+F?ucIJ9L%D!229k|YnH8Kt~2?L7TxKDtuDNHLl9T9A!qZ4TJ%5& z7CV?u;C7lPaoAdDnrx*Vqe*J8b=B%NIUUcZDN~poZ3}1~Tqx(k@ERm?B`yk^pJ1{h z!V;H|mLa@_Fw2?NOj@;)+o?#+s#R>{QcLmmqS=ni>RZoi>s-BNRa@uM*1hxfM5AqO zyELM~!y^cQ5FFvz6N4EukE%|AH4`2lxn+RW(*7LaG=T#CPZK^5@aMzu#23uTKzmV* z?;hFVSugPpcQDiWFXV;$kOZv0u^N(>^)kQD9n8q^y&@(60lXs0YR}xS^4?|8LSEw& zmg}wo|5lO){}1uOcs*RKY#8in@JvEYIxg}Sydm=@yeaZt#*DYZnTM9i%-B4=Eiz}k zqcX#>55(xccO~Wi_ZYu>x!x}XufA%&0e?PiK*g|9Bc0hl45w>w@{?&=gKwYaO3%lb zwxFHCoG9jy;NUVcD!Tti;u~e=3JPD!CkjtF^M0zvKuusq124LxDanA73Btv+&t>xm zeL)Q8=edFfPIC9Jo*(gcFr!xt&d^tiW$^bC%e1d$!;EhPH((>HX`BXbhz+&tJEAE( z;Y^#18BB-giS$7=ix32U{-{0zMEgO_a_~b*y^wrRqP~#!v#RhHvqG5U!xjGa2Ngn< zCMR=Lh44z9R-sjySK=^$gd)l`=+~lwHfb(0`dEnF=b?p_4b|ZaH5$^VwJWUmO#4}k_fw}jvOoCq=1r55) z4lalR;ayLGVn(6hKA1mw+Vm|nLrK{WG|zw&0y?!-%63#ENPwYi3*L=Xyo186 zcxQ*6t=37;XhnAoFKpKxuEa4kF$)M2x2^_xP_q?z8q{nWv#yDMKpE8Q)$?O0 zgMxh;Wl*yPWs?+Tq-D!qwND|+uzEnJfWj>}S`(NF=QJw84B-Ag?E-I3DvbQO110Gk+c7(iaDwZ=&1%cfOv(caAt~RXmGuu28>K0!5XK1{zTL>MzwgJI#v#V=@)2Cp% zg8axKY+Hc584LNnlY;5RZJ?Rd!$nf{vYmr8*J7b&N<*3IeD@N5-=B3O?_3fn6>Ztv z-rCNR&NBrQ2B4)VoxO~Ab?90BUCR|2%@`FJhtp?IXZ96}iZbRqpQk)I-J{!A0YqaN zLw+@id)s;U+Zq+2}89VCkD2yzlp&wrCMg*akCU-kU`f>eBC&Y4@Qx1MlW>JB zn7x&F*v|>;1&MT2x$XR=4(wxhpyBqbrA#6o({l~Kb-nHy$+T;wyz1ATUedM`MKms} z)2>(Dy$isM8+c`>o}PK56b1Wk5qK+v_9iK`{cq+McIy6wTV(0iPiV0 zu@Me}O}Y)tBfooT2}`}hlYcoi=$(I;Vsq)JPNwYxLJB9n8$hvd z9LltNq$AF~KRf_ww~EkWS~imJRiS%TfvRZ;LsjJvXry&ZMid|5q0985aR(vNLw5>h zh6A3(iU$M6_}T^-1H}4YSKCn2Fr%I&Jpfcq)b<{&Zp8^!i}tdG_?om%-x9wEt5*dIZ1F8L`pLJIW8&1#^czC%ex6PgxKm zl=QqJeNH8Fz3>Okc#)a`Pi&8B$0+7}3E3#xJkr>-e*vVd&X_;pAAec3w1hcdp=l+0 z7G)`~QftF2Owwy6*D;;{J30w-DFX3f>OX5I?T_uRBO?h|8FL?3k{;8o#v8~$B2>Ns zR^%ni&*?0|X5}r(Tl?E)H7w~JJksog0IJLryl$hO;doc24re*Hv2ZQ?JceJ1f&b1BPYyy7px41RLtP>;tIZy|klT3hSF zNvl>Y6LDXL&BD_{`@O@@bv4>T$M1tA~vX|VaUg1FPd;14>d{}p7k#MLYJ>#B~yZ!tB z>i0h}ygSwZOP>D_KeAb`?{nRV-mzU1c>i;J-s!HnU6Xel-@JIoakOoqaFO0$9)<1U zLeo8airSajHE0ieVrIpT;~yV65#RHzaKa9NKQ&3XQ%m4Ztqbu@f6<$)heqt&qI*Uq zvrBwtVETr+INp;Qj$eloq~h1>5;Qi;VP@O6Xm(+48V{oQ$eYSd=z=kG3cXsmFuZB1 z@S=nic4>y0ZT;-og}VEpo44qTtZ6A;HP5M2H9m3fg_mvBC-7CfnsjS+e}2VQyh=)Yv@pscbI3m(5z(qx5z6(;Orw*PK>FMq=%HFg`_Ov4AdxY zX>Bq_CnCy59_mOKD_XgpB5FhkQ`UG!sOs8US1rFHnhqkuQ$hO{_gri|%vGemb-}6? zlxC}h7UrHPQpnj$SO6z2-KYw$0cQ3h=Bf@aili|hUlA*<;jiq_OVTEx1xgv7j25I% zAs?HOO2Mw!k0=94|EYZR)w;ibom94|zRHCQg$+Cjn-4iVm9RmL{Nk(ifoa%fn0wMD z;B-&pPkj+IbnGZ(PN>J&Ofc^Z;m@0uG}EjI{?}PZNSh7qiahdFf#zUkRSmPxK@LUb zTx4*a`FlcA&cdu*veT>~UHCH%-g1o|uVYIfTY?H&P(GuTU;Je-Jv3jT9mebn)#3~z z9X0}LX*Rh9g~PrGd1=mta()g_I2J1!3u@qeT%r=oaHa|S0!F?}Y5Z@4k$ z#9^_+H|Z{`>k4jpH0Z3`%EGw=)226X5~}hxS;TWyB#{`|xTakQ_V#f7RCaz1tg3KD z`gZWIZqdCVX!6W?O-vRlMcO=hY_#jJ#~}B>PPw?JLyZ?BZX%3nbTAG$O9qz0Qsce; z4^jZPk)p5Ppt@U-Uj>E3fX)v@UL2;2+GJ?ErOs{K#Jjq5SLkMx)u8*+R>t0C_5;)Q zNNUnR~{~SENUFH5wFtVJZKsk{NUX^nI$&b}w^Z z%M$OCHY99RyM@lgvJrpuSTM`#I>^7eu8-4wKikAK=<=d39*}+EdXVq96=%#IlG3Iu zlfwSYw1*W-A5koQEKHYVX-(4%#ZoBlG0dhEu+$JbeAwbG(b^A%*<*u7&q$r0MJj~t z@5F|G5F03f(s(+I)N~=NW7;#I1^XZSvtc&a{tv|r=igx)yKfPmeT>rEogG*`)h5<4_z zsu}x(G$_qt%R<6Ky`1=t*(dr5HT{MaI=I4w=9l)K+8mpOwD*bK>olf)Ao`bAUXF zxeVD(;#~ELs>N*!&VvdlCClysmr27MiFhPbQ3^Yyiq51Nn7?wno@32S=e;L`8GSO4 z!JEk|zY2QFvQ#-NfBgVX%U07=c;5C$y01SnWajXdcjy^?pa?Ke9^Y{XLLTz@S6>HR z+45kcULfb7@Vdwni^Tf5cdu@>L4h`k`H4Gp*SLX7z6VM9_6}y$u&{4fo|Eiku0W*K z@NtV3Yse5@dY2xsl<=0j^bD9B)4mQmtr5eYgfOxeF zFimx?Ubk%i3W^{dsal4EETb5|b%KuL3!@36i&uOT>}wk{mU!5?PdE4rUk7t6v12pGPD3_Pg~&TFRrw z1{*S2l5^;8-B;qk!mwZ^EJhS+Y(GOa5_?9qq*E+aL)(RQbjY@nrPmX6K12YB?rKDL zr3d-EZ-YMDG*X0k&$k$Fnaz}(Zq1s(4}2TUw9KSJ-b8Jd>XX_0t8arI%N(Im@P6MR z(q^t`bynkf%yFj4U2>0~rMNjf9EX%OPco?MyI|i8U#l3**k0557sP$nR86m)S<}os z^Lgv{h(B2v&a9YtWfkvQ?++v~Uxj zD0Nb8Lk07x)jL+c(1MI*VwRA;=?G2Y$jb_bgGu5D7FP0DLSQA-u%^?DUc8Fu?$?Ww zv4~4S8(+Y(*6_Le^~}Hpk%3UN7W**Q+S4Q)6lm*EkOsv?e8;JvE8$`}D7=^Q!~1p5 zfIq7lE9T^I2on_0X&owWC+|HK^bEQzCNEmU$f_rDZcsyQqw3bndF8#jCs%0;@XN=x z-P9Poe__03zit#ex0szbH>hmM#uWf5+eqWe>NcUe7H{Q0eIG1J+D4=ZgOKMcUh+fG z9fHOnx(9Za9g5?K7>EgWC=J5;SjJMIEYOx#m_VWMLua6Y5h;YxWrqSGvSU7n z4iU+Yv^1y=R6sfc$~;9(gVG?ZEvDW8OTvx3_Xk*kpdkq2Ml#1uWJ3Lra+0Z<7U7{bcX5-;P400mHBfokFMxP%Gvy z&l28iH;jjh;wYW9-#*^Zt!G*8=1aTvf@P*k0TlPh<&{i{=;O;*pSNUXXJfE)U}phB zy!3k|Ya*v+^!rQ>DeTM+8PD*_&x5XobU2iG5o#4V!Hq-wjlrtM>Y8YyWcVc0 zQKhdPJ8iUsE$-)tVC9^}0r>V+q965|RPq4s@5keEA z0Eiko%bWy-%4D+#N|jQDC_T8UZPAjom$9Vxk%h!+qxAmAM=;~rsszcS2S{{IA|=oxvFX~Z6=aFF>}J6{+XmX>2nhX+x!>AfVC|3OB64Y z=adUD3*i2cz{pY&Ni5Kr-JyM@aGW%8lrqmZ$a}`HaAs3qv44v^Bv<7u?Yr2K#O$Y3 zd5G@!c%&Z2;mjX^iHk#|g+E3L|8#ocpTmXyzwnITjuIS{HRykXEDQuwbA z>YlSw0TMfvN|um@XOb}o?4j4oa3@?ef&e0!18&3-%rNLx81Utu2WQ@y;U=Kz;!`IU zGCchJhxByAi!_oep=BdRVfr*S1QWqS2x3GOzqzBy&NE@Ie0Mn?3a3q@AHAMZ>rqx+y35DYO?hqR4IC@T~CWsAP}H~ z0g$%wRrQD?Q~eEg+v`z}Ty%39_=}HXipTkV5>QzKTAYfQU$E|SLiAL8fF&WUNpvL6 zCTfUgA_4X^19_QfGPP_zZc3m!4FodDwRa;{D7c#l=t5MJYBAA_)?UW!GgWiTSV%+2 zFyTy_O%fN@#n6X{Yl>-W8X}vb+sf=`nxrw$*)lEHoL&OM0*zHnlR?Gdm||xOCK$5& zhGRkEn9<6=dQ5kvBa%r-;sPm&3Gym{^{@%@?8l+dEaJl-*Rzurn{8yCCA{Tv>|)R5 z7e21%2hO8*z&p8=?nzK|#`N(rIeKynT3OL@e(Z6*aLEc8gG|FAaw~Sn?K{FeF-BZE%GmV28~7!M^o-DrW=0If-7(0Sag!vQ%t+y@N9;G71;i}@ zBzTHb7|cmskqQ#`knEF)C*DS@F-^C=JMa{~H;OKqs!`EfbRibax!Rqw7hQKDXZSj* zX_XC=p~UV}dG3~Za7C7IZsgp<&wL8%<$m7tlz2ig0~Vq@ zR;j@KSwLcB+)vY4xN%Wf(*L&euzD3=|_L*YS&eb~cjy>uOUdz5T|V*47+m zdlXs;U7;l`jgKRroE6h?k(LbW6-HY_?J}lTKR=QzJnrfes92oE{f9J5CpY(qyDOMTgKf+W04#UN<7)iikZvDBK zK}!~*f5t+v=sm9}7{yXwh(W;YFCt0a38D3<@%oY^Cg){Kap&^3b6VS%T+r4zx^n^S zh5X*X>nWjEWBQ<~ipY2ka}o}ynIZ=={v8X!Liryts9}JOkaPSra^64^*=8}#ys5}} zOOliLHVG?i8v-wt?~v0)f}ebZUtKEblj~FRTA@!j$0O1hhhrrxNw11 zb(0s6hrX(~xNRYl0@+D8y=q-uzF?LH-*EYYs2rCsL{|oga2O!Z#iRTct=&nj=y%PX10QqyBdjA!W?R{pLL^yX!%61b)(%c`tMFwxliDGIUK z%jS*MhA+uaImLlAUw{7gv(Qs>!Vq`vACY6vQ^-d#M}8DF+5mZNhF%aUh5ZmB*t9}o z9NaQR;gYEXQ8IEqfTa#Hn{uwWIgHr{D>5J%0qVB!$_`nv4?&`wo%NE~L=3^wNMc!R zB7)9`h7*0maI2N>%^QxIX|)<5uir>4x2m;H8zmtbqpiIEQHRerM&%rfrB9}7OQfNK ze_{kv@}{WF==s{{o<9R{wN6cyJzqyTWzW~ko^J?4+>L)oNl+n&fZLnYeJ8`1K8@}> zf!b*fRHiqBLo34XG`gq9LeTsffM{{ja5W&F6?bySG5x5P=fEQz3OwzY?&KK*ni6^3 zb8r{*OW~CRnz9n$$D*4h`=#;2*EeOA=wZ`?;fk2r;FgfL4W$^u)DynX)h!}V7I?y? z-0)nP+wNxJr4fE(AFNl{cc!Pu;*@83h4U`MjONlZB}F+|EPS;5it){R|EXK^#i4qF z&aYjr&H-!vlwmwu74!3^7xezgaCC_dg10{hcNtb9l4YzXKPrBN(8xwP2gtkxX%#Zzl{AG$3Gfup}Zsz$YN=gb#dCPpKNB zu*@9Z7KGg=|yTA%#~DcI&{bET_D zJ5!={o+U6{PTTFy1uNFjMGI%6E3`ksxCenKN}Z?t8sNj^z)YsKQUQ3~=Ob6*0&-N7 zV(MK;s^mI;%vDh;D&?tIAQNJMS9U zWE7{bFxiHVm7%)p>ssfxEoI5@f{E;qJDlx5pQqJ3oR-x*?dB$9m+|X=b+9gtaeV6iiZB1TFh+p-p z?i&G@mzp_koy4-sh^62R99_)5LGl&CVB1KEmy&mvwF8X2ltd?7tw7 zj~rW4nxy>K$pOGLxVJ>i{gq+v+P0!V<~E-G3buDwQH5}7k?N8QLn)kEax2ShaAvWL zYr^ae-_BuThG$D)zAl1!Cl%o)gUPBCp8m+JlnK|BSXWH$1$pr+y1noQBH~6x#0X~F zjdyskuuV5R_GUm_w}_aEGj3I4xJQavGCWkmdj`7dn0C9AF*|vrgn^CO?nGgVbx|k$ z_Q@Xc+>J=!R}h|Whcim-#c+}IJ;+KyF2rvQz9;c}pZbNLiQa8+GO_f7q9aG%A8tIw zxsW((4=CY%P<0VB%!k!n_K2+7{V0FuRox(m5#|~5sE~-Ba6itkI;Y97Jjt_P)AJl~ z44KQn=P(bx2J_C}`8luYWtM;NuL4cp{!g13HdZcOg%I6!o$y7%LcNgLo&lM@XL;z> zCU5co$-bh?e~DL7?zE$(>q&Xc_=*3X>mCqspV|HiG{*D7zf4|ibX~Bj4EJ;}&kMZi z-?}@cM|B*MaMAQj{M{i^?$FY$7 zs3dh(>_YOBT1fh{B=W&1UDNgp$anl2-BG`Zj&db1SoUdp*Kn4bdLbRxBK4lv1&*Eq2}5ZNi%(n4c$^?;F6cd{g%p7esMYIC?yV zVMzF7FE08hDB>@?sShxU&D6OYltM8Ob_!A`(wH_#;ug0ir3Ym1`i3amT8Y}+m&(n3 zZW(WROV1HE7t=}&@A+{4+wOXgll&ioYABK;VcqhSOA)Z9kK�9j257CvEjlMC@l z;EZpqxGcYHob>n5^+sYzf{3j9a7XYRyPAwC#xx`$`8GUxHn-_bM9ZXsU4 z0126H1s`4WX*3XbBI2yW^$@i&Bo%O>lt>MSsfB{JNcAy9eX(LLy#7n*{vrJ5LdVD^0|PYZ>2tLeKInkFjzp@%OF}eU!gajRLqI%uxW(gWzPlL^EiOg};7G zFV4EaQhZqnY=k0q3?EqNEG!*7zHIpLB9?xkh5Mh=-67U*Ei#o29*%57%Q~U%t?r!J zx^zujXJN1k(KYKNO3y{2a}bAy%UCGfuCkMsmz0Yw(f6|(mzud`wAv;bn<;+=b+~6k z%^vO$iS*jb>AKU-x)h3PqfbBBI&l5kkWLyaZeIJY?(GXd1-0+N_jJqHbJ{!Q%-OkU z>6+Dxv7GD6Fz-eyPfS}*7n-7nSE!*0MhUK*k0#*0I(?O;3ZEuuteIKUFnxY7BD>V3UfSaS1N98l^veFjW<1GIC)97vriui zI?KK)3V@Ifmc2a;uv>P7pZoLyn^^YMQ2^{>S@tzi0MN{EQ**ciF9t2*$7RilJE@;) zaBWux=f|?0>7nasbi<9`nN!)E!&2atF<+$Z;!kN@p?z( zwJC?C!iS@(LpURn;mc9)Q;77t)N80Shmup_&QZy=4HH4j-O=x*0Q@x?PzJy~(SV@< z?2iTv0|36C2+rXE+!qZP0YJAU6qRKpAP1telml=u8ZZi!-ya6l)gt|GQLoL^Web+y|~f~X(hI5J-+0cq+#!tc2B9L;??>Rn`b zCJexx<;d`C)Vs(4hmyjGNO)v867@c5k_V(6jgWRsl9uxv|2D_j-||oH$#oW3p63<0 zPQU*Jndo`ZLZS5|hL@CG8K|7wnL|%Gtg?rPa-9<_FY%{xos$q|);G^N7-43^^PJ@f zGh3eL%(1-6cMuT!5CZ<2f1l?ZSpOf3d4NNr%bzlMa}M*pZh}k0;QYmx=djGoC7TH^Rowl`Iz7B;gDW%S_{CB!sF^nXN^&g8 zYf86CbRK4nS%Ef5u-hWRYQa%78deFF3yi|xj2A$0gh{oqpDlv4nV&3l>efD1-lxdv z4{0Jromm$cgeQq;pdc1vUH6B6V?=lImM#y@X6ANz#re_Q(<}B_x6Y{8J+or>tcu;U zD|XMR@E;n{{m9V(j+2h=N$`6My5s8pJD}xgagVcW$ey?Z$8VZhvH4i)DV!Ju+`oQA zx8@Hm9@hP5ydBN!>FfXduyGB*@!a9v=X5MTIslKx@b0rZ791_;$)uyE)BLv- zir=FJy?t;A@5GKNcCj|e*>pm|LyNHV*9`Rc_X@yZ|U;wIKC(Ti5V3)&8-08bvj|{ zF7|`yCvfSoywSJk;Jq^|diVP;8MECf4&?6L*Rgea#qJpuxX+hv6#mbs?S7H4)l48P z4u8Xl?caf0Cy$2a^?u=P*+09YBMw-%&aBvH0cTMh{Dvac0HYGb_O8W2xV?h}W#x*Ky%j|G+{Rm+EdQ+~Z-SK*ZBTHOro2_MeE9S2I{42J|xoH1!q%`{Vx zllfIB5K0x-&CkMDHpDQ5bfpOhnMDNz1JG%uDAf8D3zsZf(zZ$ox637_wR8DN!2o_Aj^>(TnUj{E(>hxMNdF@hXcBr4ofNxGUHmG6Z z%$8-QM1lGX5KcjbbGdR%5Pelc4o_FE38U{|C|I5e!?K}Z&H(~eUm0keZ`PVxC}6=V z!8pY37O8i9H$e~vP_YTBo?(IpS)rCmcZee2GgyGaj+RY(mpk{Co8r_W`@7acJ+3=v zeZ$F(Uw2I;bXT7|_`%*|t_#kM^6bH*I@5FtGHsUnsKIQ2q%R%g?1 ziLBE0n|M~(@p?8~gV=rh{v5m=U#&4cr460gW z5(antIaFvp%cw|{J9fG9zpqdQ z;Duco?S(xbaOH(vCB3k#DW~+pwhJ$8(wZ>DxPa<+g)UUsMlo$IYA4UoI`w;z`n_2F zULt?(mn!cpKAiDq<(*}zA@C{EcTDeyc_*fH#zMf9%dESmMioNPi+z2BoDHhOHv%L( z+L%zSr4&4H_QHNe3!5LSo4&AEY+az4ON_J>qJGWOEgF`#aiqWCh z#C8^Fzcv;E+OLa+;L901&CV#rfoKkN!aP;N9J|bf5+vN9S_3z??M5q1fxF>lFWK2& ze8MoV1krUj5#~t0+ipg#^jl=-r*$bZVNAOf@T@)DQf*|G-DXzDY_|iPc897meClzp z%7Air627~Hgrw~wbV5RGcLVJEt8~`i69MlB*m1Af0&3cQW?eA7byMmAGZpQ#A4IA& z0NUuVSeW#0UV>AB=e?5qU^L%xelMdhFrYOc0Sr6mh8jQKI=V(eIwe z!8YpmCs2T#0#70>?8!oALn0A!a0C92s3Rp223{md2d-&pfg3t*m zdf|Nd3@*_I0l}H7_hh_FI1wFYyldzs{aKX8xG-3 z{533}zbW}-al%q+SmFqK?P}bt9Hz);jpOyTh9?vk7exWxy=)RkB*e#sNwCF9vuz)M z6bXIfh%+OV5+y{lD+-bn1yC#_6gc7_==}X!!-X$GeqU>3hEim8lG>=e zfpXk&sp?OQ)UT`how7EM>-V)#Nh41BJ=}^Yk0i?HRoRss*0u4h$wuE4hY$JDBjP?x z92ehrhLMq+X~J;Zb!L`;g|bapCFU?c$ReR1#Zvm4@VRtOGAYMQ8O0oVW)con+4Ic= zmNLMEi=&l}f;jc{4Z7;7P>{W`s;YCzqRyo&E^J%1pcR)BCHjlvAc{19B^BdITx8aX zLo2d%-a&CVijTVzI+=TL+#f{oc>}U~$?Uqe_V%__xch=>Llk>T6nkXSX2}w2YH5V- zGLvr6RPWH=qYM#F$8a+rwR=RQ{74fn+U+g>|1@=!*;3Ew7@~lCqZoQ)B+a>FRkHdj z=B9I3^PB37w9q(JCG?;1W|h>GiU=taO!y>my0ucJ;2PG6W(pBs6)90|!WW4WHIyQb z7dR$I^ZOz>HkfVJ8kO7z zWh2v@Vj5YpiKjFe{Vbz+purez_08s%2E&^%Cqn03lg^PuXXcswxq2g`^sF%cvlae7 zN&LnxE8 zSjE>j8aaGS&=@;bzaS2?dz8x^UzP+i%xN?f%;So#wWs9*>$2DJtRPr@5pN9|?i9zx ziln>}e2)7P0(#0Xl?>4SESZY=H3}L4K_L%HY(v2N45JCX8?CNm0+pi&9Av)E-GOwj2DJp(*J?w+y z@K=o3&g(=Ca=ApECdx@AFfE-rPh%fWS?Ux9dM)B4nB99krmpFPKbm8 z6SGrqilLtAH=89ya4@m>meUInX^9VYj2A!3CQiSCBf1=PA>_T z_TS5gH5>lIJHtcZE-7KoeL@h`ohjmj(HVEg?cx*8uJ>fv{|aVERl{~q9ECASDfZqQ z$6q?+aF4q$PDJ17-I565=RNB0Nu}HGrtI_kuNc&A9Q>feOAqIhJ#9ErPtw~0|8=}> zIz;=5K?gq|z(7j=QY7Qy1K9Z9lNc7`GCHK&Dg8xC?>O3Wx3JVTc1=8R{H`rKPSP(v zjJ5?fO-IkDE*J^OM9?)^{%)2(cYIC2J5GuuD!7l~k$*qkNa+LA6Xg|mPVS#!xQ4>a zsG}|emG&m!L3~B*r@C(j?|T5IJlG4#J|RBsMs^4PEdi81XNFN1s{H6=kM*OkkDlE# z^5Dtdaq2C%C*h9o5=wTwcckNuqovyi939=AQ-s_0js?2Y51s<}qf;pL{V_D|u^sRA z#vSSSTiuDlq8@xB?yk-F?~WgK^lrZ6#~r;edH{BGLT`K5lmo}7be$pE?p-qVF5JpD zuB%qOcEO}V*Zb|c9A=X4h7CV#{P8#pN5368@I$W#gX}37N`AP$H|gW@wjVbBu>GTt ze(ZR!tD2uX)5soCEw1%@5N$*~qs4zaj^A~lSK4Jz9o2QduXOn6r6ke zH+Ouy;nc?Osj5>wKOO5$zP?xYww>B|YWrs&ec$o%^>_EiUF2=K2we1ZoduiEp7^do zXa+vp_5&Vgq79qz*fmQShR)VSJ=;vmgi7&+whn3sNUoMHsbd{Y*WAtUxTq zIZ%=e5?+<-u5YP2t9yr8c2s`yJp+)>y`|C9WtR}6pd*D54V zh5~1W;{IgamY4(U{ZVG=f=`nNV;@*_IyJqoAwz++CW>g?^uFRYxe)hx1k#g5&d~uO5 zT;KC80Q4lPYMF~U2~`}8>+#a~OX@1deW-mf3jO~r@&6py$GT==uJ$gO#lP6*t`40g zW{{rveehegAe}rs1xJf}bB~Vc&7R^PJaTb&3KoL}H2veD=j)EyT?2v9R`MHka%OQToc6Uzb*Rt+DbrXl~yR*Dy_ks$zsc`S=;h`PV$g!1q`zLpNO4qA851zVP zPWcB zJTbGPOw+ zibT@m0W~GMnUQkMQn}`K4f3MMSI4)`tT+NF9%kWTHa*P7!yI~;Q*jZ=UT;&xtqM&yjt5=xSc!jRb}>BB*gA@K_WeyaC`XCcOEC*N-mh?!PBKd1ggmRz+ZTMPN=v zsM~R@=SzpEqT_ks16C7fT?FTqBf7^ExqpZiiCH8HiF@J_15voU`yT80;&h}_!bp#n zLIWFG(lfHiq7av2V4ecWMMQEQk(@0umGpSdh(gTY{)gAE55>*JM_xMBlMeb1e9&w2 z59O(^c>C>r+M8PRamQ0Xmbcv7Irgp2vAs5o2x8T}E5^RHBI%0o|cQLvf zV*(vsjQ+-8K#v!r!?(__=pMPp8qMnN0#LetX2r63)SoE3tfc~_QFK{r1q!3&viTJ# z+fq*7neFZC#dl_LX>-ez{o~|JI#&Ex7V{xlaRxv4RqsML<6eB#Tbck>^)zsjUF6HP{#ed?7Ww+oZ|@@C!1%LAch~ZF&+!?2*f~C5{P&~% z$-LHe2t1Jf&7x@?b3uh{X?=G5=$a_dE>?iQ2lRH1-Zkvn}#*Er1fKjV(*lFe9Io*LBi z{XUj=DmA_fUc(oCHR)3h9KYzuOCR;P_OK%dKDudU#m96NG*!Uwe9<>+Z;vlABV-9F0i8;%vil8kV*RssXhl>?ko0)Zh>Z9jL*lALv@i92}pK1(^*eXjmG~&cu}S zZsX^F6?9i=I735ctTwfYUK%1JZ6fjRtYQ8}$P&9l8bi$jV(_vT^U5KI<_0TI-5Mout+=e7Z7xHe!#| zgq*jDd!H4{x6!?F18(Qr-uC4;+yP8N-(ohLrD1NIqEW%})D)=;Gwm*U&O>}8Vr?tK zp&DWIfCD3Z=QErb?!R)&J3eD7j@O7ILpWh0y<{vIhieo=aoef5%1u>Dr)+%mfe3jB zXrj7YTAo&P-OpR!@j2^o<|cfaz^stDaRTQLNX2;^I(=q;Nc9j7LE~JGC_V?l-H-66 z-tqYgA5~{da5jg@4_=aiPkTaXkWWg!6&>Q14}66~>5evGFT~eA{;rV4QfmAoip07l z6U!bv;rrFH_dTCg6W3oe-_vv&#S==xc^wm%7w2`%1El2SSWhg6BT73W8JKVs3MSE| zAN$=&mFIqUQUxb?gjpM59naGdrYN%+6mR#7;%pDESszR-!dV_EW{kcW5hLkIILadg zViYcrc$LJ`qrV1_Fga{&Td@?E>ty|h&;8Jsne@8KTF#0P{r0fK!*_k?OUuK#9YF~8 zKX22NKo@IK%Yq1T{(o(qc|cS}9LFE%;)7KX*kxe>Sp<(T3@i_fMLbAdH9@pIG9&RU z67T3*$yhZlZ>Q|i4zfEdk1oZlL(A0E4v)OWE04XIV-KMc|944ud8J~^)!!m*8zVn(#HYe6K!)^+uT zBPplVvQE;$$*4CGk!^UJOi}$tl3HPsVCz&Bjg3x^*6C_pq!fveY(7m?ZwBRNEG10n zK927pM-4$pwmcZ9!4Q~jn25xdFTfB^$~+50+;!FaH4IFN*lTVOFXgs5qa8{r7LRz-!ojdEf^0JdR8z_osh7CoB-3)MK!a3_pK4Rem_!hv{e^w^v$W7K`c zIKri4aZ5bea3Jtn{}Oq|=1&nDN^^q}A5&d19P?!lAGJooq%ozcXQ^XBfOxAk*B-l2 zEoNDStveR`^QVjnl-rykR@8Q*Cu3%A#}c(d>QcSkWp$Iii(L{e0^2bWaLr>C|D>4E z%o!KBT&+4Dq1F7DG1WYTI-uWynCjX;Ky3-J)fkXltzsgMng=C{@zd4w4EVDMLDaHV zLG(16!?>43;{<1{7xB?NQr4HzRYcEevr0u|#=jCEPm~G8i|Wa7#6ffV3=`qc@-Kp% zjA*er!Rcs$SY^XRgfi<&2SSr|;nl}V z{#5&VvHRTk$W%LHkyQsq?wx!_AxE*{kFy~ZndL2sU*SQ=T9V5Jkpf;bQlnt=r10*RnGNCL^A1!xIcf!5#} zkOJC(Ye6b#3$9yNurh6Pd2oKOw)stpClnX1OLSTH2KYSbK2JNJ=X#A`+B&(p!@ z>FD!x@_90Rp3Xkcjpd$9pBHCdtH=i$4Up%)dBi z8Ahp&~zrEH18rsbr$DyYK} z%cL--WxF(;6k?X-%(?1~KIZ{4!V=WEm((glzV3BlPh`VyG--}fjcetk8KK|9$wP0 zWMHj`&g}LyzNmbEW@v=}nrn(7dtN#*?&PKg{i2<2eWqr~GqsFkP0FXG@!4WROLv^7 zn>y3Y9&A8L3|o%;s|IW?Dj3O5ZDvpPo!LwMwe;qX_xO)4&q2e{N42g)`s!u+VVUro zYc7LqXx?A9Ou9^<<>XL}V@6H!H}GbzuDSA5&4s}rRiDCq;XIic?;WTQb&Y4^DV+@K zAe~tmhW*z1YU{zQ$}wif5bTwGD3(yu(A8+)hN*OIx7BXndiOxw#c-WRw+Hljl+<*b2)}Wjehwfsa)J5gYW$S~aiu4m*bVxjKN3?RsBo z9V#PihdP4#s>%F9Fa2e`OULaL*9N#_^S|PTcj-lU*SlyKTHESM)G*QLvOGG_&en6S z61Pt*$A&}E>LP$nE!yH+u_eHroQY;uZAjLny4ta@#WfG;jUKFbqmDypg?9(p92T^> zMj{&ATJ2cZ@<4a8SI*!hODry9(d`#)v3&l2RONK!F@H|8UU{6?578&EA$^bH-z8MT zMmQR2e*&@s2|Hc;mZK7T!IoOza-8K(W7=sIry85#%QPm<}B(Z zl_6HObI)Ac+TAOtVH20jC01vTJ&XCdwtEYhALeSjct_B)&sI?9JmmO-b6*=UxxvqgcC{jw`7;n0sZqu__(YEVsVMvDT?+-2a8EL z?#RHj4x(b1+ZlwO%dX_^BCjwjN*o*6rI~o(b$7Jbx+6PYq)l=+Y>?bNO%!)^M~Rri zE^(q_vO6j;EnQ6XW~GYkVt1IhSlA_A+%e4^)Uey2p8ZAQG;F8Oye`3F?wRaRv0zzO zOCy;A(#tDy+eD+C*(wdpR+4x)D=tWlJs~FMxNU*y?Zt|z?slRq02^gmSSYW3cBUNv#S3qSJ7iX~4sMVIx`1rZ6?6mL zK@X4vZUQ|)FVGu!Kp)T-^aD48{va3RfdL>N3if@ z4W0qdg6F^ruo65EUH~tGmq0mq8LR@YfLFn5;C1i@coVz@-Uh3|JK$aL9#{j`f^}d$ zcprQKJ_H|ukHH485mbOpU^CbPwt{Wo6Ywec415l@gB{=t@Fmy@z5=_zZmVa1Us}q$$b*65lGATEeMRlRFsjgHvsyo$#%Asze zdQ!cp-js*xL-nQlQ8!clsaz_L8bIY!1F1pOE!3^lU}^|8lp03eMh&NKr$$hBPzBVT z)JUq38byt!#!zFaanyL~F6wToh`NWGKowIHsY%piY6>-#nnq2h?xjko`>6Y=2dD?B zhbS*KgDRySre;!)P-T>lnnlf~=1`APbE$dMW7Ol+d};x;kXl47rj}4ksb!R)o}iwj zmQznrPgBoO&r;7(E2x#!^VAE}i_}Y0IrTENih6~5m3obOoqB_MlX{DKn_5l1L%mDA zN3EgOQtPPo)ce#2)Q8kZ)W_5YY9m!aZK5_)Td1wnHtG}VQ|dG7b80)agZhH{lG;gq zMeU+?Q+uedslC)bYCrW2^)2-s^*wcfI!GO&4pTo+N2sIJG3q#Vf;vf^qE1tl)EVk5 zb&fhuU7&uXE>f4M%hVO>C+cVF7wRhYEA<=oJM{LDA.G ASM.DU.ON jsr DIR.SavePC clc rts + DIR.DU.ERR lda #E.ILLEGAL.DIR sec rts @@ -204,9 +205,6 @@ DIR.ED >LDA.G ASM.DU.ON clc rts -.9 lda #E.ILLEGAL.DIR - sec - rts *--------------------------------------- DIR.EL >LDA.G ASM.DO.StackPtr beq .9 @@ -242,6 +240,7 @@ DIR.EP >LDA.G ASM.PH.ON jsr DIR.RestorePC clc rts + .9 lda #E.ILLEGAL.DIR sec rts @@ -445,6 +444,7 @@ DIR.OP jsr SRC.GetNextCharNB >LDYA ZPLinePtr jmp FIO.LOAD.CPU + DIR.OP.SYNERR lda #E.SYNTAX.ERROR sec rts @@ -469,12 +469,14 @@ DIR.PG clc *--------------------------------------- DIR.PH >LDA.G ASM.PH.ON bmi .9 + lda #$80 sta (pData),y ldy #ASM.PC.PH jsr DIR.SavePC jmp DIR.OR + .9 lda #E.ILLEGAL.DIR sec rts diff --git a/BIN/ASM.S.EXP.txt b/BIN/ASM.S.EXP.txt index 95f3424f..cccd3260 100644 --- a/BIN/ASM.S.EXP.txt +++ b/BIN/ASM.S.EXP.txt @@ -41,21 +41,35 @@ EXP.Eval.Next stz SRC.ACC.F stz SRC.ACC+3 jsr SRC.GetChar bcs EXP.Eval.Missing - cmp #'.' Local Label? - beq .13 - cmp #':' + cmp #'.' Local Label? bne .12 -.13 jsr EXP.GetLocal - bcs .14 + + >LDA.G MAC.StkPtr + bne .9 illegal OUTSIDE macro + + jsr EXP.GetLocal + bra .13 + +.12 cmp #':' + bne .14 + + >LDA.G MAC.StkPtr + beq .9 illegal OUTSIDE macro + + jsr EXP.GetLocal + +.13 bcs .19 + jmp EXP.EvalOperator -.14 rts +.19 rts -.12 cmp #'*' +.14 cmp #'*' bne .10 ldy #ASM.PC+3 ldx #3 + .11 lda (pData),y sta SRC.ACC,x dey @@ -64,44 +78,61 @@ EXP.Eval.Next stz SRC.ACC.F jsr SRC.GetNextChar jmp EXP.EvalOperator + +.9 lda #E.INV.LABEL + sec + rts +*--------------------------------------- .10 jsr SRC.IsDigit10 Decimal constant ? bcs .1 + jsr SRC.GetDecimal bcs EXP.EvalExitRTS jmp EXP.EvalOperator + .1 cmp #'$' Hex? bne .2 + jsr SRC.GetHex bcs EXP.EvalExitRTS bra EXP.EvalOperator + .2 cmp #'%' binary? bne .3 jsr SRC.GetBinary bcs EXP.EvalExitRTS bra EXP.EvalOperator + .3 cmp #'&' octal? bne .4 + jsr SRC.GetOctal bcs EXP.EvalExitRTS bra EXP.EvalOperator .4 cmp #''' bne .43 + jsr SRC.GetNextChar bcs EXP.EvalExitSYN jsr EXP.SetAccA jsr SRC.GetNextChar bcs EXP.EvalOperator + cmp #''' beq .44 cmp #',' bne EXP.EvalExitSYN + bra EXP.EvalOperator + .44 jsr SRC.GetNextChar - bra EXP.EvalOperator + bra EXP.EvalOperator + .43 cmp #'"' bne .42 + jsr SRC.GetNextChar bcs EXP.EvalExitSYN ora #$80 diff --git a/BIN/ASM.S.FIO.txt b/BIN/ASM.S.FIO.txt index 21904fd3..d26322f1 100644 --- a/BIN/ASM.S.FIO.txt +++ b/BIN/ASM.S.FIO.txt @@ -1,7 +1,23 @@ NEW AUTO 3,1 *--------------------------------------- -FIO.Init >LDYA L.ASM.6502 +FIO.Init.RTS rts + +FIO.Init >LDYAI 256 + >SYSCALL getmem + bcs FIO.Init.RTS + >STYA ZPLineBuf + txa + >STA.G SRC.hLineBuf + + >LDYAI 256 + >SYSCALL getmem + bcs FIO.Init.RTS + >STYA ZPTmpBuf + txa + >STA.G SRC.hTmpBuf + + >LDYA L.ASM.6502 FIO.LOAD.CPU >STYA ZPPtr2 ldy #S.PS.hARGV diff --git a/BIN/ASM.S.MAC.txt b/BIN/ASM.S.MAC.txt index 44f368c2..be74a2a0 100644 --- a/BIN/ASM.S.MAC.txt +++ b/BIN/ASM.S.MAC.txt @@ -21,21 +21,28 @@ MAC.Init >SYSCALL SListNew txa >STA.G MAC.hArgBuf - >LDYAI 256 + >LDYAI MA.MAXDEPTH*6 >SYSCALL getmem bcs .9 >STYA ZPMacroStk txa >STA.G MAC.hStk + .9 rts *--------------------------------------- MAC.Reset >STZ.G MAC.StkPtr >STA.G MAC.CtxID - >STA.G MAC.NextCtxID + >STA.G MAC.CtxNextID rts *--------------------------------------- -MAC.Quit >LDA.G MAC.hStk +MAC.Quit >LDA.G MAC.StkPtr + beq .10 + + jsr MAC.Pop + bra MAC.Quit + +.10 >LDA.G MAC.hStk beq .1 >SYSCALL FreeMem @@ -255,7 +262,10 @@ MAC.ReadLine >LDA.G MAC.hBuf ldy #0 .1 lda (ZPMacroBuf) - beq .7 + beq .8 + + cmp #C.CR + beq .8 inc ZPMacroBuf bne .2 @@ -273,7 +283,7 @@ MAC.ReadLine >LDA.G MAC.hBuf .21 cmp #'#' bne .20 - + lda ZPMacroArgCnt ora #$30 sta (ZPLineBuf),y @@ -286,11 +296,15 @@ MAC.ReadLine >LDA.G MAC.hBuf cmp #'9'+1 bcs .9 - + and #$0f tax + dec + cmp ZPMacroArgCnt + bcs .1 + jsr MAC.GetArgX - bcs .9 + bcs .1 no arg ]n, append nothing .3 lda (ZPPtr1) sta (ZPLineBuf),y @@ -306,51 +320,32 @@ MAC.ReadLine >LDA.G MAC.hBuf bra .1 .7 sta (ZPLineBuf),y - beq .8 - iny bra .1 -.8 jmp MAC.Put +.8 lda #0 + sta (ZPLineBuf),y + jmp MAC.Put .9 lda #E.SYNTAX.ERROR sec rts *--------------------------------------- -MAC.Put >LDA.G MAC.StkPtr - - tay - - dey - dey skip mac ID - - dey - dey - - lda ZPPtr2 - sta (ZPMacroStk),y - dey - - lda ZPPtr2+1 - sta (ZPMacroStk),y get offset - clc - rts -*--------------------------------------- MAC.Push >LDA.G MAC.StkPtr - cmp #MA.MAXDEPTH*8 + cmp #MA.MAXDEPTH*6 beq .9 >LDA.G MAC.CtxID pha - >INC.G MAC.Depth + >INC.G MAC.CtxStackPtr clc - adc #MAC.CtxIDS + adc #MAC.CtxStack-1 tay pla sta (pData),y - >INC.G MAC.NextCtxID + >INC.G MAC.CtxNextID >STA.G MAC.CtxID >LDYA ZPLinePtr @@ -358,9 +353,8 @@ MAC.Push >LDA.G MAC.StkPtr bcs .99 >STYA ZPPtr2 - phx - + ldx #0 .1 ldy #$ff @@ -375,7 +369,7 @@ MAC.Push >LDA.G MAC.StkPtr lda #0 sta (ZPPtr2),y -.3 tya + tya beq .4 inx @@ -386,8 +380,12 @@ MAC.Push >LDA.G MAC.StkPtr bcc .1 inc ZPPtr2+1 - bra .1 + +.3 tya + beq .4 + + inx .4 >LDA.G MAC.StkPtr tay @@ -425,13 +423,13 @@ MAC.Push >LDA.G MAC.StkPtr MAC.Pop >LDA.G MAC.StkPtr dec - dec + dec mac id dec - dec + dec offset - dec - dec + dec arg cnt + dec hArgs sta (pData),y 6 bytes off stack @@ -439,13 +437,13 @@ MAC.Pop >LDA.G MAC.StkPtr lda (ZPMacroStk),y >SYSCALL freemem - >LDA.G MAC.Depth + >LDA.G MAC.CtxStackPtr clc - adc #MAC.CtxIDS + adc #MAC.CtxStack-1 tay lda (pData),y >STA.G MAC.CtxID - >DEC.G MAC.Depth + >DEC.G MAC.CtxStackPtr clc rts @@ -479,11 +477,29 @@ MAC.Get >LDA.G MAC.StkPtr >STYA ZPMacroArgBuf get args rts *--------------------------------------- +MAC.Put >LDA.G MAC.StkPtr + + tay + + dey to arg cnt + + dey + dey skip mac ID + + lda ZPPtr2 + sta (ZPMacroStk),y + dey + + lda ZPPtr2+1 + sta (ZPMacroStk),y save offset + clc + rts +*--------------------------------------- MAC.GetArgX phy >LDYA ZPMacroArgBuf >STYA ZPPtr1 - + .1 ldy #$ff .2 iny @@ -496,7 +512,7 @@ MAC.GetArgX phy tya beq .9 - clc + sec adc ZPPtr1 sta ZPPtr1 bcc .1 diff --git a/BIN/ASM.S.OUT.txt b/BIN/ASM.S.OUT.txt index 91cc92fd..31b19dd4 100644 --- a/BIN/ASM.S.OUT.txt +++ b/BIN/ASM.S.OUT.txt @@ -70,7 +70,7 @@ OUT.PrintLineErr dec jsr OUT.PrintLineErrDashA - >LDA.G MAC.Depth + >LDA.G MAC.CtxStackPtr jsr OUT.PrintLineErrDashA lda #'^' @@ -119,7 +119,7 @@ OUT.PrintLine.1 jsr OUT.PrintLineOutBuf >PUSHBI 2 >SYSCALL printf - >LDA.G MAC.Depth + >LDA.G MAC.CtxStackPtr .3 dec bmi .4 @@ -132,6 +132,7 @@ OUT.PrintLine.1 jsr OUT.PrintLineOutBuf .4 >LDYA ZPLineBuf >SYSCALL puts + jmp OUT.PrintCR1 *--------------------------------------- OUT.Print >SYSCALL printf diff --git a/BIN/ASM.S.SRC.txt b/BIN/ASM.S.SRC.txt index 1de7ca0d..ce3d377d 100644 --- a/BIN/ASM.S.SRC.txt +++ b/BIN/ASM.S.SRC.txt @@ -11,25 +11,19 @@ SRC.ParseLine jsr OUT.Reset cmp #';' Comment? beq .8 - pha - -* >LDA.G ASM.PASS -* beq .55 -* >DEBUG -*.55 - jsr SRC.DoCheck - pla - bcs .7 + bcs .7 TRUE + + lda (ZPLinePtr) .1 cmp #C.SPACE false....skip label processing - beq SRC.ParseLine.DirOp + beq SRC.ParseLine.DirOp no label.... - jsr SRC.GetNextChar +.2 jsr SRC.GetNextChar bcs .8 cmp #C.SPACE - bne .1 + bne .2 bra SRC.ParseLine.DirOp @@ -48,21 +42,28 @@ SRC.ParseLine.LABEL beq SRC.ParseLine.DirOp tax save char... - cmp #'.' local symbol? - beq .1 + cpx #'.' local symbol? + bne .1 - cmp #':' private symbol? + >LDA.G MAC.StkPtr + bne SRC.ParseLine.InvLbl illegal in MACRO + bra .2 + +.1 cpx #':' private symbol? bne .8 >LDA.G MAC.StkPtr - beq SRC.ParseLine.InvLbl + beq SRC.ParseLine.InvLbl illegal OUTSIDE macro -.1 >LDA.G SYM.bInGlobal Not relative to Global label... +.2 >LDA.G SYM.bInGlobal Not relative to Global label... bpl SRC.ParseLine.InvLbl + jsr SRC.GetNextChar bcs SRC.ParseLine.InvLbl + jsr SRC.GetDecimal bcs SRC.ParseLine.InvLbl + lda SRC.ACC+1 ora SRC.ACC+2 ora SRC.ACC+3 @@ -70,17 +71,9 @@ SRC.ParseLine.LABEL lda SRC.ACC beq SRC.ParseLine.InvLbl .0 is not allowed - cpx #':' - beq .2 - jsr SYM.NewLocalA bcs SRC.ParseLine.RTS bra SRC.ParseLine.DirOp - -.2 jsr SYM.NewPrivateA - -.3 bcs SRC.ParseLine.RTS - bra SRC.ParseLine.DirOp .8 jsr SYM.NewOrGetGlobal bcs SRC.ParseLine.RTS @@ -104,7 +97,7 @@ SRC.ParseLine.DirOp cpx #20 .ELSE? beq .1 - cpx #20 .FIN? + cpx #30 .FIN? bne SRC.ParseLine.Ok .1 jmp (J.DIRECTIVES,x) @@ -937,7 +930,7 @@ SRC.ACC10 lda SRC.ACC ACC*2-> ACC & ACCTMP SRC.DoCheck sec >LDA.G ASM.DO.StackPtr beq .8 - + clc adc #ASM.DO.Stack-1 tay @@ -946,13 +939,13 @@ SRC.DoCheck sec .8 rts CS if TRUE *--------------------------------------- -DEBUG.PSTR pha - >PUSHW L.MSG.PSTR - pla - >PUSHYA - >PUSHBI 2 - >SYSCALL printf - rts +*DEBUG.PSTR pha +* >PUSHW L.MSG.PSTR +* pla +* >PUSHYA +* >PUSHBI 2 +* >SYSCALL printf +* rts *--------------------------------------- MAN SAVE USR/SRC/BIN/ASM.S.SRC diff --git a/BIN/ASM.S.SYM.txt b/BIN/ASM.S.SYM.txt index a20838a1..def0f937 100644 --- a/BIN/ASM.S.SYM.txt +++ b/BIN/ASM.S.SYM.txt @@ -10,9 +10,10 @@ NEW * 2-5 : 32 bits Value * 6+ : Local Symbols..... *--------------------------------------- -* Local Symbol Record: (5 bytes) +* Local/Private Symbol Record: (6 bytes) * 0 : Local ID (1->255) -* 1-4 : 32 bits Value (PC) +* 1 : Macro Context ID (private) +* 2-5 : 32 bits Value (PC) *--------------------------------------- SYM.Init >SYSCALL SListNew bcs .9 @@ -370,17 +371,7 @@ SYM.Acc2Global ldy #SYMG-1 rts *--------------------------------------- -* Local/Private Symbol Record: (6 bytes) -* 0 : Local ID (1->255) -* 1 : Macro Context ID -* 2-5 : 32 bits Value (PC) -*--------------------------------------- -SYM.NewPrivateA sec - .HS 90 BCC - -SYM.NewLocalA clc - ror ZPPtr1 - tax Save Local ID +SYM.NewLocalA tax Save Local ID >LDA.G SYM.bInGlobal not in a global label bpl .91 @@ -403,10 +394,6 @@ SYM.NewLocalA clc cpy #ASM.PC bne .1 - lda #0 - bit ZPPtr1 - bpl .11 local, Ctx = 0 - >LDA.G MAC.CtxID Get Macro Context ID .11 pha @@ -428,7 +415,7 @@ SYM.NewLocalA clc lda #0 sta (ZPSymbolBuf),y tya -* >DEBUG + >STA.G SYM.GlobalPtr lda (ZPSymbolBuf) diff --git a/BIN/ASM.S.txt b/BIN/ASM.S.txt index 74dc0937..e1871225 100644 --- a/BIN/ASM.S.txt +++ b/BIN/ASM.S.txt @@ -213,14 +213,9 @@ CS.INIT ldy #S.PS.ARGC lda (pPs),y beq .99 - lda #1 - >SYSCALL ArgV - >PUSHYA - >PUSHWI 0 Allocate - >SYSCALL RealPath - txa - >STA.G SRC.hFILENAME - + jsr CS.RUN.ARGS + bcs .99 + jsr FIO.Init bcs .9 @@ -232,21 +227,7 @@ CS.INIT ldy #S.PS.ARGC jsr OUT.Init - >LDYAI 256 - >SYSCALL getmem - bcs .9 - >STYA ZPLineBuf - txa - >STA.G SRC.hLineBuf - - >LDYAI 256 - >SYSCALL getmem - bcs .9 - >STYA ZPTmpBuf - txa - >STA.G SRC.hTmpBuf - - clc +* clc rts .99 >PUSHW L.MSG.HELP @@ -256,6 +237,19 @@ CS.INIT ldy #S.PS.ARGC sec .9 rts *-------------------------------------- +CS.RUN.ARGS + + lda #1 + >SYSCALL ArgV + >PUSHYA + >PUSHWI 0 Allocate + >SYSCALL RealPath + txa + >STA.G SRC.hFILENAME + +.8 clc +.9 rts +*-------------------------------------- CS.RUN ldy #S.PS.hStdIn lda (pPS),y >SYSCALL feof @@ -361,8 +355,6 @@ CS.RUN ldy #S.PS.hStdIn .9 pha jsr OUT.PrintLineErr -* jsr SYM.StoreGlobal Make sure last Global flushed -* jsr SYM.Dump pla sec rts @@ -559,8 +551,6 @@ SYM.GlobalID .BS 2 SYM.hGlobalBuf .BS 1 SYM.GlobalPtr .BS 1 -SYM.LookupID .BS 2 - MAC.hList .BS 1 MAC.hBuf .BS 1 MAC.BufPtr .BS 1 @@ -569,9 +559,9 @@ MAC.StkPtr .BS 1 MAC.hArgBuf .BS 1 MAC.ID .BS 2 MAC.CtxID .BS 1 -MAC.NextCtxID .BS 1 -MAC.Depth .BS 1 -MAC.CtxIDS .BS MA.MAXDEPTH +MAC.CtxNextID .BS 1 +MAC.CtxStackPtr .BS 1 +MAC.CtxStack .BS MA.MAXDEPTH OUT.PC .BS 4 OUT.Buf .BS 4