From 04e39018941972bdd1cda614e2e37b42e02e0427 Mon Sep 17 00:00:00 2001 From: burniouf Date: Sun, 7 Jan 2024 13:44:01 +0100 Subject: [PATCH] BASIC.SYSTEM : Added EXTCMDs (wip) --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes BASIC.FX/BASIC.S.A.txt | 6 +- BASIC.FX/BASIC.S.B.txt | 138 ++++++++++++++++++++-------- BASIC.FX/BASIC.S.C.txt | 56 ++++++------ BASIC.FX/BASIC.S.GP..txt | 24 ++--- BASIC.FX/BASIC.S.LDR.txt | 12 +-- BASIC.FX/BASIC.S.X.txt | 6 +- BASIC.FX/BASIC.S.XR.txt | 191 +++++++++++++++++++++++++++++++++++++++ BASIC.FX/BASIC.S.txt | 92 +------------------ BASIC.FX/TEST.S.txt | 45 +++++++++ INC/BS.I.txt | 62 +++++++++++++ 11 files changed, 456 insertions(+), 176 deletions(-) create mode 100644 BASIC.FX/BASIC.S.XR.txt create mode 100644 BASIC.FX/TEST.S.txt create mode 100644 INC/BS.I.txt diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index cbb44a2a4ea75ad409fd3908053737983d7061e3..eb4bfe92bea607847d39f383cd0a3fb3adcd06dd 100644 GIT binary patch delta 389015 zcmeF4iC>h}`oPZ&435AI%dCLQu!#FOtb!Xez|4TM1-P|>ih{CQ zQd*c}V~ZrClihxmSQd5fZLe#$`JU(O&w1JS z`{l5W@NwTD3!G?53x1$d_J8mrHT1d3K^+qHf5(p}r)QJe8A=TyUl0QX34QLpQJE45 z6A~gwrUssWHh6bX013}}Zg2RFF%P)IgYLRK_3q14CGe5LCjdTyy_cuT62m3NyA$Wg zdK2daefMZ$LUx%kpA7x?+sTAL^0tg5nx-kp*)NjnX>J~+DZIMtvzZ}xhkOzQpHaOb zpU5qJEQfcO>>3T9VEBZFM8GE!J}UUA;iG|%7Ct)o=;0FupJ@2R zz-J76#=>VDe8$7a0H0X+#K9*XJ_+!d0G~woOoY!Q_)Lb+6!=Vq&ouZ6-(ex$v3SThf>HPubK^ z^66OV#EIFKviuxlnUC3T{~jMq7DVvM`QwWhmQ6HG3KmLEWa(xGnV75jk1u}9Ni^w{ zXU0z!BO9}M^xr}ZiDYq}FIdl1TIa%}5IOvVWj@zQ5fe>;p~9;tvgY0RU?_8~_~VP( zRkUi(jGyWgS&&;wh5puPP?B|e7Oe4)FPzsUnxcoNyhKd-PQxVPF7%~Qk~q<%3Kc3} z&MGNNEVq`G4;7I7_Dp;Lxl;-{p-__FzSy*uD&3j!Q+x?8Vd;|J-b@%pmWDvEfC$Ln zlhqSV0ikEc3zuKcdfE{gMmmi7McJ)2^~-0}G#G1$CVZsJiezw9MGSMStE~a2$jD(% z%hrL5Tt%jwNSsboYLb^^~I2W&P&R)L~0yDpK5vQUx*>eU_ zjf3a>`ohX}YqqguOhh*xoU#jwSFS6_u4!Jkl{qI7ox$gvH{_g5w6V;&psJp_GO0-^ zL={JtO(?Y#+G;CTak;4^A^}3?G_0uNfzrt5Uwrx1*Mj6t>;HDmoi|ztF3bAGK{SaF z%DA{Fx4>4;3Z9T`BASV!`LL^D}*%r5qYOd%0dsAEnZ=bH>! znaUg%JxI%zkeo(T)2KtX#ZXq@G z>axJ^l0hOTcxNo1yj zJNW|HNaQT$k}3vDHIc~K+(itNnnWV!QkR^yl7$Jy{y=&DMXV+ zU9%V3O3F()*3?v@F*C=41rYK+<2Xt!HJxa(iKWa~kYB`HsbiXn=yL_jn^`)&mHI8R zl$MoSO3Qhg>6s+TCN#d8rPtf3ucfrqvea56<|sXvMCS=zZ)QbJ&!@g+<)!&WcE|3x^}0kwIwu! zwY1b$VCUt^%^;dKjU_UwLVc-_HiBR7M?3t%YUf3wQ)u29cNZCL6I3fGnYn za3=+4A`y#3hh*lEOyrAsNZk@4q9av1dMSU@UMrY7QZ-|)Bf0sd)}nF%4J9oq*dnT8 zE{VBbsO(6MmfR@Z4qq`h4GU;3w%yIcrCZ6^O5t!v>KMr~;VlRkyMh!J>UKK^@Flzt-%R$yIZE#O?TZJDV=-zt1gg=}KJWd-Hg zOZ`GJL9_1?A|6ZCM{j1{P#2b*@H!i%E6n`;-N&-0R-nvz4J zwhD(qjN~4{`5v^Bdugbg0;{DoNmSbO^fVH6pKu&}qqk9C>k?~DS$UxdF*gJH%V?+Y z-Fr}w?bN@hxU|qB7Q~heO(trGV0b@EKc}7g<`%0 z$}Y897A)dDgw2wcNwg0Lhr3eMdhLVEKd-pZ%3GZ+Ck?9jA))Ji=mB;y&(hol)}>bqFrGHdyQ>|C)7){IP|-|KT)Fh&PN;vakqGno;&ojTCkIF=UfOOQZsBA5(S|Yq3CF$JXP-ENrfFE!-A8TXT--sOMcP4##~D){Q*6}0-|#Zjb{=y)~Lf` z5X-_P_t6mW%>t;NBfh}fsCztgWY5Di#V4e|T0~?okPZ@kga|i$1Pa+pV0va`k#ft* z8J#I4;YChFR!I_$vY&C%KGA78N$`k2SCH|?h%ol!tg(xZLn77^67dqT!zgK4uw6_& z>;z98Txr_+zp>=tsjM{TUSmmKYeKdarbp^meD075R;g3Sg#Y8oRIF+wF|Sg&Ac6G} zQ>N2Ag98L6^4ECMktc~rVW*gOct1~@I@828Z?Ht@Bc#qHk*GI`5cUb^?`e{qZ7eA* zhHjMWFXYQa65rw#c3L|zRI7fQhAAr+dn#)(1c)Et0op&w3f8Gp=k&Hm)Puzmp{}G_A1}mK(3-`U@SN@*j{_io=>gBmI*LExDX0k0aslfnRnR z_+^?*)29&S`|wX8DZ}$iRx6{=io=RDWxr^dVT$x)|`g* z_01&a-`sha^4`V#*Ae*_f+Z=)6ZGJ@^B2B*NRUji>xJOF+5eWskB9#RNsTQ^hC;aibT_;qS>}JWg!d{bI z3tumq>`7A}^B8_{yX##iy^4PCz@#3jv)F6seAa!v;iW!TmuJtl$6R|od#*cXFg+`% zlk9Q&&3)Y^10VEX9*B9X*xUJ`xAP;f;aj)iCZQhij$e1ox!2?B z_fD1^0Pz_Yx;^K+JnoC927fjLKi3}KFC7f*mkqoQV!BDevF`3OhRwp`N%lm^HsMr~ zJz4Tn?;lC_DH6#hVN#0y_UZrb>&Wn)J$WK<;HQdi`Lym}!{)w23%uK*1l#}Ux!Z95 zk8W~YB8Bg>=N=Q@NwH6q|Hs`q-&@fgcjQdg?%+_>i@alrhmojv|F>Bu1C<(`g!N7N z#YX4~dvE%rVf*nGU zKm#NG&hr5ca!C#h)I{+QpD&DE+J8!f*ePjh<$FFyQwGt#FWf)PtdV{o5xSc1j@9d$Xu0y&SzDTO z>Q<1Dul?S#|42HB{H&y-sd*hyeJe303AAIUU01oK+)9-Hg`o9SG~sLuQJ?1p0B<^e z)42jsUKk!iH7MzrOVgv%sGNdQYjFXI{GMllInl9^ME^(&kZsuk#5aL38?>|)+4<#V zME8?$dAeEa_?g0HwIPyH|H55{O&5vkqCY!}a;-L)+>ppi{#q)jY^tm)BdXs<1j;R4 zL?Zt;GEgp2{lNpl)Phaai(vRu{mDZCIl8W}*sUa-NI@Z5D4r#>ua!%r9X0jP-AMVj zHb4s5ZlSR4Rn0lol}&|}Ekq|1T2s@ zTADs0RNB#4-ALpL`dvwMN)}f-CQMi}!yN6?S-BPTQ!NF^wu~K(wUtD!0eQ8JM5!H~2ZdfLs^2uwu_*9jRXx*`LX^=U5j3;F zGBY!cM2-Pj;2gaJv~^Sb#2FBLtY4A|W(EB2g?$Fio%(VO5WWM|w0Vd;#tu~P~lAnQYDaTG;9S+L4h7W=(2Eku8f z&^04XS6fQK-`ct)I|uqQMLDgb4XyDBuu-C1NWC^NuS}v_EPDA%R#s44PBcq+pb_m` zdo6WjEu_2w<|t*AH&-noQP&BVlg)a^_5Lbho;)Vtfb+Yj%C_N)N;xqJ%>Szr}b= zYMrurNKzV!StwhaS4gobS3w@sA#77z}?U$l%$!*JGP8S zeXBnR^bfjwDM?GZPhZ8pS9za57wI`f;T&F7+x_vuE3$oL)#eiA{Uf42Ank}^17!m3 zn;skwb(Yio8q82gq((%$&>}pk$j0EE&-8MLppcY^kknxTQ)sk!~KHun#)-`W3D5Vv|TR zmO+vB`*K7hYMv7IZlZPE!}A++KnR{`j;3oT7%ZfTE@940^908s9tX5n9Oad6aA~ZC zUWrQ4Jxg4HJ7N5@C-AxgRuklB#5%t7b3%yPR1N% zGFj&%eAQ(RzfRNlSHM0I=E_|29kkteQjCECCFdgoV!$_%qw z`l?hom6{e4_L^T>DlFVj3VSomn%sV#pb>UC-w;(PIc>8z1cton_YHeX^i4_KoRdpJ z-uC-My(1h>H|t~H{fqL1{M{c+^G{YcQS$eA-6-D&FV?SQz{supP%7Mi$gG~K{Ajqd z;uF7m&m_uE!HcO^1{6T|FIK5j^k+tGzJpHaDvJ27< zqW+GzcG@qOTCFg*DJ8N&@Q{B`$32)U{6N1ONwDKbnl9}eqkopd%#h9pCP7jQ78_xE z%#xd1I+=|7RqEHx``F9`9<5YaVRMEkF0%Y)?x5YR{1PvY>^DeE`#&1bm+9?v<(IUX z$baX(SnMCvSE!t29#j1%FoSuL{Id8>0{F8;{FaK}0RgOxk%0jtMhTc}$O3p{NPx~* z9t7UdJ;+Bva9UV-Ku1$U6B$2RsF;~HZcGS`4P7J+s|ckJbj&j)6TKop7(W{-MIFWy zU{kQ-BG^c_5_NdMRr4=pM1ZeFfC@yacr2jKI!Bmusso^nu;Gl(UfIM{Gcr&aQE5j6 zf+;TSlIwUVAmnTAda;CTVipDIvT;7c27BN!LSsgn+A#(w(GDrW1gnm*@UUVzFPCN< zPXU%vv?!nsbn9n458+ROwO@rHfKL|_V6R>t8_>}Vvs+D^hy%j<>s=Y|FS{*`XeR_{ z7|4<0w24A^CM;Jb1%OUx=CY}vd~yJry(y=FfVvvm%UNLEG3|;HPuoD$(|NxAGGYHo zX@po!l{8i+9733=V2g#1{}fGR(iL$?R7!vlJJ+mpr1BJoD1bP58qExy2!dGNm@Tjn z%-}(xCYP{PAujX{8Y{1}p&~#+lp6g%oIRCanlP+*pi}Y{0kEFi024!z+C;i8 zS_$d0%Cw}yvb@>{6juGpnh{=Wd|oCP>}y3Yxy6zO17dxEa7}KS8jc$zW^>H)wE-Os z0EVqzO4&a$xusFXS*6VC5Vm&3p`XxB)yydC@bmgOHpUh?}6F@b~~WNe7z>WS1j>;yu{jV0m5Emnkr1;6g88cpK7-YjTW<}a>rj)prU?Dwv&q* zQl7G^MxxrolN)k{nW9*tE>Y;-0Kq;#ZESHj9bRhb09{^K0-b9rG)m3mS2@D@_Y<^I zd7u>7LoJ2f5cxh)>V7UY{z>6PwmELaQ+^_RofLI|^S(-e<{)i5%h`qn?W^ueShgvg)aDaE-3TaG!_ahR$Po5u~y{->Rivu%-TuWKrz2dUXmS4WK#7Y!Ld=+Gasei8@CWMAnEm0ixd7B*RMA_%7+iXh; zQ5^I8rNW#OyjYKrot{EeFY)5=WLYN~`7+cu`0-r}x{Ig$n_n8NY!v_Jla>vuidTnw z>0YOrC{*Q|BWq4_Uh;lkM8z9Ss%;0IQmNnc*F{ck!@4S11Q6wE?pBbUk`CwPZ*yF} zk>5ge?{F8|`G5gMxh1<`D(JiJUExeFbXb4?3*Tg-_@}RFz|2JV9t~5;dS|}`p!2>j z42V;Iz{B{{14ibnx zGcu^jSUy#Z#Wy@OpI;phX1tWBC57#REa4TH%~atl=8?|kkE*XZR=SUvpKmYAhyLe3 zkaad@QRUElc2vP4fYt$@eKNQ`Y4q1eCDXUK)qUES0mdB z%lq&6u%jBJ8E$DE7D4sBzs?I9Dp!CZ4$PS;*cPJt@v6}JpLiajSP)t`Xg7yAe>@ zCO;)5%3rxlfh84=zZDlniga^JdC9MrFu=-x{5$ zlX1VHZ0kk^LdC(54$8QRr$*N^QF6bKva06N_4Nfc^;Jdd>xg!Aps@CIs%pA2n1_Ja zG|>=vf}RK@6hT)+&xMIRG>{MDia_D*YhaqF420UDLnhR;GAxkk|B_4_94srseO`2* zK7xBeNyX_|BzFM&5IFcMEGZ`n6%Ee@Q%GAqJg;TVmCaQoQp58DRVJ>wJ3T8Y+J^94}7@m%V7gRnB+ zJWdiTwB?&8B*q7FWudCY`cA$aN$_PGy3KJDfMk7Ij8&INt8X10VZ;h!Lx*OPKSR*X zz|04%Fo8I-;BRmr~Vce`r9(dhsHnv;1XPWeyJu z?F`zfI@g~cP6g7AwE8n7lG50P&li~0tMe#~4OGcX?4^ZZK}59k{Z7oPh-n2(z5T8} zOC+K$@Voi!kBGjIy0M;VC^qB(EQoF@fQ4%DNN-4xdR{Y3x2UFUVN=giu7`>;XwOhG z*57K%X-O)58RnVOECi{`*o?xK4;#2_Ko46)lcM$m)GmzZme7d8Kd&)I6zY~<9Uig~ zcI~hjc_i$*KsFy11<0=l#ejLe@&>2`HucVd^@HXn;hI8F(+aA1unu2F^O~6feNW3K z+PHHHNZ4|}*b-=RiWR&rSo2X;@#0M4VJFj>@XA28+ElIL$q(~VRu4~Fwfd^Kj<7Xc z<9&Iq4P@(KRUOa5Fj?~YK(?$t?I#X72xbZ;BVOw{W&v>r$H zuDY88g`{N`wL^CcNFA~L$aX2@EuyFmBg%Fg&lNN(uCQ>5c011os4BOUBbqy|3NqUqHS0V^_DAQKmhsOfexlTimg;XV71B={2s30`gE9Cn8mfMP$$6gx`y(A8m}V6e{}QD)Wz#0Y`H=j~}xGj>yjpquo$sWVCB!?d(EE8py( z8&--(X!>-Nqr*if8!pC7-7`Fr>ah`7q+OD{3lfLLfo3m6xEA)OySZ9xo`3-lo@4ic zKeT_b7h|QO)c4b18%Wesfx^KRW<4KJo@N6|0MQ-fV}*;26?OVU{tkC>Q%!S~uYXoP zGdy#e!~RgvErX`h5ls2)@F42vhX-LjH&MPYJcO>7F_mgwWPOL@C@3Od^7wl%$i1=; z;;@B8ZYr2p9)m!Q?3C9Zh{%tNZO1!2sNw`r2mDOOqW{Joc!vbKGZb0(iddt9zRVmJ z^nZ}+x<=uqDzi3N{wi0@*w=)@GP6PQx=>$c)=uf?6+@-?&&JiKMz(60Ta%bKghOR; zE_|AYXWM&`Z~66yHRy7peVb~1PE!?3ZfrHRRmDxYHBCf4;7^3Eme|Zu{tl!8yRC|M z{Q|+P`|rHXL2l^wR!$L2q5i=^LV|GY_D^W^qAF&x zoX~s}AJGT4aRCkdW4~mm?oa%*;b>U#nLk`Ei8@1RXC$-k-vL>J_LRdKp89i|8k-X2 zfFUnSPyKJ6C$?#u1D1iX2dDmm)dQV6_z%s;e8r^lgV%U~W(7+`m{-`Wr9}R9Am69? zk62}A#lED}D%cmAb%ozR8gy&@en)wI=7Z!QpYMCA*Bo|G-87pAEoPHaVtCN-!D}&qShr zqNT~SvUSz)V#%Eyt+1D5_fm70zBD#gIZ=rhC#-BrYy{EMG;OVi@R_!kurdro3R7>icOFK zz8B9n%9Sd=94m~~8lE427}#1?Xl3FCAWS18bYemdYBWO)WaN4o+ka9<@$#{Rh%Sbv zXw9IfKbwZEX(Gp5nNRsx85;uS<77-@6$Tp7#;0|vSa1ZxBB+ZJ+Y;XD<9PT;c|4CG zPvG$5CJ3)BF~_PBc?wVhzTu>uB!dk*i>g*JnU;+s>y`h%pvVoOfuLm#w&-fvf!UkuWXOO!x{;h7CG+kNdr@T@UMYsX9yJ?R30 zudyJcaDI(BN;htb=*LEsp@`#a&C#ibX`&}zQw=pcu*RVylxn)<%9d&n8fwk@6wo&o zV8&Ge;!Hy_3oDz}-0jb+x7IvH5+{6IYmVyurPjPKFf?*AM5ktoG`maJniqsd-ZSLV z`z*MC(cI@?lr>}@H~MCCmo!ujwm&|>y}d2wAP}~EnA01#n|B0-(j!G*D53f;^PTF* zUxr-R06^5g3VU1ARJ~!F%?*-JO@z2xLD6q(Gv6%@Rl%8rPe^aW_yxmf3noJ#BshiX0I%l#in>b4o~({%jEFCmrAY?UA+FkZ*!m+Xwa2{+Gw%0fezf z%}0ys~rF7Tk{8>l5W_h?HCXo0#HL%GpU3wR^Huhr^ z87uR9iFSwJ$A4`iV}iIRIKkR%JB=l7%|gUc{)n)vLv75dH~Y1T#LE4iU>QG&+JTqe z1OCiR9)53vy%#WK&4y#v2Y9rc;#}*d-pAiEUnAK+V3vl$#evdNGEPgt`^dZILRr3k z38AQ-=lXU$&) z=$;cp0h+V7afGO#3W^GVfjEPWdnbN9SBN(B>rI{(y=`);vlkg;-oaj&F z$=t{|A?2ZXOMFHe6bD8R>RaBhu(7cUY}saVGyq_j^^+o#y0Ym{CW)T?(4Cg3)pI!E z0!wB}8j;VVkT(!z7Kcm^zTgDRLU`vnu^bMmvi%WE780EcJz}P5Chrj;HUGh^+zQ70 z^eo;+*vJr-CrBg~eM3HBgDX@Aw_@Sen9BKnsVQ)5Q9wGH*Da$1$I!ScD+D`xWf8q1 z;4>AI6@!zaMC_&$l9Gw?8h(XC@t6edY6 zv5sYa@o8x!YQeB3%AEWi>wrkN)WgD7l_ zt{)3sk zO1H9^H{>7e@L;X3-z0n`uTJAFwI$J+7&r_gy$>=dNDC)a3Lr1 zQ5Kdi7+UDzW-?Jd#$0S{UdW9nmC$jC*|+2nO*h;kNX7y9JrFhdQ#5%Ts)YAepwCIa_BakPp2$&i|c9LcgPQl;$0w~nU7^A zQe%c^sM4{uF0V$p8|odl-sFeH4&pf>Hprq^)B80e*B{YGgu)<8R8%h{N_!OOeA!OR zQQiy2_X&<5OPs?4=`j-k+Fa$wxaXMTtXGBV$*o$>s;7<311Fk5*}M>g)stmrGND&% zxL4*x+N53{@=PZRxKLw(P;9$W@qc94nfj|dH<6ClS&;M{updV22hMg+5@sl*fr~RE z5l)3A<|$tzPXg_IgC<6`!eRlh(;OA6EU?=avIMENdAVZg%6f+(j$i}FU*|bLn=HonOSaYK7!^A#yWJ&;3vqCh~{G< z0%A}5gs^3T{8Q+eTPk6JOnjD3&=tU47p|uuifBG(={dfjqT%WQwS7{4=`UY4*wlS} zWkN*tAFfbCX%ppH8i%$bOLjIab$O08|D_ojo=I9)=lmIfpqdLbi14M{67KkJxJTso zG)vhT3?fk0O7SD}$>uwFKZ&aIvrlz=Et{$i*rZd{`Nf~PoE#E%air>8@_9Ne zxlo<|^ZC+2<#(SSEPhGYpFS@e)49ujPq=8RkVqiAIXPVCq>^De7r?JkM9OH0Tv%-_ zTTWFD&QwP+mt;{19n=O(PH!Brr6khz4ORd|8A7jWFcpL5xc_h!BTqPOB7S`j{LQAk^T(m~Q9wW38I#pSmm!FeI z?bAuLPH+cXq8xhW4qK+hCFRBv>Qzuo6j9>TDS;kWM*AMX$Vd_6dw^w|VvO$rZhtAp z`W~n~`8fXr4DjRq4^S}%{{sxVu@3(eNQm=4z%UelRmSr2i6X%t1cuxRz6Y3uC=&e- znM5(s_mB*UO!7TY1E0yhhh)g*6v<*frA(kRfT=#O6p%2@_dp9x7kzY5mO$^J8adH1 zGgt80?HGBqm)#r%HN9 z$V_m9;SlE6x=aa7soClZYJ6yBHw&tq_QSKq%RF->#uR~`5BZ1auq=r&6=I4T7)mq0 z^dcJgTg0nKw2utQ7PA0`9l4T@%4FCQR9fK&bVNM3+$LcgzPdb#F^%PBNd2IL8kaAO zS6Ie6=0hBa8?r#mJ{({d@*>NN=r`)ap_|gtp zD27TUVT&cknH)xf3C5Qt9D;Hwe8VnvxR}{%d1l94C%mDs#LT&#w+`PpSxzEu;H}Y* zN`4dMiVlMnVymg-b(+0Qh*MfD^H$J0@J;Xe{Si98YhyFYBA4X zBez=EtF-7At`S4R&Gb57$Qcti&oIuQ7du*4)T~=x*#x(>>cw!dFm3dOGtzKirG6sN zNJ7?%qSNR-br7wc9M&wxNokv5G!n(lzIb2+8FGslJd?z45DLO9ag%QaZ>oJTExk>Q znAz4)U%R1o1_{1{>Jht9bEiajd8b+BP(YjHV=@)DQ4|Nee48lO4I^v@L+%1^82@2e z9o$A$g&NH$ws6ghr)2bZ`);T$5pUucOV$HP`Bn+D(2c&A*8VWo4j9ULkmzl+_J?^< zA6^Yku^e!*d&ghPSKL3m6g$OI%p@TX`g5$^B>@9yx;BFqCtUbtZz&)(QM;LqB+8Ac?Qi` zem%WJvj%?OSuJU*`8H;XIbT`GTGM{!Q$bUJ+{@I^9>{C(LU=Ps3lQnPBG!?3Q0d zKTirehb1gi@>4vz{0-Wzw2-LNEPxQNf{EQ*5+SL8+O$T!EflFNdg%aj&`LG$3L8~$ zI4j;Gg^a_PD%#N#-9LQASt2^K3-$Vca#|w-12g&iqVjwoD$hr>ky0)pAJcNIYc+yp z%corCh?0K>ZI|`P|AKI|U8a!W&*`wxya9~i|INjQe*uA@tM}Dp_?IIpjf8w9!h)ND z|KZ9f28Fz-zM;*0xYZ#E`4+fa@wCm`l4Y$M2>h~s za8j4_@Vu&d&Nag9RC~ds+dTW4znbm5-D6nwWDm(Wf8Bm(qsMUI$$ibv8V`MJYu48U zI@b!%q}mM*7P^s!zVFGNKnSU?YHn+W;I6fvSDOb_d4~$UgTecnKfT>EC_goDu{xtd zUs3Js_wKpf(|OW+e6z>-y0_=uf<~_)XusQ*_f3FvwTJrCc(JY;4^6Aa1JMV<;i|Ra z#wQJ~{qUnEu>GS`180SzH2Zi*4P+Ujx&G&cBs1HZr{#FVWrjcZw~qq>R8Sm^AHA=c zN6!G)Z>ZFL%^BYWwl%vyJT>r{p=Y1IBG0wj1M;gYy2zW5;qb$=?w@mV;L_K#zn=RR zNEm$cHqYQF?)X#1LHc0W`{Zkixv$Np!4(i@<9EWt-`L?6X1ZPHSmV(f-q`1!(M9xz zfT#350af$b=Cw<|&N{uuGw|(~Sp#1Wes*}?VA#o%`&Pd*&pqn!yt+ou{qrge`}etP z_SI#4RpV^(I013}SF4@tJV1Hh8gOg&?5hQb^`3nV=Wp}0&Dq!Z4QZRZuZ}*<+E)(` zvwH%ZJDzmVIvE8&_RVqL;`w^+zPZj8&%SjTU(IoDpu}$Wd^Oj3t4CkqVyWn>YTD{t zESaj+ZT0(V+UC?Xd)n6QTirIdZoQ|i)^!WWceQxhW`kxM>e z^`ybP{%HdN1%LMR&lr^V8{w|KrQLX{XA>kcpQdrg(_6Rcj`c{Ki@YBhn)-foD^D37 zetJOOej7-c@16z8y2`x$K?A>RtO4PJ-}PGtiw$o*-MP!tRj%45c)HBn7J0XO`?{sH z6$QK2c>Cq;89maBiuvtvAZpOdQ|po#DxTiDb=yWMP+#O_sXX4Ur6D?LbV8%QVR%?r znPHzRsTQ8du*V1X9dPFeZ)DhGrat*%dszRd0R!Y}vV0)0C#XVic=o`wqX)uA$@2^s zp`;bH4|;mSGb+fgOncPmxBGft1pw}kg}6+6o8!RK9UG-5`=<>~>o*Ke>Q@Y=z4?Hr z{p@H`(M`ID0lf9csJ8;VM}xQ4=gq1E{J}4vU!ku!PNb6^XHW0+4E|i9-0d-Tc#IEw zD!PLp_w5(oD)VL(1bI7mdpbKjo#5_z(cAy~U}OK-puz0^K&XeJ=lU;0Jv=uU*rUj( z$TI{SF~Hjya%R~lJ5ry?FpU4x{cFLt!v@_``()T@+@ztsW``lkuKV^8cZ{I5C``&%k&JVnX&uEMv-EK9F8@8`{|Ekk{ z-hol)j(YV2l8Ws|z0N*wflK&vwmmQYg#$e=PwRP&c4tq%=<4-Oo-+;E?lsZ&PFjP;_9{sVi8_#Xm9oxFClnQXK>n!s^LtX2E z!UP#Ude*(nFz5!YIPb2Wp`J%Vy6@X)aMCXHwxUJoP^hjyt zr5U!kX$4G&z6UDAdDIL24=qlg_u#FbLmNEQGaTOVK`TfOQr!ViARx5mDQGu6P0si8 zy*)HS7wMK&fK&;U`X4G4wBcVas5~YZMgr)+^mToVRg33Uce`d#)kDtT;yD0aTZ`u@ z!zaQA^XzGooq{sUK3-RJ*d2Cor^mI#+mTLOOT8U4Nrj>4uu%AmJxj}U-_Uv3Kwhf) zC%kQh{dh>|$g(Fo9`k^LPnOLefPv2ImQlo&hI{DyNVfk0?;tVM@1s9Hc&aO$y#Pdf z4t~x((Y4w;C_7yv9gug2LUnt^U zD?nhk=q;ad>W|SZxw@5*1oY#Q?y!R% z?+K`~?Js%_9|@0|?b#+tWkd-0Nu%erj8{=R&_1{@ot@Y&5$wweeKFDsEb@-+nppfknQVngw`8KqZmwHZ8mr;3!>-U4$ zLvMSxZ}zwbyv}VN=X+jA-1)Be&{6O9o4kkmyxS|hhQJqk9L~Rcd-@@oYq587z@XeP z<4AizR6+G~&_CsPVO)iINQkq@+bxGg4PL>RZ66x}1(G{I^Y)yEcolLepKyJ)y+HDY z(35SS1aDG%H`_irc&%s89W?blZNlQ;>_uZC`fV=^jM_gN1nDdG&ptKqEfpT&+6Ep% zV~*YAaIzQDZ15S+b;kx|TVIqXXW%bcY9phJx(@~bUxyN zYAssnt*?UDj4Y`FJ``@e?vUUw38 zln%-a^N+YE(BJ04v4&p+ht;kN0Y#JOyP;J>k@i~cV^t-+?UB&Aoj)TT{DyWnUmC!c z)@s*|%6OqYbdsS=xL~y#9WV7&!#jnXPS0+5sgQHK2Rdx`KcTb(qoCmZ(sr4_{G$8+ z3SRB)4mke0caPvXHSjAi=iyxE}Su zEaw7r3D6Hfzi?6rvD+ufp_R+K!{L=gv+edV7MP+;oVMC)GWP_xSy$v5HXe2B7?6R{ z+pqO*yUyEry|*U-oHx$xkyo^3yH@wL<;2SPQd?$-NJ6WJsyTN_bbqIzr5dF z@2u@Rw8}dG2QJ;?XkM=EbC-3GgASPgwr|wK6P;R7pG^22ApV{XzXQeJvG7|4zo93C zP^yiC@JweU{5fFbpk8iJJlP|kMD={Wdq!Nhp2pk`uSz1*k8jy|!SNDfIP5A#wj>Aq|@``va=pZvG& zFZMp2XTM$=ASu`;+_1o&Jo=><|Mnt%9c_>xiIvU}Y6J4*lkfLT9)IBYg+AvN@1grW zkPg}6bxSI`BR|dd49ZT0U+h*LU+4iZVNXEbQpL;r3lvXM8H7|tbp`g`SYkgZ3tZjT zS=T#dk^KgVq*mCv*lv*2_Vz5cOX=gmCD78J@Hp!{uE#yjT93=^ajrWD^UmgTu7e(D z19Y^`de6rEiq5P2>Ofl#c=|`RkNt)PKj5h$5EmqzKj^8EoNhknX6_)d!Q*7<(zAu=bNCmd9MB7*_P#c(&Jp?ajidhy3W&X zKHq%K*+esSe*L-gP3Q72*GNw{oof$pHBo=)!|S+2L*Ru&PYJH2P|PQVx0c$A6JTxh z39OAi7<|XKP%Z5749LzM@C;k3TCTNUtA5(^{XEE{bNPjn_s@f*Ad3fuXRfu6aUAqi zFs$&8>wRzAoQ(4@(l=gkec)}IdmaY)wHIK~JIC2{;UxUK?m|~Ed^NL&^%uJ2hv(?) z8ZS6+rVe#$FF0?x&=m*)%Dpu7LT{JUkosLuxZ%d{x+I6^M9vuu*-9Ox;IQ#L`*J)x zXa0fX)!(@Tp^40&9CnX<&@g#aUY7*IJv*o0Fc3jw4upWb{+9*h1A#Y#T=npHuA57XBezCtCCYP}4=n0$-OR$*GMP67L^+Y-a4_(=O z)t@l97*^_K@q=e?K|Exyy5O{rB_d zi*Xl2T+SJX zyFDjQ1PqR*8U2xRfn0VI*DgL6 z)5aGLZj{2n-T`Za@L%;6FhR-wf%b4g7qWjiu0K|BVWSj6z*4Y+^gPl=dVXk=bSG{v z^U@^-OzFxmT|a%|&&PND=zP#~T=)?d3HpkY?%wJf z?2!`3g69Gb|LK1IaL>Lw4i_IxeWvKSyAK8*DtrF@BLyzYGrt^4I{54h^PVp}I?>(H zd#3lOOL{2b&@V3Sp{dXJ9)8F@{>TSUzxv`^FG`Lk94bC)>N{{O;U}npPN>`9p9W;` z&*<<2$1{H#3;`&6B+?5DyaQiV99{a8J903Hwi;M+oP@{T%QxERNfy8Nv*BMq!;C)h+lV|r-UE285_Nq&C^f**?307#wt1j))9fPr3U(r1dUeVW0g7bodgP%Iu_zM)~ z_`om1j7qyk`SHc-t{8(C{*8ivh0;pGlXR8M=%Qr>S~c5+8~9ZZ;a@9nLk5J7dUw@_8fQ4m%19IPLN+OjXu;M?Xp40ZhhBWL+`I$ zF|Jzap*k8@h@F|Ia$GB&?|jsAe5o{V@_6SSPxTb|Z*tgRbicx_g;_{&T_>H4xb^@@ zI<;8Q9=SW?o1mv)l6%KRS`f%$#qsN48?}f;b&A=~hS!-k=E8TC)P8ove6hM&5J> zT_dF%&i)8pmss<2!BbRu`ADQ+!`46!+nN& zM79OO$nTc%cdFbYV@Hu8_d%S@UCb(Eo2)nXv(Q5lsr!Twkt_LA5-&(>!IyXaEo+J+ z0*oGw<+j%B{Gu6fPp=tX&ce_7b#n0Vy|%utp}wZMp~(pEq^FjQK4<<;`d}VmVhG8z zf{AqL_T{xJ?q;TJa5Iv=Dy_1)wYbzi7v3uXr?07@+-i)PKpM*&^e*OIE5RgsMb)zP zt5((2uWG%ern$OdeRFG5Rc*ua%I2DedZJc9s`QN4)aJXLHaEDw=xdn_ua~&j@zGNRnn@F5$L}WPLOGZx0&lb}v+tl0;hO|&eM00q9z>%jyo9uXVB-vjtR^xkni_Sov#T=uw3f}5Y)9F! zV#3e0>uZ{-;M_3=%pT}5bOw=)p%#5(xm^`EP#?!FPvXaOlE$PqOZHWAJ}6Kd=p-h= zU=_a!fj59A7+}{KX0!!bgTBJ)9DDMsbLYP6`ud0O&UgLv)sH`Qz52mFy1w}C{Q1u> ze0j(zNc6JHV3hf{y8~C);gi=JxFY{|op3tGl5*ts{L=vrmfPSsBEBO@9xs~yOyH#l z!t6EAQ;0l~b4i&<0N5^L&b6)6X!I$BEQG zjzmr-zUuM`o5F>W-rYAFt0j=bs9h~eneeV7-*{wG{%J|?tj+nSsQWA-a7+G7b z39%CR0}VX+!ky-(=B=W$X0*@QTED^0thh{)eE;XR~^w@oPS-?DnhZPfm zERq<|cMxT0f@|Fopz%YZ;QUCZzFG)4YcyAi0Y@3=JPFZJX>dXaws(5^v$B<5zJ!~o z^sG-4H6k8^LFCa?eK!zQ3|KZ^5kUvaPBY{O0`wrMP|$dm3RtqJKh4D(&JG7At$p` zmuJe@X>#~1Ds1SSQa4A&-b>~Pol84!I0K}e_dJjkkwrt^O6!H6V9LzksK)7h3MkS13dC zhBBdYJYQLms?&Ft!YuSz2UQB^WQ@<*1| zu3aU2kXGx6(_u2B<|;@@o8TQnE34pA?ur#nS8#%NTUPd@MJ?CYQenPJUE;YkEowa% zH(W~^uGW&ZBHJM?Y2t{e0UXzoW?{{}`O%Kh^}a&F-y69_j7AL);8q^Ip0LF~x$s}g z3*9gjLw2j|KBB(uYP|`)eORD7Adu=#F#}>lrZ2kODCIpV;KdY4-}Q@UBR!_(ul7{2K09FxSQKrV0Lr zcWNvi9n4)}Br3MiZe0A!5@{qlg!*W$%(kS+R+O7AdZm--P@(RXtf=c0JZ^q5`wJcP zx@DA-JLTq=EwC*t5dTO57}o2;xCgzDXBGcG3ET$Ig^MDJ7J&&L|N9g4&6N?t=dWbx zQzE%K;4E)MMS^m@VhT9z&*O7zcOSXRDN6qib3qRH$1f@G)UPiaB| zoihF@9Dgkbr<_ApF6xVE^0P)_bmy0g6N;0nM2=`KT}TMst@hza_{{&8yo1%=pNbsoqp@> z0YTE0^S@oA@`41ZE%<*9Roqphs|MzD!^UJ7U7=?RnIMkHV7r`nRTTL|Zknu`DhB)CH4GkAl!ou%25v~-iWN~vniDadVw zuDf+;+E4VETzGs^dfU1+HI2S?gl5(VL1o|tZ-t)27YEE1P&JoyIIchuF^?PB`zBZ< zG)r71&|%gLg%5*kNnq=?h0T?~4K5}TP0on4Sf)uxu9z_}PPdNm=XnXSfnZeAsTR;XXTviN6Anm=-he3tLwT^+QWx>G>Clj#R%%KH zlhu%7YUT~ICK#zpK#UwNE!8?`q*5_*nfP7Kzh!V^iG(d8Fpk4QfnH)=Nfe7g2wc2` zhYS+3L}W9Q$d*D_#kHVEJmgG5Z_d#Y_|3{7lF zM5Sn>4lCNt^UF#}2))xpZLHFXY&jJPx0*zes;ZHZVOAWn(jQu0Eox!SRiUC*!}OS0 zdM0GsHdEU0Z8EiHk&re1__A6^OnW8*8Qc)h`f_#e7 zHKZqdfm1~Hm3s0x#rXu)6G#f)G%WrFB-MTxfms*OT3kZAO?a2vlRO&}o+49(@4uKH z8H2Soq?APj)swpk)eS=b&s uh=2hD1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz(C)?W%dCxrfM?) delta 384953 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 - bcs .9 + bcs .99 jsr BS.MLIGetEOF - bcs .9 + php + pha + jsr BS.MLIClose + pla + plp + bcs .99 - lda GP.SBUFADR+1 - ldx GP.SBUFADR - jsr PRNTAX - - jsr MON.CROUT - - - jmp BS.MLIClose - -.9 rts -*-------------------------------------- -BS.ExecCmd clc + lda GP.SBUFADR+2 File LEN in GP.SBUFADR + beq .20 + + lda #BS.E.TOOLARGE + sec rts + +.20 lda GP.SBUFADR+1 + sta GP.MLIRW.COUNT+1 + ldx GP.SBUFADR + stx GP.MLIRW.COUNT + beq .3 + + inc + +.3 jsr GP.GETBUFR + bcs .99 + + dec BS.bFreeBuf + stz GP.MLIRW.DATAPTR + + stz BS.KW.JMPADDR + + lda GP.SBUFADR+1 Buffer Addr in GP.SBUFADR + sta GP.MLIRW.DATAPTR+1 + + sta BS.KW.JMPADDR+1 + + lda AS.HIMEM+1 + sta BS.BUFPAGE + + lda #$01 Read + ldx #$06 BIN + + jsr BS.OpenTypeXAccessA + bcs .98 + + lda #MLI.READ + jsr GP.GOSYSTEM + bcs .98 + + jsr BS.MLIClose + bcs .98 + + ldx #BSX.Rel.X + + jsr BS.ToAUX + bcc .99 + +.98 pha + + jsr GP.FREEBUFR + + pla + + sec + +.99 rts *-------------------------------------- MAN SAVE usr/src/basic.fx/basic.s.b diff --git a/BASIC.FX/BASIC.S.C.txt b/BASIC.FX/BASIC.S.C.txt index b1b62e9f..da5de054 100644 --- a/BASIC.FX/BASIC.S.C.txt +++ b/BASIC.FX/BASIC.S.C.txt @@ -153,7 +153,7 @@ LAEDD jsr BS.MLISetMark rts LAEF7 ldx GP.XCNUM - lda #MLI.C.READ + lda #MLI.READ cpx #$0F bne LAF24 @@ -169,7 +169,7 @@ LAEF7 ldx GP.XCNUM jsr BS.SetSBUFADRXY0 jsr BS.MLISetEOF -LAF22 lda #MLI.C.WRITE +LAF22 lda #MLI.WRITE LAF24 jsr GP.GOSYSTEM bcs LAF38 @@ -291,19 +291,19 @@ BS.WriteXYBytes sec stx GP.MLIRW.COUNT bcc BS.MLIRead -BS.MLIWrite lda #MLI.C.WRITE +BS.MLIWrite lda #MLI.WRITE .HS 2C BIT ABS -BS.MLIRead lda #MLI.C.READ +BS.MLIRead lda #MLI.READ .HS 2C BIT ABS -BS.MLIClose lda #MLI.C.CLOSE +BS.MLIClose lda #MLI.CLOSE .HS 2C BIT ABS -BS.MLIGetEOF lda #MLI.C.GETEOF +BS.MLIGetEOF lda #MLI.GETEOF .HS 2C BIT ABS -BS.MLISetEOF lda #MLI.C.SETEOF +BS.MLISetEOF lda #MLI.SETEOF .HS 2C BIT ABS -BS.MLIGetMark lda #MLI.C.GETMARK +BS.MLIGetMark lda #MLI.GETMARK .HS 2C BIT ABS -BS.MLISetMark lda #MLI.C.SETMARK +BS.MLISetMark lda #MLI.SETMARK jmp GP.GOSYSTEM *-------------------------------------- BS.KW.PR lda #$00 @@ -385,12 +385,12 @@ BS.KW.BYE jsr BS.CloseAll jsr BS.RAMReset * lda #$65 jsr MLI - .DA #MLI.C.QUIT + .DA #MLI.QUIT .DA GP.MLIRW *-------------------------------------- BS.QUIT.IIgs jsr BS.RAMReset jsr MLI - .DA #MLI.C.QUIT + .DA #MLI.QUIT .DA .1 .1 .DA #4 @@ -478,7 +478,7 @@ LB0FD lda IO.KBD lda GP.STATE bne LB113 - bit IO.KSTROBE + bit IO.KBDSTROBE bcs LB113 LB10E lda #$FF @@ -531,7 +531,7 @@ BS.MkCatLineF jsr BS.SetSBUFADRCMDBUF lda MLI.DEVNUM sta GP.MLIMRKEOFBUF.REFNUM - lda #MLI.C.ONLINE + lda #MLI.ONLINE jsr GP.GOSYSTEM bcs LB127 @@ -608,7 +608,7 @@ BS.OpenTypeXAccessA sta GP.OSYSBUF+1 lda #$0F sta MLI.LEVEL - lda #MLI.C.OPEN + lda #MLI.OPEN jsr GP.GOSYSTEM bcs LB238 @@ -742,7 +742,7 @@ LB2FB tya sta BS.BUFPAGEs-1,x lda BS.REFNUMs,x sta GP.MLIMRKEOFBUF.REFNUM - lda #MLI.C.SETBUF + lda #MLI.SETBUF jsr GP.GOSYSTEM bcc LB30D @@ -755,7 +755,7 @@ LB30E sta BS.BUFPAGE stz MLI.LEVEL - lda #MLI.C.OPEN + lda #MLI.OPEN jsr GP.GOSYSTEM bcc LB327 @@ -782,7 +782,7 @@ LB333 sta GP.MLIRW.REFNUM lda #$7F sta GP.NLINEMASK - lda #MLI.C.NEWLINE + lda #MLI.NEWLINE jsr GP.GOSYSTEM lda GP.FoundBITS+1 and #CMDBITS1.F+CMDBITS1.R @@ -833,7 +833,7 @@ BS.KW.FLUSH lda GP.FoundBITS bcs .9 .1 sta GP.MLICF.REFNUM - lda #MLI.C.FLUSH + lda #MLI.FLUSH jsr GP.GOSYSTEM .9 rts @@ -911,7 +911,7 @@ LB41D jsr BS.GetSysBuf lda #$07 sta MLI.LEVEL - lda #MLI.C.OPEN + lda #MLI.OPEN jsr GP.GOSYSTEM bcc LB43B @@ -1143,7 +1143,7 @@ LB5AD lda #$EF lda #$7F sta GP.NLINEMASK - lda #MLI.C.NEWLINE + lda #MLI.NEWLINE jsr GP.GOSYSTEM bcs LB5F0 @@ -1252,7 +1252,7 @@ LB67C sta GP.MLIRW.DATAPTR stz GP.MLIRW.COUNT+1 - lda #MLI.C.NEWLINE + lda #MLI.NEWLINE jsr GP.GOSYSTEM bcs LB69B @@ -1485,7 +1485,7 @@ LB805 dey LB839 rts *-------------------------------------- BS.GetFileInfo ldx #$0A - lda #MLI.C.GETFILEINFO + lda #MLI.GFINFO bne LB858 BS.SetFileInfoNoDate @@ -1496,7 +1496,7 @@ BS.SetFileInfoNoDate bpl .1 BS.SetFileInfo ldx #$07 - lda #MLI.C.SETFILEINFO + lda #MLI.SFINFO LB858 stx GP.SSGINFO jmp GP.GOSYSTEM @@ -1550,7 +1550,7 @@ BS.KW.ONLINE jsr MON.CROUT .1 sta GP.MLIMRKEOFBUF.REFNUM - lda #MLI.C.ONLINE + lda #MLI.ONLINE jsr GP.GOSYSTEM bcc .2 @@ -1765,10 +1765,10 @@ BS.KW.PATH lda GP.FoundBITS jsr MON.CROUT ldx #$00 -.1 cpx MLI.PATHBUF +.1 cpx BS.CMDBUF.LEN beq .2 - lda MLI.PATHBUF+1,x + lda BS.CMDBUF+1,x ora #$80 jsr MON.COUT inx @@ -1784,7 +1784,7 @@ BS.SetPath clc rts *-------------------------------------- BS.WBlock jsr MLI - .DA #MLI.C.WRITEBLOCK + .DA #MLI.WRITEBLOCK .DA BS.WBlock.P bcs .9 @@ -1811,7 +1811,7 @@ BS.Expand2PATHBUF beq .1 jsr MLI no, get current path as a base - .DA #MLI.C.GETPREFIX + .DA #MLI.GETPREFIX .DA BS.Expand2.P .1 ldx #BSX.Expand.X diff --git a/BASIC.FX/BASIC.S.GP..txt b/BASIC.FX/BASIC.S.GP..txt index 6e1ae09a..d91d8ca4 100644 --- a/BASIC.FX/BASIC.S.GP..txt +++ b/BASIC.FX/BASIC.S.GP..txt @@ -1,12 +1,12 @@ NEW AUTO 3,1 *-------------------------------------- -GP.ENTRY jmp BS.ENTRY -GP.DOSCMD jmp BS.DOSCMD -GP.EXTRNCMD jmp GP.RTS -GP.ERROUT jmp BS.ERROUT -GP.PRINTERR jmp BS.PRINTERR -GP.ERRCODE .BS 1 + jmp BS.ENTRY GP.ENTRY + jmp BS.DOSCMD GP.DOSCMD + jmp GP.RTS GP.EXTRNCMD + jmp BS.ERROUT GP.ERROUT + jmp BS.PRINTERR GP.PRINTERR + .BS 1 GP.ERRCODE *-------------------------------------- GP.OUTVECT0 .DA MON.COUT1 GP.OUTVECT1 .DA BS.NODEVERR @@ -85,15 +85,15 @@ GP.GOSYSTEM.P .DA GP.GOSYSTEM.P *-------------------------------------- GP.BADCALL ldx #$12 -LBE8D cmp BS.MLIERTBL,x - beq LBE97 +.1 cmp BS.MLIERTBL,x + beq .2 dex - bpl LBE8D + bpl .1 ldx #$13 -LBE97 lda BS.BIERRTBL,x +.2 lda BS.BIERRTBL,x ldx BS.CALLX sec @@ -153,8 +153,8 @@ GP.MLICF.REFNUM .BS 1 GP.CCCSPARE .BS 1 *-------------------------------------- GP.COPYRIGHT .AS -"COPYRIGHT APPLE, 1983" -GP.GETBUFR jmp BS.GETBUFR -GP.FREEBUFR jmp BS.FREEBUFR + jmp BS.GETBUFR GP.GETBUFR + jmp BS.FREEBUFR GP.FREEBUFR GP.RSHIMEM .BS 5 *-------------------------------------- MAN diff --git a/BASIC.FX/BASIC.S.LDR.txt b/BASIC.FX/BASIC.S.LDR.txt index eeac11fc..fbee90b3 100644 --- a/BASIC.FX/BASIC.S.LDR.txt +++ b/BASIC.FX/BASIC.S.LDR.txt @@ -157,7 +157,7 @@ L2115 iny beq L214E jsr MLI - .DA #MLI.C.GETPREFIX + .DA #MLI.GETPREFIX .DA LDR.GETSETPFX.P bne L218B @@ -177,11 +177,11 @@ L213E dex bcs L216F jsr MLI - .DA #MLI.C.SETPREFIX + .DA #MLI.SETPREFIX .DA LDR.SETPFXSLASH.P L214E jsr MLI - .DA #MLI.C.ONLINE + .DA #MLI.ONLINE .DA LDR.ONLINE.P bne L218B @@ -194,7 +194,7 @@ L214E jsr MLI lda #'/' sta MLI.PATHBUF+1 jsr MLI - .DA #MLI.C.SETPREFIX + .DA #MLI.SETPREFIX .DA LDR.GETSETPFX.P bne L218B @@ -222,7 +222,7 @@ L218B lda LDR.PFX.LEN bcs L2198 jsr MLI - .DA #MLI.C.SETPREFIX + .DA #MLI.SETPREFIX .DA LDR.SETPFXSLASH.P L2198 lda LDR.STARTUP.LEN @@ -367,7 +367,7 @@ LDR.GFInfoYA sty LDR.GFINFO.P+1 pha jsr MLI - .DA #MLI.C.GETFILEINFO + .DA #MLI.GFINFO .DA LDR.GFINFO.P plx diff --git a/BASIC.FX/BASIC.S.X.txt b/BASIC.FX/BASIC.S.X.txt index bfc8fae5..47441ece 100644 --- a/BASIC.FX/BASIC.S.X.txt +++ b/BASIC.FX/BASIC.S.X.txt @@ -45,6 +45,9 @@ BSX.Fre0.X .EQ *-BSX.JMP BSX.Fre1.X .EQ *-BSX.JMP .DA BSX.Fre1 *-------------------------------------- +BSX.Rel.X .EQ *-BSX.JMP + .DA BSX.Rel +*-------------------------------------- BSX.CheckOpt jsr BS.TMPBUF3Reset jsr BSX.ToUpper @@ -486,9 +489,6 @@ BSX.IsIntCmd lda #BSX.IntCmds .5 dec GP.XCNUM bne .1 - - - sec rts *-------------------------------------- diff --git a/BASIC.FX/BASIC.S.XR.txt b/BASIC.FX/BASIC.S.XR.txt new file mode 100644 index 00000000..035d53e9 --- /dev/null +++ b/BASIC.FX/BASIC.S.XR.txt @@ -0,0 +1,191 @@ +NEW + AUTO 3,1 +*-------------------------------------- +* GP.FIAUXTYPE = ORG +* GP.MLIRW.DATAPTR = new ORG +*-------------------------------------- +BSX.RelOfs .BS 2 +BSX.RelStart .BS 2 +BSX.RelEnd .BS 2 +BSX.RelStop .BS 2 +*-------------------------------------- +BSX.Rel lda GP.MLIRW.DATAPTR + sta ZP.A1L + sec + sbc GP.FIAUXTYPE + sta BSX.RelOfs + + lda GP.MLIRW.DATAPTR+1 + sta ZP.A1L+1 + sbc GP.FIAUXTYPE+1 + sta BSX.RelOfs+1 + + ldy #2 + lda (ZP.A1L),y + sta BSX.RelStart + iny + lda (ZP.A1L),y + sta BSX.RelStart+1 + + ldy #10 + lda (ZP.A1L),y + sta BSX.RelEnd + iny + lda (ZP.A1L),y + sta BSX.RelEnd+1 + + ldy #8 + lda (ZP.A1L),y + clc + adc BSX.RelOfs + sta BSX.RelStop + iny + lda (ZP.A1L),y + adc BSX.RelOfs+1 + sta BSX.RelStop+1 + + ldy #4 + lda (ZP.A1L),y + sta GP.AllowedBITS + iny + lda (ZP.A1L),y + sta GP.AllowedBITS+1 + + ldy #2 + jsr BSX.RelAtA1Y relocate CLD JMP CODE.START + + lda #16 skip header + jsr BSX.RelSkipA + +.1 ldy #1 + lda (ZP.A1L),y + ora (ZP.A1L) + beq .20 + + dey ldy #0 + + jsr BSX.RelAtA1Y + lda #2 + jsr BSX.RelSkipA + bra .1 + +.20 lda #2 + jsr BSX.RelSkipA + +.2 lda (ZP.A1L) + lsr + tax + lda BSX.65R02,x + bcs .3 + + lsr + lsr + lsr + lsr + +.3 and #$0f + bit #$08 + beq .7 + + and #$07 + pha + + ldy #1 + jsr BSX.RelAtA1Y + + lda (ZP.A1L) + cmp #$20 JSR + bne .6 + + ldy #1 + lda (ZP.A1L),y + bne .6 + + iny + lda (ZP.A1L),y + cmp #$BF jsr $BF00 ? + bne .6 + + pla + lda #6 + pha + +.6 pla + +.7 clc + adc ZP.A1L + sta ZP.A1L + bcc .8 + + inc ZP.A1L+1 + +.8 cmp BSX.RelStop + lda ZP.A1L+1 + sbc BSX.RelStop+1 + bcc .2 + + clc + rts +*-------------------------------------- +BSX.RelAtA1Y lda (ZP.A1L),y + tax + iny + + cpx BSX.RelStart + lda (ZP.A1L),y + sbc BSX.RelStart+1 + + bcc .9 + + cpx BSX.RelEnd + lda (ZP.A1L),y + sbc BSX.RelEnd+1 + bcs .9 + + dey + lda (ZP.A1L),y + clc + adc BSX.RelOfs + sta (ZP.A1L),y + iny + lda (ZP.A1L),y + adc BSX.RelOfs+1 + sta (ZP.A1L),y + +.9 rts +*-------------------------------------- +BSX.RelSkipA clc + adc ZP.A1L + sta ZP.A1L + bcc .8 + + inc ZP.A1L+1 + +.8 rts +*-------------------------------------- +* 65R02 OPCODES +*-------------------------------------- +* 0.1.2.3.4.5.6.7.8.9.A.B.C.D.E.F +BSX.65R02 .HS 1.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3 + .HS 2.2.2.1.2.2.2.2.1.B.1.1.B.B.B.3 + .HS B.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3 + .HS 2.2.2.1.2.2.2.2.1.B.1.1.B.B.B.3 + .HS 1.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3 + .HS 2.2.2.1.2.2.2.2.1.B.1.1.1.B.B.3 + .HS 1.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3 + .HS 2.2.2.1.2.2.2.2.1.B.1.1.B.B.B.3 + .HS 2.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3 + .HS 2.2.2.1.2.2.2.2.1.B.1.1.B.B.B.3 + .HS 2.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3 + .HS 2.2.2.1.2.2.2.2.1.B.1.1.B.B.B.3 + .HS 2.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3 + .HS 2.2.2.1.2.2.2.2.1.B.1.1.1.B.B.3 + .HS 2.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3 + .HS 2.2.2.1.2.2.2.2.1.B.1.1.1.B.B.3 +*-------------------------------------- + +*-------------------------------------- +MAN +SAVE usr/src/basic.fx/basic.s.xr +LOAD usr/src/basic.fx/basic.s +ASM diff --git a/BASIC.FX/BASIC.S.txt b/BASIC.FX/BASIC.S.txt index 5f4955cc..5e1a21c4 100644 --- a/BASIC.FX/BASIC.S.txt +++ b/BASIC.FX/BASIC.S.txt @@ -12,52 +12,14 @@ NEW .EM *-------------------------------------- .INB inc/monitor.i + .INB inc/io.i .INB inc/io.d2.i + .INB inc/mli.i + .INB inc/bs.i *-------------------------------------- HIMEM .EQ $A000 LOWERCASE .EQ 1 *-------------------------------------- -BS.E.RANGE .EQ $02 -BS.E.NODEV .EQ $03 -BS.E.WPROT .EQ $04 -BS.E.ENDOFDATA .EQ $05 -BS.E.PATHNFND6 .EQ $06 -BS.E.PATHNFND7 .EQ $07 -BS.E.IO .EQ $08 -BS.E.DISKFULL .EQ $09 -BS.E.LOCKED .EQ $0A -BS.E.INVOPT .EQ $0B -BS.E.NOBUFFER .EQ $0C -BS.E.MISMATCH .EQ $0D -BS.E.TOOLARGE .EQ $0E -BS.E.NODIRECT .EQ $0F -BS.E.SYNTAX .EQ $10 -BS.E.DIRFULL .EQ $11 -BS.E.FNOTOPEN .EQ $12 -BS.E.DUPFILE .EQ $13 -BS.E.FBUSTY .EQ $14 -BS.E.FSTILLOPEN .EQ $15 -*-------------------------------------- -CMDBITS0.PFIX .EQ $80 Prefix needs fetching, pathname optional -CMDBITS0.SLOT .EQ $40 No parameters to be processed -CMDBITS0.RRUN .EQ $20 Command only valid during program -CMDBITS0.FNOPT .EQ $10 Filename is optional -CMDBITS0.CRFLG .EQ $08 CREATE allowed -CMDBITS0.T .EQ $04 File type -CMDBITS0.FN2 .EQ $02 Filename '2' for RENAME -CMDBITS0.FN1 .EQ $01 Filename expected - -CMDBITS1.A .EQ $80 Address -CMDBITS1.B .EQ $40 Byte -CMDBITS1.E .EQ $20 End address -CMDBITS1.L .EQ $10 Length -CMDBITS1.LINE .EQ $08 '@' line number -CMDBITS1.SD .EQ $04 Slot and drive numbers -CMDBITS1.F .EQ $02 Field -CMDBITS1.R .EQ $01 Record - -CMDBITS1.V .EQ $00 Volume number ignored -*-------------------------------------- ZPPtr1 .EQ 0 ZPPtr2 .EQ 2 ZPInBufPtr .EQ 4 @@ -156,36 +118,6 @@ MON.BRKVECT .EQ $03F0 MON.POWERUP .EQ $03F2 MON.POWERUPBYTE .EQ $03F4 *-------------------------------------- -MLI.MAXPATH .EQ 64 -MLI.C.ALLOCIRQ .EQ $40 -MLI.C.DEALLOCIRQ .EQ $41 -MLI.C.ATALK .EQ $42 -MLI.C.QUIT .EQ $65 -MLI.C.READBLOCK .EQ $80 -MLI.C.WRITEBLOCK .EQ $81 -MLI.C.GETTIME .EQ $82 -MLI.C.CREATE .EQ $C0 -MLI.C.DESTROY .EQ $C1 -MLI.C.RENAME .EQ $C2 -MLI.C.SETFILEINFO .EQ $C3 -MLI.C.GETFILEINFO .EQ $C4 -MLI.C.ONLINE .EQ $C5 -MLI.C.SETPREFIX .EQ $C6 -MLI.C.GETPREFIX .EQ $C7 -MLI.C.OPEN .EQ $C8 -MLI.C.NEWLINE .EQ $C9 -MLI.C.READ .EQ $CA -MLI.C.WRITE .EQ $CB -MLI.C.CLOSE .EQ $CC -MLI.C.FLUSH .EQ $CD -MLI.C.SETMARK .EQ $CE -MLI.C.GETMARK .EQ $CF -MLI.C.SETEOF .EQ $D0 -MLI.C.GETEOF .EQ $D1 -MLI.C.SETBUF .EQ $D2 -MLI.C.GETBUF .EQ $D3 -*-------------------------------------- -MLI .EQ $BF00 MLI.DEVPTRS .EQ $BF10 MLI.DEVPTRS3D2 .EQ $BF26 MLI.DEVNUM .EQ $BF30 @@ -200,23 +132,6 @@ MLI.PFIXPTR .EQ $BF9A MLI.MLIACTV .EQ $BF9B MLI.IVERSION .EQ $BFFD *-------------------------------------- -IO.KBD .EQ $C000 R -IO.CLR80STORE .EQ $C000 W -IO.SET80STORE .EQ $C001 W -IO.CLRREADAUX .EQ $C002 W -IO.SETREADAUX .EQ $C003 W -IO.CLRWRITEAUX .EQ $C004 W -IO.SETWRITEAUX .EQ $C005 W -IO.CLRALTZP .EQ $C008 W -IO.SETALTZP .EQ $C009 W -IO.CLR80DISP .EQ $C00C W -IO.SET80DISP .EQ $C00D W -IO.KSTROBE .EQ $C010 W -IO.RROMBNK2 .EQ $C082 R -IO.RRAMWRAMBNK2 .EQ $C083 RR -IO.RROMBNK1 .EQ $C08A R -IO.RRAMWRAMBNK1 .EQ $C08B RR -*-------------------------------------- AS.RESTART .EQ $D43C AS.RESTART1 .EQ $D43F AS.FINDLINE .EQ $D61A @@ -300,6 +215,7 @@ X.TRkFMT.Z .EQ $10 .LIST OFF .INB usr/src/basic.fx/basic.s.xf .INB usr/src/basic.fx/basic.s.xm + .INB usr/src/basic.fx/basic.s.xr .INB usr/src/basic.fx/basic.s.x .EP AUX.LEN .EQ *-LDR.AUX.SRC diff --git a/BASIC.FX/TEST.S.txt b/BASIC.FX/TEST.S.txt new file mode 100644 index 00000000..989ed404 --- /dev/null +++ b/BASIC.FX/TEST.S.txt @@ -0,0 +1,45 @@ +NEW + AUTO 3,1 + .LIST OFF + .OP 65c02 + .OR $2000 + .TF BIN/test +*-------------------------------------- + .INB inc/monitor.i + .INB inc/bs.i +*-------------------------------------- +HEADER cld Allows BRUN at ORG=$2000 + jmp CODE.START for debugging without relocation + .DA #0 CMDBITS0 + .DA #0 CMDBITS1 + .DA 0 spare + .DA CODE.END + .DA DATA.END + .DA 0 + .DA 0 spare....16 bytes header +*-------------------------------------- +R.MSG .DA MSG + .DA 0 +*-------------------------------------- +CODE.START ldx #0 + +.1 lda MSG,x ABS relocation required + beq .8 + + jsr COUT + inx + jmp .1 ABS relocation required + + +.8 clc + rts + +CODE.END .EQ * +*-------------------------------------- +MSG .CZ -"\r\rHello from test EXT command.\r\r" + +DATA.END .EQ * +*-------------------------------------- +MAN +SAVE usr/src/basic.fx/test.s +ASM diff --git a/INC/BS.I.txt b/INC/BS.I.txt new file mode 100644 index 00000000..3f953233 --- /dev/null +++ b/INC/BS.I.txt @@ -0,0 +1,62 @@ +NEW + AUTO 3,1 + .LIST OFF +*-------------------------------------- +* BASIC.SYSTEM Defines +*-------------------------------------- +BS.E.RANGE .EQ $02 +BS.E.NODEV .EQ $03 +BS.E.WPROT .EQ $04 +BS.E.ENDOFDATA .EQ $05 +BS.E.PATHNFND6 .EQ $06 +BS.E.PATHNFND7 .EQ $07 +BS.E.IO .EQ $08 +BS.E.DISKFULL .EQ $09 +BS.E.LOCKED .EQ $0A +BS.E.INVOPT .EQ $0B +BS.E.NOBUFFER .EQ $0C +BS.E.MISMATCH .EQ $0D +BS.E.TOOLARGE .EQ $0E +BS.E.NODIRECT .EQ $0F +BS.E.SYNTAX .EQ $10 +BS.E.DIRFULL .EQ $11 +BS.E.FNOTOPEN .EQ $12 +BS.E.DUPFILE .EQ $13 +BS.E.FBUSTY .EQ $14 +BS.E.FSTILLOPEN .EQ $15 +*-------------------------------------- +CMDBITS0.PFIX .EQ $80 Prefix needs fetching, pathname optional +CMDBITS0.SLOT .EQ $40 No parameters to be processed +CMDBITS0.RRUN .EQ $20 Command only valid during program +CMDBITS0.FNOPT .EQ $10 Filename is optional +CMDBITS0.CRFLG .EQ $08 CREATE allowed +CMDBITS0.T .EQ $04 File type +CMDBITS0.FN2 .EQ $02 Filename '2' for RENAME +CMDBITS0.FN1 .EQ $01 Filename expected + +CMDBITS1.A .EQ $80 Address +CMDBITS1.B .EQ $40 Byte +CMDBITS1.E .EQ $20 End address +CMDBITS1.L .EQ $10 Length +CMDBITS1.LINE .EQ $08 '@' line number +CMDBITS1.SD .EQ $04 Slot and drive numbers +CMDBITS1.F .EQ $02 Field +CMDBITS1.R .EQ $01 Record + +CMDBITS1.V .EQ $00 Volume number ignored +*-------------------------------------- +* BASIC.SYSTEM Global page +*-------------------------------------- +GP.ENTRY .EQ $BE00 +GP.DOSCMD .EQ $BE03 +GP.EXTRNCMD .EQ $BE06 +GP.ERROUT .EQ $BE09 +GP.PRINTERR .EQ $BE0C +GP.ERRCODE .EQ $BE0F + + +GP.GETBUFR .EQ $BEF5 +GP.FREEBUFR .EQ $BEF8 +*-------------------------------------- +MAN +SAVE inc/bs.i