From 023030831cacf9606667d1917b54f891c16bf5d3 Mon Sep 17 00:00:00 2001 From: David Schmenk Date: Sat, 10 Mar 2018 08:30:39 -0800 Subject: [PATCH] Sync all VMs and update images --- PLASMA-BLD2.PO | Bin 143360 -> 143360 bytes PLASMA-DEM2.PO | Bin 143360 -> 143360 bytes PLASMA-SOS2.PO | Bin 143360 -> 143360 bytes PLASMA-SYS2.PO | Bin 143360 -> 143360 bytes src/toolsrc/codegen.c | 3 + src/toolsrc/codegen.pla | 1 + src/toolsrc/parse.c | 2 - src/toolsrc/parse.pla | 1 - src/vmsrc/apple/plvm01.s | 276 +++++++++++++++++++++++++------------- src/vmsrc/apple/plvm02.s | 18 +-- src/vmsrc/apple/plvm03.s | 18 +-- src/vmsrc/apple/plvm802.s | 23 ++-- src/vmsrc/c64/plvmc64.s | 276 +++++++++++++++++++++++++------------- 13 files changed, 399 insertions(+), 219 deletions(-) diff --git a/PLASMA-BLD2.PO b/PLASMA-BLD2.PO index 7b53330ce41ba27925f59677379ee91d540970e1..dc22c356055b7c785892ae4f6b1e927fa6169d48 100644 GIT binary patch delta 12234 zcmajl34BcF{`m3doSaNX7AA=-lRXhhj3tY;wuB^zju^?QMrg~GP8An*BUPp2sMb=| zPKO3{wNhJ4QBk>9H<#XOwOV==MT;t0`x*qv|8pinB)`||e_wr{^PK1To@YIq+?jsN zIQ^J$V{4_QrB5$4vzOY=X6+^P|0zbH2vrfIVTyv2K_hSjy|r>eHBy2|MN-$YYUX>J(SreEK@)Ox*B zCJ2K#V0<{tA&ba9IlZ&<9t0|rgd|4uU;Vj~MPlB-dTr9`^Grz(kA`6_nezMr?n!rV zs;7t)F=trAu*A%PS=j?^s-rHl`a^oBHE9^f>L{XB?Yz`2rcgGDaN*UyVQk2Nfw>Q6 zg&yu=AWa$#BRX(dkN5sLn*(!v7=Amapd33-c%JuLjHQBP=%S-~olUc6CEh0_j{{ zqt1oq=~X>u{w-+S517Jd1^}^vSVi=jgXd?O2u8JOEZScycq+{M@YCo9J(O-#H@{J<;r#~=>HSz?VO^Cd^)~0s zz9p>+X7zidQ&26f3X|osZL&v3?@V{)WnU?)_Dga=R-eB8a{51N9gsWFHYhJ&eQYqr z7o;tRBy(J8+x}8$MQSJMN2$rHi@{iKu*ArvUHeNu6{#syE0;{B zjNWySWS_?~r!`={e)--)g-U^*=lajSz$8lYYGX|yobBad7t_}p zg;Hqvt3b_MyT6e zR}PMCZj2nK|Iu6hRb!-U+Iuf;%CIx6^OzxyPWIA38d63IVGn1b-sBe%Zn}uSv}x7e5FH* z(PDW&!x|!zOscCxF87C`aDUiM#hy04U4ITxJ(KO;-4$z7VGp+aO`YLNzZxUWa1Fnj z%y{0s8f2UiJFd3iqpPugbRpOlt%uGa^zhYGLjA7kC!}8ucja6QjG+;qd-d8vggw9- zK(swT-KkfjpEUJa$NzuO-fNFjXRGUa&Hb;pVf*~`*yirm!v+1#deGl>*Ar?B=+^y$ zi8OTT`Xf?}E2gq@tiI0vOqRaV$?+wkNS23-ui>bI9;DuK9IN#^Z@Rt{w?&Hx)#f>l zHo$JMSnVdgZUfH(n?b1kl2g>*y64{1ZvxBA-d0axdyY9*W6Z==neWv{{kw0445~YC ziaYw13~S4Jq51{)P>s}5Ww!YWcSY_4y^UAhBjsA!9B3Qj>R6THO;gPuG!vT7l zvg)`J!~L3FKU9T8@?g^kU=P+GalTXj46rwyawee2bMlD*+dP+iyLC#Hxlw=g))zcz zee@Z{0qfQ2#=+jc068qfQ1`mh@&!`h__zO26JB^yNshTkLJrW1*rX!X9O%yZZSLEv2hR zO^CPNR*>*`O^kItSreQvu*M!?4R%jU!;0({RfrV#uv|-OT1YXjFKR;A?yu=$JkX(7 z(eH$X!IIUu-E8BZR;qd7XsK2GwQ!HnGE5y7YP&3A3fl=j`-Y0(mxX$BwwQg(B?eW^ z7lF6uit!7-k#ZtDlZCps+c<;OyLNVMll5m=NeqwEn$otC6zNzRp~1jk`-+25p4?z+iTijKX#W z&16w*kW2hHw(QTax?e3NUc6k24SLq$3~QAB<_j%WiaksG^gjGrd#T*3r1ZEXwT(O+ zNsK$B39k>u-lWJ=Ee7W(V{Cp8 zjt-YjA=+Uw>ILr6r=+gIn5IB(r)V+BQZ~*Y>eJE%DiDQWoe>|15nS+6cMCeZd&@Dzx6~ zjPCctjNba|%E&dM8YN5V7)1*AuAM#ivb@Q0OJ2jmJVeW}1}Vzl+%+YkI$+ef zfMpXog&8beXOQBhHKltEQi#;K^e=;ysCPZUOG*yC8)FxRUIjkFRN|pe#j*@5??9>_ z;>7^jzu+Y$Bz~v2sJGNjFVkm`K1uWVR&;;N)$fxzLGO!R6*Ctk5>5p)n7S0ZXOU3X zlzJMa;Yt3{cCQD|ON&XLq{^BiiLZAt`DDQT=VCf^ovjX0SHX%L-uU+pgx<)F8ufBWUFm>FDII;#f65_$ zy;XfB=zuc4Ht-x@+}qkj2v7A+h`POERuk!_B*m0Y_mT3vBa=qi14jFb z!6~J8eI#?~bsuSjUqzUZFSZx5xvP+`l#cY3Mml25LQX>#24fVaU>=rXBesKSkohQ) zmqrNr42+RN9*H$LjL}g-UIY;>SW+Q(Mlpu+_+=FGA>2hwtdM75Cj#SyLw+hw$ZJuJ z{w;*;L~^{4+qV?*aBM(wf{+&?J5k7yNpuX!t>}bB@G&Oj=IDnbDMI#16>cWw{Ri<)?LV}v*|=1As_53#!OB#urV5L)$^(Yy5z{ z*oPxHfwQ=P%cw*(ByZtt;jL(i-a@mW6Z&EZMxY2|Pz((VP>Of43LEe#cHmoYhtR$! zaR|q85g|T83r93MqZ`suh$k@;8eYL%yoGo09#&!tw&F|d#CP}+hj9{r;XJA#JA8%a z1rwSh6fMyXY3PKW$iXD&@v|@&^RWp3#V+i|9{hq+xP%+H1IbTl{IOOWgK>Bc)8LrS z=4EU|Ikw;gPT?!OvS9Gtp9ux z3-BJ^$0}^VW^BcF?7}|$f+IMF6F7?txPm+IYeuJ#jP^)}iV1iT8fM}3X2SVqGn4b} zW{xoJT{2c;Ek358qFGaIE9s-8{~&#u^cm9UNnav;mGn*0w@Fu%_AoWo3?}{`4U=&C zl5R#ifOHV)Q1;;_lNQImCC5pWwMILnl9%f+DcT?ss>##&xXD8sNdf-?*Pg{hOu}SL z$6UODx9~O=V>wn}4L0Eue2SgejlI~112~M|a2$W&G#qDW{JhCmyTrj&RB~Kp3ec)a zOa5Fm@Paq|VDcBvK!0B?n6#O6qrrNU#H6;|J`+8C*dn zq+p@>A^;)5!kHKxt#u^bC7AnvFd1(IM?04U`)dCr^F3_G_qa(}rx0IfkC3L$oDg3v zFGOfVQ4}JaQ_0uxN=USGE@g|!e-~#d^9%KL1|TFfT5A!?-GR=?Kqdykj%OWg#)b;# z1Oi_m{SxMI{8nhRb8%=h?L&^Y;B$P1LpY5asD_7`Q6UN~(Fqygg{Sq!AUuUJn1q+{ z1{PyA99!6I!!8`eah$}TxPlt^hOzDlL?mL+B8+Ja3(_p4+oLaNuRUiZ`(UORx;f@c}lX0$<{HoW!3vhl{ui5kY6* z2NMDjf^bA5&cP-DZO{o_(F@t=2OA179M9r)yom)^gm>^R%CH)1u>qU#Z|uNs?7==9 zz+oK6c{nb!slr`Ik=%Z0ju1p34#`MEXQZPy`oM}I7={se2E}+DQ!x{>@EV+0hUHj= z_4qiF_5Xy#r}zfnVGs7>1Ww^BuA&lE5K&AgOb9|alF%9{=!8u4!K28>U=(6F{*DQl zglSQ%|8x>FF&Cv+f_JeJ>+u&Z;4-e`CT^n!az|pTNfRzZ6v)JpJ4}flD{`v*7lM9m9!M2 zXr3`bGsXyK66rRilaa=8$CyCv5%%3xy3XFca^CS8H8_#E4?17G7??8Sckf@3kP|2YzuaSgXo4UbqZ zMEJsla6};%iD-{b$UrUzVHif?@0ft+F$EfCVh&!%LM+A#td4aE?L!h9un85|im$L6 zr{Rd>cEeJXVI|gJGmayn1#68o^h6dO!;=_`DVT=oSd25MgdESc<6sklFeD)rUC<3Z z(F^@B1=H~|X5$T%;-6TB53mj=a2Z}LnJFYA4e1z&JQQOEK7`{VHXCsQcVJB5MS`~I zj&x)p4@2-YCc}Z5C`B3mhhK3T=TV8<@Ji%4f;hBACuATKgA!T)kt8Of3~TT&e2Ja- zACBWZLX&u8A_IAN0^>0WlQ9ePu?b&c7k1+aP9Ufivy2YthGCe|iuIpEVlBSFx7dS| zxCz<9GaD_C1{?A*0;BN{lwdku#$2pLIksRszQqw7!&zK{+?wx2_&eCdBMI%%1^qDy zLogN-Py!9F;&m)W89u;zY{O0*#xb0R+=d1afwt&^?np-_`oNLHCKrS71jeHTtMPB_ z#qT(aYq$$TTY3*)1R@66P%#3}U?QH!G-#NGg;;`RSc^SvS^uLX&fx~`KyJtL9RUbJ z1Y(ec6m&!vWT8K7P{AKiwWshjMqvylViG1}8Z^vDIksb8JJ$aQiDNj0E4YrExC=R% zD;U1;M+hPjiv+YmGSbim-H?Gy^hYjK497^=F$Uu?70VrLHex$=Vi$JfCmg`9IDu0* zi;K91D%=G>xzY@10$+q898rixH}ph*36-cQp0YVUu9Pq~m zZ7iO{i+Bk$F$?qXE>@!g{6Rwd8oRIuM{pFs<1}vKEKvKYR2$3j3s{Da@F})o2X9N+Begdl71H}@Bud96MT+s*n#iy6At1q{=gXrn@gyI ze+PPmaKylZG}tf6EIPf->Vl_75Q~cD4_5Yp3IoyC( zXWsWPqa~7%hHl6}HgfSeM#7FcaA7G{VmUflLg; zNQ}jJti*b3#pl?D9rzl%u@8rE3V-1|Dp3Qut8j*ORkWzC3=Z*VjdtjaY&iO{82}qp zJb`C15tHx|X5dxK!F(*ia;(G}e1who7k1!#?7@B&P=cwLiP@Nsx3CyXu?B0g0sq1t>;r#&)&9U4TqqsiQVMr8>A|Id0K_65 ziAX^Q^gwU)LoV`AfT4H_e}f&*ViI0}19LDBZ(wx~;ryY8;@sOK(z&lkly-o;Lpa`p z2|q{TGHwubyGM}Iucy$05ss*y{L`SPqNS70L?77j7z!{9e;ceg}nLllLw5;D6-pr|ehK$4H+b zeTMV}T*eJl!84sZ7|jrX&~)L9OApi%NVg%~K0R9N!oC~(bn>!EKkDGX#z8&?V+ff~ zrZ?3_urK2H8H~X=OeF6G%BHe+q{nHmkT;w3Yw6L>_tO<^6~`ZN{8756b7Q)PR!({g z^?%BK2m5c>f5-ku;(o?Kv^q@YZ&YxT3T~6GPFI{#hKJLfp=c2q!Wo^RIO90ZuUMTZ z4U)^6%AOyrUH8%Y+TX?n_!(V2dztV3H10iq8YgWi^|4B3icd+aR!C`O-^i=@IbW0S zcK`6>p1nW)ZyzN$q*Vslv?p#`=t4Od&ha`FbLHBR!wzQKH2 delta 12467 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

lqt{ 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 NicH1j0_7rt+w3+C-89Q)0|D^@Ua8z~idI?> zv7&$)6)&i`&g7YCX7tT*bjB-h4m#rl!wfS%`M@|jQyAHLHrp)g(tXH&-`QXO=ls8O zc1NxXBUgosQ9gV*oy(>Y;9g=iAOM5G*08V;u0eUh;J2)tGg4}{!in>y#C{o2j0$4k z#rTw1MArrql1gcZ9oo7d1UOqy$!aTEYXt_4dPerjSv@3o1pQc8PU?n|bu(KD!fxJy z{VHjis>EGEQ3hN&h1bh^CYe)Q48)-+Oq8}&eJ&LENb|6BQr|}E19WUG63wYbDlNrh zS!IK*5v+k)=$h`<++cgGhDBLJ(hXhdpX7p#PzQ@=`mwO4N}DH@Y&Gj{s-@p+joWf1 zWZSWX=O?g6sGU|<9}*j;Q|tzo*o6tPgeN9&+Ki@|v%<}HwalI~mmd9t=4jK{ab)Lk z0nWZ{qKZreBJI7Bk&xU21#3P8;75BZJpGvmHkR~s+-e05-&gsuC}ErQl%dGk{<4V< z!Y+9+opc>JE$7L)h`2oW%XN~Ru1NBv8dysR`^hV3tC7b>EVd$J_bi~bg~bl!frV}D zw7G@F81iBdvOwhCPAAYyfu$6PE{-{YZVU$Q>ssn;)*>%7Fkavno42|Rr*;F6wDlQ= z<{49KIaI;5>i<_AhnCcUtmI>TMq0Jc0Qf5Edo8%1-B@nzjBR?_BQG`|pv zGmurUUh}}(bq`7uyMe`7SZ994#*T7U;2~c{LZs6f^q7{)ms16Mp&M|ATTyugWe6vG z^Rkl8lo|T5UZjdn`YMv0iW=B*CE1r+->;?zGTH_`YveX=%5UEC(AI|^dGxVu+aG`8 z$)}!vX2;;OJ9q8gvv=SA0|yTse(w1rFVMe#Mzd+qIlQkuZ;L%>HIZofT}x!rJh->1VqQ^L+@ck16XFe^#>Ch~}Rx@Y3)It#6@uotr-};n>S3UOD;d=xY=kNApt1{D!ep zZ_v&{^E+n#%|fTozWLVMg?HY4@7((zeE1PP`3ueQ7V~!&Jpak37d|t;L>X_Qc_ma_ HkAM6J^?WMz delta 1455 zcmZvc+fx&F6vxl+mtQUjWTC-=@!E0;5t=%yu?25{_xrUiv?`)i zDaKo?y{(-*cjQm#Lr3jfr|nzE8E1TUoN)#nU3;=iLRi_S^E><5?>XP^?C#JL*U%H! zZ+A-*aX>&a{>XN#<3Efnr#Z@LP$}?xSGZE4T!xa&{wtEV_=zr!rzfZJRHnI z09;^3wZEd`q|%_ta>*Gvj}jB6!~pcq5Ig<;R3#Qlh*KcfGozYMk)uIg%B`ng23IqT z7F$jH8y6C4Sc+!_xv?4K#(VAeT`4wF(Vf96;dfs##n`B?&J46c4krx(M**w?GLRcm zl1a)5<)PN3AVy-@A^Lh8GHkKt94B;yXqV|q*Q~;#VmDV(`hllx_J`#abG&os&0nx^ z(MKOwR#n&dY8Th}m(({bUDmj~X~oJ_tDD!XUDxsnKK+&ml0GH||4_XKvCsprA;YLAh4Yh^aJERESc}cX|GOdIbMCDCNTupRt#^x(BPRrhL zDYAR+^sw!|>NZuC^Ij3X3+(XJnVV@8N$`fFf|zV*QzMe$m3@jvyDUbNI10n=r)Ga_}U}B9^*e)ml8)wC; zEibWt0I~n_F$Lr60l&coW08%#@eS!Gfx(2`DpzY@5ni60tDgl9o_j4Ay7Z8A8KJay z2i7`CR}h+}gt~U_?&}}evv(hMCrH{s-05cQ?mu|w@R6g(j+@;U;?`bM+lf=B@%)x( zI!k*Ab)WhCi!TR!EuLdV%mg7+lyJ7P9mK8C^ zyeEXB+Vhf%c7{cLRk~#ev1<4|9Ai5Lvo>wE?w<;E(L$wUirW2=WLrw7M#@L0eO2<# zeJ0Ch!M*34dp>^W+;i?r-n1rfT8ja$VYm%F<>8xq(Vq~Cd1|byA?`gJ^EJ&;cicXp zZ*9C&E}!}PNwlbaudYj*t@Ae4WWHQ#%)GJmP9~T6OQucl*RIq(UGL8v$%HfWnTbp~ z^Vg+^t6lYcwQ%Os($zZ;HrYE5KYFlPQ~J%uM-T3OqjYspnfIUp6N68^#ax zj{LMfl27W9{26^F|Ehj3{}bI=cwGTIM@TdvxSJw?pVrad z=z7<96Dg(5wfASQ8tF}AtF$@$`_(}E-x%x1+0E*Uy!+$TCp*5&aF>m#HLcj$<-Kg2 zS~HS4JBrwnc^=lTfZT%EI7^UfkvTiKE2a_Xys*>#Ra1x9!*x{0ZsFrRLGfzBs#e0OHPY`y9s&S_u$?N@T6pdL zxh8i-R7*uX!&Shbc$IW|8;^E-XKw|EtxHH$aMY7p;s`hVKbFJWSd1`74_FlS>%m$i z?9*{EH|5uX6`t04+_d7OvS(MO_Uipfhl-+mbxuTh&x$Y1nwAVfI|8x`^*d_d)US(( zqgEk1N|+o=Ia7BB?#O?e+AtM87T?YJB4~di%v3yqK0#@M6ly}y9wnuKYaY44@NqOW zBHNKP05XEks)!)h5!pt!89W0b*Qhza=L_FjvCR_3S> zkK|!{6i65WFxL6~^(h4$nA|q~NF&1Fdk_$oiiANTb#}Uv4#zlwQCV0BO1-pTK*ig& zUw5}AK)_A1ggrl}^7NEHmmarn>sWDnR<1%QTtlqk8Yl}Wm^Gt`OoNk31he!U8`^=Q zMI-hWL{RWQmw`x6QzlKzqU=uwZ7zF@8_WilAG`oIG!bZdXlh&_gf|jf~{&246Ic9CWEHdAtUi1^$BY+ zH_iszkw-izD#GVFwiQ9xSA-poRH&*Pghf>7Rco=6ecd`cCFpaeI{q|W|w8V?o5 z-D(daJrjftIw?Ymtr9t>azsdv3*wm8+|%*|sJ0P-a5%6`+Ef>D5iSKAOI-b^0a_BY zIrL3=t6aeVHE6?2n$k1kSv34k{L>Ym>JffnL>G_tRW_BY5)h`7dxL`1(u!AFWIm`ma$H7Vl8>ILGOgab|$K{xnrIW&xj zr1lfZ%vV!-TUwzT>%hY!0|4DmT!3x1xBH1p%h7cc%eq-5D}Jp2<#Un-xf4aaq=DE| zVh^4v9v^p_)g;cd@KWCD?MQroB`6}X7J5Uh6+7{4F4%&+RqiJbxCg1M6BcO@+6Ox4 zmmii9bXC|(yTJiNpaiRtu-l*=4h4_1v>qG^JJ`4-LWiv%(RT&bfUMJDf%I$cw@x} zqTpwVa)?I=PAY>oh=9zJ$-*gfR+xevXlI-t;~L29HOHeED) zFc2@G*CE(rA0a5*d1DOF0Zbok!1>uRyi}kBH+`N8#)5w=C(zXAI!xsBkS?6ir}xkY zcltTFg6H%Jq1%AFI@N8ULr|b-w*kVm6rhhWoB~fL4|4NX9X)(>p9fH3PXRj%PpP5Qmn&|8#Hay1FMrxj`NDY>3D2vzMX((lkVV=MZA!ov_L zfug&iin|RE0F?r(fPA+MBzp+HC6CmeH)DVSeQ3IJUhde5V}qvC0|-y9hWrTs%8VnF z@GI3NAHHPZTiW&AJx3yW+Lqn)0huZp-m1f+qh?ysk^!F!GbbDJvd?^rraF?R0lRXv g>o4KA^H4RYAjNN6Jt+Q`(cFAhN_tshG7`)G2aeLdT>t<8 delta 2398 zcmY*aeN0=|6~BHw90SG>*L)s{=g$7Kw^!Gfxz$e!@7-8mE-zeNy0L!eXyLtczq);=dti?5Z2dr+n247Z3mk{w8`sixcN0(1{q$*iU4Mq&(nqL} zP0;S_Svrt?iH>DoruVYvXVzMlHMzE)Ts``!GPx81YYKFTa_xoj0a(q28^Jb!A(qZaqc^XX# z@AaFKfOkiNh0>$EkiU3>L$OvGu0Z}n6c=WPTPd*qBh-rP=YmWYof~eWO{0}6inUQ* zMEIe(V3ac~Ed*_EmtCl-vK&rZsfc)H6|tKP#~4F(I~KCN%*0}zBsjc28|+616H$xl z39Jc95u`91g7zs%1zcN^3oP$PLtU~RNzEW5XhKBv5D|zW_}`}_4DS^P7-gJEad#HB%|QNcNXGV~gH=fdJQ&;ty{XY}!S^5_ET+VQ zMCR-T^E$i*XqAJ7pyczDy2xQ~MlMAt$`g*Ep163TyoB(wjTsUC>m1>JFs@n|V|^tx zXxlKeZJL!6TeKX20tEv`4v-%Kzh+FM7(5r*j$#Ep{&NVb;LoOkNR2Qi#eh-{j)wnO z+&u4K3MP~4=RT)HTz|=ZrUaQ@LM7nF>=mA4MdIL3!JXQ71@Dp0Y48nflAs|1_hZ$p z2Q9+k!!v`t+>8hxFX;GRnL%sVjihfwXA@qu;qPRE(jh<>$bl^G);<=zmTzi~T{}aI zkh6G*DZpBo9pu8>fEN}2U5XufkV$#i;Y0=4Blb2f;;haWHIp|NZzwxCZ$SBQU~*aFd$s-O6k@KTXD z>@TM9f!v^=HXzb4M7Xe%CCE}UBhRWl@uvp;VxLysP+JbF^~6tjfGF7Ds#|BrJUS|` z70sZ4PCd?OPc(G-ru2{#|9CE_`uu4U3<;NMX@H!-g;90467?mffg7K&pv7DK_A-{Nsa8 z12y8DfH&#G#vO^_xv+@D3aF=8A-eJRXT!B9P%5;x2`xE75ze#7U3c#M>7z{j$R&r-b`q>~gA@*dz+AdSp^#Da#e~G-ypc|Dle0JUbmyuHc7yO_79)W1BHhiqLt>;6RCxu@brYB zZCP74@9wd5YR~RIW?9jGySqMNwD`Eu-+1NCelA+V?6z4r*2)NGdnO~FWO=9$z|5&N z@k_c|2jazi6B4@QJ&4q>IeY*HHd2G2rsKm?`bN1G{O(*3MB%>{BUXgqz?@1pdZZ3I zIku31GHip0cy%sN6_Fn~-t&mCHxLv$PN|iED5{pWvJM(4=t1c4C((HbcHc<^5PD7T zgX|#9AZ);exIUc8F@hg?jS2d~A3{0qQkbxj1JwT{9eId7nj^gcb#Ht=$Qz7MX3N=@Qlyqgwck$mAPis81ErnEjv2R#UD4siH?CBM0^DQW?55pW7O!!Zb@vtgb{0?r1X=!& Xapdoxq2Bqe)+?5z^rB=*OPuw8dcvBi diff --git a/PLASMA-SYS2.PO b/PLASMA-SYS2.PO index d1fe04cf54e0c77b3ba80ecd785471d1610fcf49..8abe2a9d74a3c1d147fa0ddee90e7631bc918697 100644 GIT binary patch delta 2159 zcmZWqYfuwc6ux&!!V-tDpf>VQ0|`*DMe3l_aR_6Y2Luxm2~?po9qddy9n=#q@ToT9h{OPr3Y2zE7yd)G$hJvsPaJ9M&MUl7=$m1eH?MHphns8M_C54ISxfSur`O~4 z)Oi}b7ro`f2Zm44s!Vm#JrC(!{l4h zmJaDFOXSIpg2sWyGw{IfWjwYyGKaIZWEG|FfhRsk_mIiRv5FbAmVbmLRS_GZK zqN>n_FmUBFkq8YYMAJ#jO*PL{*VcxRd=9X!ie=N3sm&owfNiN2n!qtlWb5?LXe+0H zya`}E0hfzIE*Fy&%C=~9s;UT>1$vzw(`$}SZ_w&ZVI2P~5+Y0d1e-OY*DUQLlYsc= zPzw587F{*3x~fcDS)r|35M<=nz{DJoM8o8o(ufYA*EgVQaj@!CQ5aq(OTyM-B5qb% zx)T%sVfJ|}U|CEM8FS#C$Lt|YFuMtM6DEYREV&{Zq7N{;6_f1C@Z>PTn00Zv2IE9B z;}EbSAgeGh3zCU}YzL54R>A!^?!+y49J3OLR4;epqd=d6Ma*#p+l2{o^((J7tbOhE zMu6VKY!6iEgNF$iQ$=aH)fl!A|2f!fbBxU%4=FUcLw+yN z<;BqDY6C**r`T-Z?GZA%hg^$UZ#GqieP-oZpeu+qt=d!(;WES@0>P!xf}_U*ToE|_ zDD;qnqpQx-nHMcATo67wkps+#vH)fc&cNi+DfHmP2qpNlFax(@XTYd68Y2wJ_kvyx zF?!`#Dl``DvM?Xt58kdzdSr71NpGXAPU3Kh9&JwYH)H2M{+Z{^Vc_VR&Kec*)vGjtJFzyu8^zd)^loZ z4R`-Krn^)c!F7*!xD%g%-Lz|Jh;ZT^?lvUu^0?`GT}-00OV^F@-_8wXd*MQ-mM?*| zwtTyE)DK_04EWsj`KGztV>e}^V`pVecUqR_i=Tec?^^5M;ZG7{B-KWe&`32!$wLvcUv(lE;ruc|1EGrwVgMKClC$z){0HY_UnJp>Lk&#G- z2tt(KS8|GeTj_r(??3r19bI|J`gG08?F0UiX*4p0X z_2k()D=yshM72Y6{5Ck`7=S@t#rR~BZIiEG(eA+Gw|L8kEXe98zoYpJS=;EVmdF&F zyd$s5QEJzCko6K+M*A$K_V!cWDu>S|rn@b1DK_)1gk)?pMND^(6mv)u5X>KFyb=qY~O0m`LOj?B- zj^iR69q$x56Py=%-gj$ zNz^}#2knlM#VYc1f;G)9L>Qe%$ajhSlJ*T`C@ovB%hhwh2oyIe6edyT4<#+jYYqtgu*ga8kN>4&(4aS1tsGmdB{;;SLwV^O*;}H7=ib6th zfXzRU!K*|Y)bw1!YNOg?(A6n%tH+ur}+Lzv&k^l?7Nx(ryOx9|99=f}IuyQ}t8@BQS{eKnsoMwj5* z6PYQP@b+5{_!*ciOws?4NV@hQbLg=3$d_RK7t?peCK;5Uo|CUo=Pn6s1bZAdt2<0T z(p;UYAOHe2o<=-$lNYjCC@xQ5G{3O8cm&DT!yQ-^b_e1#dRm`5Vo&V76S0$A^1S}CAw3Hk0K z%!Y9tK0J(>8cYNomwve1>FD|q%y%$j!9w~OLatneDU0bjgvkTJb~{}#e}EYsrkGh^ ca9{hGGdv3lb`quqqFoa(?eH1kGY(wxKe@BJC;$Ke diff --git a/src/toolsrc/codegen.c b/src/toolsrc/codegen.c index ce18984..630188b 100755 --- a/src/toolsrc/codegen.c +++ b/src/toolsrc/codegen.c @@ -785,6 +785,9 @@ void emit_caseblock(int casecnt, int *caseof, int *casetag) { int i; + if (casecnt < 1 || casecnt > 256) + parse_error("Switch count under/overflow\n"); + emit_pending_seq(); printf("\t%s\t$%02lX\t\t\t; CASEBLOCK\n", DB, casecnt & 0xFF); for (i = 0; i < casecnt; i++) { diff --git a/src/toolsrc/codegen.pla b/src/toolsrc/codegen.pla index 5a7880b..e0c20d8 100644 --- a/src/toolsrc/codegen.pla +++ b/src/toolsrc/codegen.pla @@ -181,6 +181,7 @@ end def emit_caseblock(cnt, oflist, taglist)#0 byte i + if not cnt or cnt > 256; exit_err(ERR_OVER|ERR_STATE); fin emit_pending_seq emit_byte(cnt) for i = 0 to cnt-1 diff --git a/src/toolsrc/parse.c b/src/toolsrc/parse.c index 97305d3..82bc69c 100755 --- a/src/toolsrc/parse.c +++ b/src/toolsrc/parse.c @@ -1061,8 +1061,6 @@ int parse_stmnt(void) caseval[casecnt] = constval; casetag[casecnt] = tag_of; casecnt++; - if (casecnt > 256) - parse_error("CASE clause overflow"); emit_codetag(tag_of); while (parse_stmnt()) next_line(); } diff --git a/src/toolsrc/parse.pla b/src/toolsrc/parse.pla index eadc9d9..831beec 100644 --- a/src/toolsrc/parse.pla +++ b/src/toolsrc/parse.pla @@ -816,7 +816,6 @@ def parse_stmnt caseval=>[casecnt] = caseconst casetag=>[casecnt] = tag_of casecnt++ - if casecnt > 256; exit_err(ERR_OVER|ERR_STATE); fin emit_tag(tag_of) while parse_stmnt nextln diff --git a/src/vmsrc/apple/plvm01.s b/src/vmsrc/apple/plvm01.s index b391d3c..d8dc4b6 100644 --- a/src/vmsrc/apple/plvm01.s +++ b/src/vmsrc/apple/plvm01.s @@ -109,14 +109,17 @@ COMP LDA #$FF ;* OPCODE TABLE ;* !ALIGN 255,0 -OPTBL !WORD ZERO,ADD,SUB,MUL,DIV,MOD,INCR,DECR ; 00 02 04 06 08 0A 0C 0E - !WORD NEG,COMP,BAND,IOR,XOR,SHL,SHR,IDXW ; 10 12 14 16 18 1A 1C 1E - !WORD LNOT,LOR,LAND,LA,LLA,CB,CW,CS ; 20 22 24 26 28 2A 2C 2E - !WORD DROP,DUP,NEXTOP,DIVMOD,BRGT,BRLT,BREQ,BRNE ; 30 32 34 36 38 3A 3C 3E - !WORD ISEQ,ISNE,ISGT,ISLT,ISGE,ISLE,BRFLS,BRTRU ; 40 42 44 46 48 4A 4C 4E - !WORD BRNCH,IBRNCH,CALL,ICAL,ENTER,LEAVE,RET,CFFB ; 50 52 54 56 58 5A 5C 5E - !WORD LB,LW,LLB,LLW,LAB,LAW,DLB,DLW ; 60 62 64 66 68 6A 6C 6E - !WORD SB,SW,SLB,SLW,SAB,SAW,DAB,DAW ; 70 72 74 76 78 7A 7C 7E +OPTBL !WORD CN,CN,CN,CN,CN,CN,CN,CN ; 00 02 04 06 08 0A 0C 0E + !WORD CN,CN,CN,CN,CN,CN,CN,CN ; 10 12 14 16 18 1A 1C 1E + !WORD MINUS1,NEXTOP,NEXTOP,LA,LLA,CB,CW,CS ; 20 22 24 26 28 2A 2C 2E + !WORD DROP,DROP2,DUP,DIVMOD,ADDI,SUBI,ANDI,ORI ; 30 32 34 36 38 3A 3C 3E + !WORD ISEQ,ISNE,ISGT,ISLT,ISGE,ISLE,BRFLS,BRTRU ; 40 42 44 46 48 4A 4C 4E + !WORD BRNCH,SEL,CALL,ICAL,ENTER,LEAVE,RET,CFFB ; 50 52 54 56 58 5A 5C 5E + !WORD LB,LW,LLB,LLW,LAB,LAW,DLB,DLW ; 60 62 64 66 68 6A 6C 6E + !WORD SB,SW,SLB,SLW,SAB,SAW,DAB,DAW ; 70 72 74 76 78 7A 7C 7E + !WORD LNOT,ADD,SUB,MUL,DIV,MOD,INCR,DECR ; 80 82 84 86 88 8A 8C 8E + !WORD NEG,COMP,BAND,IOR,XOR,SHL,SHR,IDXW ; 90 92 94 96 98 9A 9C 9E + !WORD BRGT,BRLT,INCBRLE,ADDBRLE,DECBRGE,SUBBRGE,BRAND,BROR ; A0 A2 A4 A6 A8 AA AC AE ;* ;* DIV TOS-1 BY TOS ;* @@ -325,31 +328,6 @@ SHR STY IPY + LDY IPY JMP DROP ;* -;* LOGICAL AND -;* -LAND LDA ESTKL+1,X - ORA ESTKH+1,X - BEQ ++ - LDA ESTKL,X - ORA ESTKH,X - BEQ + - LDA #$FF -+ STA ESTKL+1,X - STA ESTKH+1,X -++ JMP DROP -;* -;* LOGICAL OR -;* -LOR LDA ESTKL,X - ORA ESTKH,X - ORA ESTKL+1,X - ORA ESTKH+1,X - BEQ + - LDA #$FF - STA ESTKL+1,X - STA ESTKH+1,X -+ JMP DROP -;* ;* DUPLICATE TOS ;* DUP DEX @@ -363,17 +341,64 @@ DUP DEX ;* LNOT LDA ESTKL,X ORA ESTKH,X - BNE + + BEQ + LDA #$FF ++ EOR #$FF STA ESTKL,X STA ESTKH,X JMP NEXTOP ;* -;* CONSTANT +;* ADD IMMEDIATE TO TOS ;* -ZERO DEX -+ LDA #$00 +ADDI INY ;+INC_IP + LDA (IP),Y + CLC + ADC ESTKL,X STA ESTKL,X + BCC + + INC ESTKH,X ++ JMP NEXTOP +;* +;* SUB IMMEDIATE FROM TOS +;* +SUBI INY ;+INC_IP + LDA ESTKL,X + SEC + SBC (IP),Y + STA ESTKL,X + BCS + + DEC ESTKH,X ++ JMP NEXTOP +;* +;* AND IMMEDIATE TO TOS +;* +ANDI INY ;+INC_IP + LDA (IP),Y + AND ESTKL,X + STA ESTKL,X + LDA #$00 + STA ESTKH,X + JMP NEXTOP +;* +;* IOR IMMEDIATE TO TOS +;* +ORI INY ;+INC_IP + LDA (IP),Y + ORA ESTKL,X + STA ESTKL,X + JMP NEXTOP +;* +;* CONSTANT -1, NYBBLE, BYTE, $FF BYTE, WORD (BELOW) +;* +MINUS1 DEX + LDA #$FF + STA ESTKL,X + STA ESTKH,X + JMP NEXTOP +CN DEX + LSR ; A = CONST * 2 + STA ESTKL,X + LDA #$00 STA ESTKH,X JMP NEXTOP CFFB LDA #$FF @@ -552,7 +577,10 @@ SW LDA ESTKL,X JMP DROP + INC ESTKH,X STA (ESTKH-1,X) - INX +;* +;* DROP2 +;* +DROP2 INX JMP DROP ;* ;* STORE VALUE TO LOCAL FRAME OFFSET @@ -738,6 +766,65 @@ ISLT LDA ESTKL+1,X ;* ;* BRANCHES ;* +SEL INX + TYA ; FLATTEN IP + SEC + ADC IPL + STA TMPL + LDA #$00 + TAY + ADC IPH + STA TMPH ; ADD BRANCH OFFSET + LDA (TMP),Y + ;CLC ; BETTER NOT CARRY OUT OF IP+Y + ADC TMPL + STA IPL + INY + LDA (TMP),Y + ADC TMPH + STA IPH + DEY + LDA (IP),Y + STA TMPL ; CASE COUNT + LDA ESTKL-1,X + INC IPL + BNE CASELP + INC IPH +CASELP CMP (IP),Y + BNE + + LDA ESTKH-1,X + INY + CMP (IP),Y + BEQ BRNCH + LDA ESTKL-1,X + DEY ++ INY + INY + INY + DEC TMPL + BEQ FIXNEXT + INY + BNE CASELP + INC IPH + BNE CASELP +FIXNEXT TYA + LDY #$00 + SEC + ADC IPL + STA IPL + BCC + + INC IPH ++ JMP FETCHOP +BRAND LDA ESTKL,X + ORA ESTKH,X + BEQ BRNCH + INX ; DROP LEFT HALF OF AND + BNE NOBRNCH +BROR LDA ESTKL,X + ORA ESTKH,X + BNE BRNCH + INX ; DROP LEFT HALF OF OR + BNE NOBRNCH BRTRU INX LDA ESTKH-1,X ORA ESTKL-1,X @@ -746,14 +833,6 @@ NOBRNCH INY ;+INC_IP INY ;+INC_IP BMI FIXNEXT JMP NEXTOP -FIXNEXT TYA - LDY #$00 - CLC - ADC IPL - STA IPL - BCC + - INC IPH -+ JMP NEXTOP BRFLS INX LDA ESTKH-1,X ORA ESTKL-1,X @@ -776,58 +855,75 @@ BRNCH TYA ; FLATTEN IP STA IPH DEY JMP FETCHOP -BREQ INX - LDA ESTKL-1,X +;* +;* FOR LOOPS PUT TERMINAL VALUE AT ESTK+1 AND CURRENT COUNT ON ESTK +;* +BRGT LDA ESTKL+1,X CMP ESTKL,X - BNE NOBRNCH - LDA ESTKH-1,X - CMP ESTKH,X - BEQ BRNCH - BNE NOBRNCH -BRNE INX - LDA ESTKL-1,X - CMP ESTKL,X - BNE BRNCH - LDA ESTKH-1,X - CMP ESTKH,X - BEQ NOBRNCH - BNE BRNCH -BRGT INX - LDA ESTKL-1,X - CMP ESTKL,X - LDA ESTKH-1,X + LDA ESTKH+1,X SBC ESTKH,X BVS + BPL NOBRNCH - BMI BRNCH -+ BPL BRNCH - BMI NOBRNCH -BRLT INX - LDA ESTKL,X - CMP ESTKL-1,X +- INX ; DROP FOR VALUES + INX + BNE BRNCH ; BMI BRNCH +BRLT LDA ESTKL,X + CMP ESTKL+1,X LDA ESTKH,X - SBC ESTKH-1,X + SBC ESTKH+1,X BVS + BPL NOBRNCH - BMI BRNCH -+ BPL BRNCH - BMI NOBRNCH -IBRNCH TYA ; FLATTEN IP + INX ; DROP FOR VALUES + INX + BNE BRNCH ; BMI BRNCH ++ BMI NOBRNCH + BPL - +DECBRGE DEC ESTKL,X + LDA ESTKL,X + CMP #$FF + BNE + + DEC ESTKH,X +_BRGE LDA ESTKL,X ++ CMP ESTKL+1,X + LDA ESTKH,X + SBC ESTKH+1,X + BVS + + BPL BRNCH +- INX ; DROP FOR VALUES + INX + BNE NOBRNCH ; BMI NOBRNCH +INCBRLE INC ESTKL,X + BNE _BRLE + INC ESTKH,X +_BRLE LDA ESTKL+1,X + CMP ESTKL,X + LDA ESTKH+1,X + SBC ESTKH,X + BVS + + BPL BRNCH + INX ; DROP FOR VALUES + INX + BNE NOBRNCH ; BMI NOBRNCH ++ BMI BRNCH + BPL - +SUBBRGE LDA ESTKL+1,X + SEC + SBC ESTKL,X + STA ESTKL+1,X + LDA ESTKH+1,X + SBC ESTKH,X + STA ESTKH+1,X + INX + BNE _BRGE +ADDBRLE LDA ESTKL,X CLC - ADC IPL - STA TMPL - LDA #$00 - TAY - ADC IPH - STA TMPH ; ADD BRANCH OFFSET - LDA TMPL - ;CLC ; BETTER NOT CARRY OUT OF IP+Y - ADC ESTKL,X - STA IPL - LDA TMPH - ADC ESTKH,X - STA IPH - JMP DROP + ADC ESTKL+1,X + STA ESTKL+1,X + LDA ESTKH,X + ADC ESTKH+1,X + STA ESTKH+1,X + INX + BNE _BRLE ;* ;* INDIRECT CALL TO ADDRESS (NATIVE CODE) ;* diff --git a/src/vmsrc/apple/plvm02.s b/src/vmsrc/apple/plvm02.s index 0875fa8..c4dccd5 100755 --- a/src/vmsrc/apple/plvm02.s +++ b/src/vmsrc/apple/plvm02.s @@ -1307,12 +1307,11 @@ SEL INX STA IPH DEY LDA (IP),Y - BEQ ++ STA TMPL ; CASE COUNT + LDA ESTKL-1,X INC IPL - BNE + + BNE CASELP INC IPH -+ LDA ESTKL-1,X CASELP CMP (IP),Y BNE + LDA ESTKH-1,X @@ -1321,26 +1320,23 @@ CASELP CMP (IP),Y BEQ BRNCH LDA ESTKL-1,X DEY -+ DEC TMPL - BEQ + - INY ++ INY INY INY + DEC TMPL + BEQ FIXNEXT INY BNE CASELP INC IPH BNE CASELP -+ INY - INY - INY FIXNEXT TYA LDY #$00 SEC ADC IPL STA IPL - BCC ++ + BCC + INC IPH -++ JMP FETCHOP ++ JMP FETCHOP BRAND LDA ESTKL,X ORA ESTKH,X BEQ BRNCH diff --git a/src/vmsrc/apple/plvm03.s b/src/vmsrc/apple/plvm03.s index d17fada..c02679a 100755 --- a/src/vmsrc/apple/plvm03.s +++ b/src/vmsrc/apple/plvm03.s @@ -949,12 +949,11 @@ SEL INX STA IPH DEY LDA (IP),Y - BEQ ++ STA TMPL ; CASE COUNT + LDA ESTKL-1,X INC IPL - BNE + + BNE CASELP INC IPH -+ LDA ESTKL-1,X CASELP CMP (IP),Y BNE + LDA ESTKH-1,X @@ -963,26 +962,23 @@ CASELP CMP (IP),Y BEQ BRNCH LDA ESTKL-1,X DEY -+ DEC TMPL - BEQ + - INY ++ INY INY INY + DEC TMPL + BEQ FIXNEXT INY BNE CASELP INC IPH BNE CASELP -+ INY - INY - INY FIXNEXT TYA LDY #$00 SEC ADC IPL STA IPL - BCC ++ + BCC + INC IPH -++ JMP FETCHOP ++ JMP FETCHOP BRAND LDA ESTKL,X ORA ESTKH,X BEQ BRNCH diff --git a/src/vmsrc/apple/plvm802.s b/src/vmsrc/apple/plvm802.s index a7312ce..2e9ca82 100644 --- a/src/vmsrc/apple/plvm802.s +++ b/src/vmsrc/apple/plvm802.s @@ -1183,32 +1183,27 @@ SEL TYA ; FLATTEN IP LDA (IP),Y TAX ; CASE COUNT PLA - CPX #$00 - BEQ ++ INC IP CASELP CMP (IP),Y - BEQ +++ + BEQ ++ + INY + INY + INY DEX - BEQ + - INY - INY - INY + BEQ FIXNEXT INY BNE CASELP +ACCMEM8 ; 8 BIT A/M INC IPH +ACCMEM16 ; 16 BIT A/M BRA CASELP -+ INY - INY - INY FIXNEXT TYA LDY #$00 SEC ADC IP STA IP -++ JMP FETCHOP -+++ INY + JMP FETCHOP +++ INY BRA BRNCH BRAND LDA TOS,S BEQ BRNCH @@ -1227,13 +1222,13 @@ NOBRNCH INY ;+INC_IP BRFLS PLA BNE NOBRNCH BRNCH TYA ; FLATTEN IP - CLC + SEC ADC IP INY ;+INC_IP ;CLC ; ADD BRANCH OFFSET (BETTER NOT CARRY OUT OF IP+Y) ADC (IP),Y STA IP - LDY #$01 + LDY #$00 JMP FETCHOP ;* ;* FOR LOOPS PUT TERMINAL VALUE AT ESTK+1 AND CURRENT COUNT ON ESTK diff --git a/src/vmsrc/c64/plvmc64.s b/src/vmsrc/c64/plvmc64.s index bfaa45c..a225723 100644 --- a/src/vmsrc/c64/plvmc64.s +++ b/src/vmsrc/c64/plvmc64.s @@ -109,14 +109,17 @@ COMP LDA #$FF ;* OPCODE TABLE ;* !ALIGN 255,0 -OPTBL !WORD ZERO,ADD,SUB,MUL,DIV,MOD,INCR,DECR ; 00 02 04 06 08 0A 0C 0E - !WORD NEG,COMP,BAND,IOR,XOR,SHL,SHR,IDXW ; 10 12 14 16 18 1A 1C 1E - !WORD LNOT,LOR,LAND,LA,LLA,CB,CW,CS ; 20 22 24 26 28 2A 2C 2E - !WORD DROP,DUP,NEXTOP,DIVMOD,BRGT,BRLT,BREQ,BRNE ; 30 32 34 36 38 3A 3C 3E - !WORD ISEQ,ISNE,ISGT,ISLT,ISGE,ISLE,BRFLS,BRTRU ; 40 42 44 46 48 4A 4C 4E - !WORD BRNCH,IBRNCH,CALL,ICAL,ENTER,LEAVE,RET,CFFB ; 50 52 54 56 58 5A 5C 5E - !WORD LB,LW,LLB,LLW,LAB,LAW,DLB,DLW ; 60 62 64 66 68 6A 6C 6E - !WORD SB,SW,SLB,SLW,SAB,SAW,DAB,DAW ; 70 72 74 76 78 7A 7C 7E +OPTBL !WORD CN,CN,CN,CN,CN,CN,CN,CN ; 00 02 04 06 08 0A 0C 0E + !WORD CN,CN,CN,CN,CN,CN,CN,CN ; 10 12 14 16 18 1A 1C 1E + !WORD MINUS1,NEXTOP,NEXTOP,LA,LLA,CB,CW,CS ; 20 22 24 26 28 2A 2C 2E + !WORD DROP,DROP2,DUP,DIVMOD,ADDI,SUBI,ANDI,ORI ; 30 32 34 36 38 3A 3C 3E + !WORD ISEQ,ISNE,ISGT,ISLT,ISGE,ISLE,BRFLS,BRTRU ; 40 42 44 46 48 4A 4C 4E + !WORD BRNCH,SEL,CALL,ICAL,ENTER,LEAVE,RET,CFFB ; 50 52 54 56 58 5A 5C 5E + !WORD LB,LW,LLB,LLW,LAB,LAW,DLB,DLW ; 60 62 64 66 68 6A 6C 6E + !WORD SB,SW,SLB,SLW,SAB,SAW,DAB,DAW ; 70 72 74 76 78 7A 7C 7E + !WORD LNOT,ADD,SUB,MUL,DIV,MOD,INCR,DECR ; 80 82 84 86 88 8A 8C 8E + !WORD NEG,COMP,BAND,IOR,XOR,SHL,SHR,IDXW ; 90 92 94 96 98 9A 9C 9E + !WORD BRGT,BRLT,INCBRLE,ADDBRLE,DECBRGE,SUBBRGE,BRAND,BROR ; A0 A2 A4 A6 A8 AA AC AE ;* ;* DIV TOS-1 BY TOS ;* @@ -325,31 +328,6 @@ SHR STY IPY + LDY IPY JMP DROP ;* -;* LOGICAL AND -;* -LAND LDA ESTKL+1,X - ORA ESTKH+1,X - BEQ ++ - LDA ESTKL,X - ORA ESTKH,X - BEQ + - LDA #$FF -+ STA ESTKL+1,X - STA ESTKH+1,X -++ JMP DROP -;* -;* LOGICAL OR -;* -LOR LDA ESTKL,X - ORA ESTKH,X - ORA ESTKL+1,X - ORA ESTKH+1,X - BEQ + - LDA #$FF - STA ESTKL+1,X - STA ESTKH+1,X -+ JMP DROP -;* ;* DUPLICATE TOS ;* DUP DEX @@ -363,17 +341,64 @@ DUP DEX ;* LNOT LDA ESTKL,X ORA ESTKH,X - BNE + + BEQ + LDA #$FF ++ EOR #$FF STA ESTKL,X STA ESTKH,X JMP NEXTOP ;* -;* CONSTANT +;* ADD IMMEDIATE TO TOS ;* -ZERO DEX -+ LDA #$00 +ADDI INY ;+INC_IP + LDA (IP),Y + CLC + ADC ESTKL,X STA ESTKL,X + BCC + + INC ESTKH,X ++ JMP NEXTOP +;* +;* SUB IMMEDIATE FROM TOS +;* +SUBI INY ;+INC_IP + LDA ESTKL,X + SEC + SBC (IP),Y + STA ESTKL,X + BCS + + DEC ESTKH,X ++ JMP NEXTOP +;* +;* AND IMMEDIATE TO TOS +;* +ANDI INY ;+INC_IP + LDA (IP),Y + AND ESTKL,X + STA ESTKL,X + LDA #$00 + STA ESTKH,X + JMP NEXTOP +;* +;* IOR IMMEDIATE TO TOS +;* +ORI INY ;+INC_IP + LDA (IP),Y + ORA ESTKL,X + STA ESTKL,X + JMP NEXTOP +;* +;* CONSTANT -1, NYBBLE, BYTE, $FF BYTE, WORD (BELOW) +;* +MINUS1 DEX + LDA #$FF + STA ESTKL,X + STA ESTKH,X + JMP NEXTOP +CN DEX + LSR ; A = CONST * 2 + STA ESTKL,X + LDA #$00 STA ESTKH,X JMP NEXTOP CFFB LDA #$FF @@ -552,7 +577,10 @@ SW LDA ESTKL,X JMP DROP + INC ESTKH,X STA (ESTKH-1,X) - INX +;* +;* DROP2 +;* +DROP2 INX JMP DROP ;* ;* STORE VALUE TO LOCAL FRAME OFFSET @@ -738,6 +766,65 @@ ISLT LDA ESTKL+1,X ;* ;* BRANCHES ;* +SEL INX + TYA ; FLATTEN IP + SEC + ADC IPL + STA TMPL + LDA #$00 + TAY + ADC IPH + STA TMPH ; ADD BRANCH OFFSET + LDA (TMP),Y + ;CLC ; BETTER NOT CARRY OUT OF IP+Y + ADC TMPL + STA IPL + INY + LDA (TMP),Y + ADC TMPH + STA IPH + DEY + LDA (IP),Y + STA TMPL ; CASE COUNT + LDA ESTKL-1,X + INC IPL + BNE CASELP + INC IPH +CASELP CMP (IP),Y + BNE + + LDA ESTKH-1,X + INY + CMP (IP),Y + BEQ BRNCH + LDA ESTKL-1,X + DEY ++ INY + INY + INY + DEC TMPL + BEQ FIXNEXT + INY + BNE CASELP + INC IPH + BNE CASELP +FIXNEXT TYA + LDY #$00 + SEC + ADC IPL + STA IPL + BCC + + INC IPH ++ JMP FETCHOP +BRAND LDA ESTKL,X + ORA ESTKH,X + BEQ BRNCH + INX ; DROP LEFT HALF OF AND + BNE NOBRNCH +BROR LDA ESTKL,X + ORA ESTKH,X + BNE BRNCH + INX ; DROP LEFT HALF OF OR + BNE NOBRNCH BRTRU INX LDA ESTKH-1,X ORA ESTKL-1,X @@ -746,14 +833,6 @@ NOBRNCH INY ;+INC_IP INY ;+INC_IP BMI FIXNEXT JMP NEXTOP -FIXNEXT TYA - LDY #$00 - CLC - ADC IPL - STA IPL - BCC + - INC IPH -+ JMP NEXTOP BRFLS INX LDA ESTKH-1,X ORA ESTKL-1,X @@ -776,58 +855,75 @@ BRNCH TYA ; FLATTEN IP STA IPH DEY JMP FETCHOP -BREQ INX - LDA ESTKL-1,X +;* +;* FOR LOOPS PUT TERMINAL VALUE AT ESTK+1 AND CURRENT COUNT ON ESTK +;* +BRGT LDA ESTKL+1,X CMP ESTKL,X - BNE NOBRNCH - LDA ESTKH-1,X - CMP ESTKH,X - BEQ BRNCH - BNE NOBRNCH -BRNE INX - LDA ESTKL-1,X - CMP ESTKL,X - BNE BRNCH - LDA ESTKH-1,X - CMP ESTKH,X - BEQ NOBRNCH - BNE BRNCH -BRGT INX - LDA ESTKL-1,X - CMP ESTKL,X - LDA ESTKH-1,X + LDA ESTKH+1,X SBC ESTKH,X BVS + BPL NOBRNCH - BMI BRNCH -+ BPL BRNCH - BMI NOBRNCH -BRLT INX - LDA ESTKL,X - CMP ESTKL-1,X +- INX ; DROP FOR VALUES + INX + BNE BRNCH ; BMI BRNCH +BRLT LDA ESTKL,X + CMP ESTKL+1,X LDA ESTKH,X - SBC ESTKH-1,X + SBC ESTKH+1,X BVS + BPL NOBRNCH - BMI BRNCH -+ BPL BRNCH - BMI NOBRNCH -IBRNCH TYA ; FLATTEN IP + INX ; DROP FOR VALUES + INX + BNE BRNCH ; BMI BRNCH ++ BMI NOBRNCH + BPL - +DECBRGE DEC ESTKL,X + LDA ESTKL,X + CMP #$FF + BNE + + DEC ESTKH,X +_BRGE LDA ESTKL,X ++ CMP ESTKL+1,X + LDA ESTKH,X + SBC ESTKH+1,X + BVS + + BPL BRNCH +- INX ; DROP FOR VALUES + INX + BNE NOBRNCH ; BMI NOBRNCH +INCBRLE INC ESTKL,X + BNE _BRLE + INC ESTKH,X +_BRLE LDA ESTKL+1,X + CMP ESTKL,X + LDA ESTKH+1,X + SBC ESTKH,X + BVS + + BPL BRNCH + INX ; DROP FOR VALUES + INX + BNE NOBRNCH ; BMI NOBRNCH ++ BMI BRNCH + BPL - +SUBBRGE LDA ESTKL+1,X + SEC + SBC ESTKL,X + STA ESTKL+1,X + LDA ESTKH+1,X + SBC ESTKH,X + STA ESTKH+1,X + INX + BNE _BRGE +ADDBRLE LDA ESTKL,X CLC - ADC IPL - STA TMPL - LDA #$00 - TAY - ADC IPH - STA TMPH ; ADD BRANCH OFFSET - LDA TMPL - ;CLC ; BETTER NOT CARRY OUT OF IP+Y - ADC ESTKL,X - STA IPL - LDA TMPH - ADC ESTKH,X - STA IPH - JMP DROP + ADC ESTKL+1,X + STA ESTKL+1,X + LDA ESTKH,X + ADC ESTKH+1,X + STA ESTKH+1,X + INX + BNE _BRLE ;* ;* INDIRECT CALL TO ADDRESS (NATIVE CODE) ;*