From b93f1d2b3ca016972e073aefd0e1a8e70923c8d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Sat, 30 Dec 2017 23:14:05 +0100 Subject: [PATCH] Kernel 0.9.1 : GUI, Font Engine (OSD) ok --- .Floppies/A2OSX.BUILD.po | Bin 819200 -> 819200 bytes .Floppies/A2OSX.DEV.po | Bin 143360 -> 143360 bytes .Floppies/A2OSX.SRC.po | Bin 819200 -> 819200 bytes .Tools/ShiftL7Tables.cmd | 127 +++++++ .Tools/ShiftL8Tables.cmd | 81 ++++ BIN/ATBROWSE.S.txt | 2 +- BIN/ATLOGON.S.txt | 2 +- BIN/NSCUTIL.S.txt | 10 +- BMP2PIX.S.txt | 5 +- INC/A2osX.I.txt | 9 +- INC/COM.6551.I.txt | 6 +- INC/GUI.I.txt | 76 ++++ INC/IO.I.txt | 6 +- INC/MACROS.I.txt | 6 +- INC/NIC.I.txt | 6 +- LIB/LIBGUI.S.CLIP.txt | 2 +- LIB/LIBGUI.S.DRAW.txt | 14 +- LIB/LIBGUI.S.txt | 3 + README.md | 2 +- SBIN/GUI.S.txt | 46 ++- SYS/KERNEL.S.CTRL.txt | 4 +- SYS/KERNEL.S.JMP.txt | 34 +- SYS/KERNEL.S.OSD.txt | 778 +++++++++++++++++++++++++++++++++++++++ SYS/KM.VSDRIVE.S.txt | 6 +- X.FNT.I.txt | 6 +- X.PRINTF.S.txt | 6 +- 26 files changed, 1156 insertions(+), 81 deletions(-) create mode 100644 .Tools/ShiftL7Tables.cmd create mode 100644 .Tools/ShiftL8Tables.cmd create mode 100644 INC/GUI.I.txt create mode 100644 SYS/KERNEL.S.OSD.txt diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 312e19030d20fab3dc0f94142334dc4ecc16e917..48c088e954c29771ceb08b9cdfec452c7f1da1c8 100644 GIT binary patch delta 20912 zcmZ{M2|$xa_V`RL!WqtxgzF38O3;{uD|iw@5R^-TXO9Jy7FrJkY_;26z=BteRjE$t z+LpT26-z8?xAa(d>ACjCZnw3!MX|P3OONe#Z7csbGhYJkZ~vw8eeAPYkX;dA5T<7eRoNxSPpZtZRg2|RHsN+0Pf>)s2` zulr_pzxZTkM0MYdUAPnVqQ0|T(oRV)Ix+ra5|%BfzHudqSS0zLgnlFsB=~mO$nmFd z69O)b>=+&Co!`CgOj6GIkqluxWkA>Wo+nM#`%vGAXUoWr%_F^2`-}&c2*h88NCn7e|8NKhGB5YWP($v1dLwM)1 z)c!BJt3Rm1U!3^k2QmpxB6oc+Pdo9}M@@nF>WMj{HjJ-!H($6v#&rG|8vakM@LlA9 z;+dq-va9E7`#&a+)+!RZ?O&`2HJxwRCX5C2N{>YgrtZUE%vX$$j*ng)C)g>AKM`}0 zNNcQ}mabWyGfN)OG)8sJZfHbZb9(FgR9()_Lc0+0;`TAEaHFa#tJ8J>9k)HyrMh4n zmR!iXcvd+)cC=1)cVS3P$e;Z`FNchezY@}a;F6^6R+YCwb#${zP^&<8y{*gEP@mP6 zQ%S-{xKpzFtX*Uu^8`4)v)roZPp&u9$W2kTf&3wgV~x!WmoRO9B5Y_XX$#T^XWe9 z=~C_AqT0Vz<=vq2Y*X#uuJYWj+P_LAgpZ6x3HOE_x7$~5QF*qgc3r-*Rn>m6e~Zey zRpq%&wWCob{4H!?x96VF33>Z>srK(?yt$0mv$IVlYzp(-r+UnGFso}$=WH*a?+^9v zRM}VWrcL+kRyE9zMg#ez1jQO?n)=)>dmpOL>&nl7W&)9>KD(qBAG6ozbmcd6*=xO9 zR7ba}wgrqSjXyz;@4{IZJ)2eA=dIbS^8M@Irt)r|@W@8xVQ_X~scJw+y}LKynXc}- zu_))xovIzs^xdjn^gw$AxGwb2;Rfimuw5$iZdJuj)xcN7-`757IcTM0gpCy#KfSFm zW}u%nWf3oS_mA1h=%-SB*iZrcQH6&`L_|iCB(1cdpnX&4=B?Xz?A*2I{(TQTxc}ka z1CJd#e5C*A!0{)adivSF{B`JsmtHyb+8b{Tzw_>UXFmM+)3YPzFI@cU(v`9Ae)#dH ztG`?$k7%Va$G?k4(bmQG*5SDByMNZ@#UqDpZOam~qh`L-QC7Bv2`enJ4W+7!Vr%N?-r(H`4OyMPCYPb7Z22Sg~`&wRn zhFF!eYGKXNDi_tFBc;&g%0X6R_uJPjICIaq4o~Th8yB#-d**l?wsbEUPr}yj4dX(f zjZ4hP>V9-QJusV>(sH^_kEg10Maji`M482QWXanbf~R5o-kEp`&fnXJO`7QyEnFhthNLeJ>)r&^rMxLHXtc{1oPrzb z$iF2xwCx54nOjc@d8=&MDE3A_w4tt91m~idoBU$kJWSZ^DE4NbOgC6fq;(+mZ;*+a zxEMscMW_>LYB`hwnT->vi`!f%W;qv4&BaB-P)=Pz9+l!0ypp^k#i_WST$17hdhuc*jW+uVxiC(*_zO0q z*~$czt*u*G+_~XC2k{6C~(5Udl}lt*L}2Be zqJQN&QOr&eIJeoy?n2SKh&}*EP1((Gj+(Wlez(qpz_G^%F5_L62X56(Y6Eag+x-mX zZf&kvTgFY92P1Z`uQ_=R6t|C&fK#rjs%vck!90ZJfkB9$&V`f@@BpUm@rf*}U*oqn zgk<%DK7_MrBd^P@vmx~#{NTD)5e$KCKM7OfSlvTDR>Pm41bM6N=ODH$)wV(*nmh)c7rNh2f0A?|4!8p4<_Jlkg8@ zAAS6bJO#A)NAgJ+PPP4;(}e#7^_IKJJKQzZ3!ODc`5z9CxQg6nfSY-$YeD%xlWY~X z<6p>X6*l2t$pb2EOt|KwGEPgOWkf-t$J!tt>fbAi>aVrNAS zBef!pgjmCIY@1X>!qSBGK^BUViJ+>QY6b!imy4h>7pKZaas@UaRRD)GkF+DD60`MF zbRY%0YaBJ^@-pU&78D&c0V`%On2UmOo1d_R0U>n@nIJ5yYiVVR2&gX<>WdEZ84;4*SgqTRb9gzCDl3<0E@DzWFQLE zG?UkXF>{*8Sh&z#TExg8UAKrpXtfB;L-AG;5sl;8Y+&}pERmqXQSM?)R%>T==8cw) za>o)R&jyn498PjSRUTF&>Rhm9@YD|X>bmCErnSwj9Yf($QEVQDI?Cr(o2l0>bTdOh zR$%vmsqG5ODxLFL__U!ooKO0ru}(AHM^Ri^UGAu1jIiXIK|YPfvCC%qu%#8Hyz$_i z>RCQ$WtEF>2!MCS&h|l_WtDChGdB39dX5iFRp4#Rh2@ig5R0975ix0?w3sZ=;26Aw+^T^{xRmVC;MA$h zu<1b-`7MR_RM)rEH{Vge5~*+SL!A@Q)Emip4Xnp*B7s_H#LdJ+AHN~@@elPH}fj%wEFDbQKkm1IndHR^glft&Zb4f4oa zNTLpF^KYGmgYKE{Ud*e36;gb|WL!mMwX2-tpjUN`qzTyP-bSO%?LIm-%4|7Exr+C> zYBhwHDz|@5S;N8MYk>i>$YM79L0A(R24Q#|`AUa%Gnz##-}3RzB|HcuwD^#&MJ{pn z@W+6JRx&3J$G5HLG*wlld{f1WBJU7ErA5p-kT~7RAx(^j8rFOm zfw659(8~3#d`g6Un)V5>tGStjVc)QWgR7k^xWiUhS6ct&MBfbd;`HS-$~l zR_+$X?!h(g`BW^8QKExHcl&_V3xg`e=~{C?S(|`kOZWP43l@qDuywkRON%5>A@dZ! z4?ek1gI*P3nfIpD05+Hc&CyGQo8$U!`iFi)iBO-AFgk@GexKytQ zE3}F(75S(SVq*~Km;)kYF{c5K`lAoRX&{q$jGFu)2eY6FCO^cLO!*UlYf8(BGzlWu zVWLlhQPM|dB;mNYBOK*27diOWURI~oY|gTxxW~!5Bxp!K*^z|fv6uA0!+z99zSu{f zN9psB{0TZO4Txwqf0e$bbN*{|k8o9{DFH zlbEY3d02zF9@Y_my$-izt{-Pd@qZ(N9;6JBnefPe{(8!VK1v$jUbqgo*pGt^f%q56 zE-K|E(ys^8zf4}!<3#)l`4S$}PhH1X?V8J6B84U?39nvkl8_6`bt=F`kn#%-n|YBqQt^zaFM)?5 z%rz|P!p8VlQLoABDGy!$O7-s1VBsrHSz=b|=7E)iC0GCzFXEI>h z=NmGf3Y!yS6G*okQZVLGkOO^7rlnzZ;CEb4&G)1t4Hh&%_^826%%zou3yawtnuX;5 zf~Lp(I0?;$K{gDMe~Ti1@*$xikS-Uqnqcbw&t&*ynXy+VV_an(a~q_Yp!(0(!K(_H zq#P9g%Vc=5lbI#=o;%kzuSD`+seacc5%Ayy`i*n_Vv$7b12CQ0KeHy_Nno-f9Y;); zNMNxfodjm0AWx7<*a|INE}=1k^(Pn{DHR+Z7eJ1t!={qb$I1+Drgu;Poh$ ztg=}LRvtn7G9V5Hlei2Vw#8}7r>?-gdZ z=s}4QWM>9AcO>bDM^4mrL=CVzBKEc}`Z`QaUE?Z-$ws;u0w1ij@oG>ZCU!CvGZM^Y zbZvYBdopX5+*rG^VO3M>hP&H4x9-?={{#DbA3NMX@Z{5f8G7l|8^iCO`S|Sli*(6%*}b>tp+^t)d5``1nUl}I{OX&h|M|fupO1cd`P+Z}=U1c**9aLF zdqGLnlG=u*4eeWZJMRjvgNlm-?eG`o(B&cIsWVmuf6l($XDOBU6lq$#ThcQ zW;o}&Z&-1A%Wv|uoP6)Hns2S9T*xuJBB0lR>y+6 zbsf7OJ@)+R&%c#KCff?Dmp5Hg!17yohYds%c!c2UjB z*3SDMd-A1s&;KBgNzHLBtY6=?_u!vj{%70hzZB}U+~P&I+_8Dzp{HJX@4}A(vFUkp z7vFm47V@XTzrX**zmZT-+ul2L7V8~#9gjZ$xg@!8`KALej7Sa675Dt{#dEThqLrPG zy>wol>ZA63qkJ9^Hd+e~90o@KEBzNskD<`bU!w z82*^@Sn9#FL+O9YIBe`Q9m#xrO8?YUuleY-CoBWjW47a2C$gW+`E%}5d4u++^Pidi z?2PAT{$8LC&hHxh5J6*8~*a369ozoo7Qb$K_PL8#sbXp}+25_`ai2w<6 zN|k%Dl~3wUi{08;jdXz%7@HqsqnIF$any+W(!gQwB<-uPTo=qx)h_t##WM61z~y%? zM!FF4$SO$lLdi3$aNNu=M#iHRtk3usSgN=PR$Yg5^3{%SJ4Fa5;j3X5jvyBLh$L03 zVKR;)t5@T=Tcam)R*5?;unz*Oju?h=mKX7F+n|;M)Y7PZUOUMx39+1cw8o=EmnaY^JE5T_IT97Q$NEM}(ihUm#y6IN@IIliXMY~>$Lncf-$NnD3xH7S0q zoo{C_tS*(5uftkhnjf1hV!7pY>7*U-ID4qK|BHi9T{jPzyYANd`P_&YKXB57H+DfW9cvK7qC7 zgM7Y813fk*gC^up!di0x&4vfFjC?xUf|N7JqwnLJo@&L)u(nGIdXN#J2BAT?O)%-V z=rhvl)3&AUP1B~`q;J;$Q$J!DHoj~8*(fz-nL^Tq^xE|O=|ky1q-SK@n6WG4XvT2H zcNx*fD&sDrEXDT|2yc0*vJ?a#%e_+5@NfF32;Ql}fq8IXaA3(!smXJXe#a*L_5*Dp zLWlkUf?r*Z&Vt^!V+EQoktf)6>R16hL+FzNLPbEBsoyMkr*T2MBCfn|^uBL=)js^? z0VRmg)b9Mi=-I5_(FKx2gigIT#N@eVoagx_%^Pg;{A#?-b0y6iX7Wf(^E}_Cc|%Pe zI52XXXDqGXB6zI=2mMsR=o04Z zk7k+1QU#ncpn|uvVY}qQJNkC1uu*@!=*Y=0jrRJYuA*K4xZrAkTT^?tPVmk!*)Qjr zJRcgpGfkK6CeKGkOK9ka#^G6g3Qv})Y@^XWQh(=={DGFg&#hpXN?8pd%a4AT5zwz z4QYhMAo&I-4GJj|Bc}PokVm13x_Z9EyZ(#-jJ5rDobldy21Hpy6!Q*cNWuq)QYA8s z^`t#ip}_|7X_{n^GKM`Zzg40g-Dj8F0n^fzr{(qV1>zICsM!qC1jAQ(n^(J{$xG!}Sj_}>?#0QHL|-mR1r6qwOB~p=?=i(9 z@>#hA0t_jwkgN*0dfrq2-j0=|DORD8lwBq7RY-mZiq=$0re$bH2NJ#2?+XE=T;V`r z4`K!f;1S{Kc};BzMVkg6uax{j0*0SkElH7GJuhg<+G@#KX#Ho^lGQN*qeA;fy}`#6 zN47>N#&pLNhqr?n>)ev;Oz6na-h|zJNQ zl10?UZ^SDyiL*x18)iCx^z_FMqYz*SfqK8Kk!%4QZCohX@>H{A9-Pl6^IIhApSnY$ zG`G1W+|x1ylkk!7iQrCNoqT`tgUJskA5K1=Oeclj@MG%XY~eFONYWn&I2mlXDatS$ z`C9nD`Za=AE3lL0eHq|HtMvUTf;Ux!AbV{eK5!g-yi4CH92Z`V7+&6s_v;KoX7a!i zPmJN1@anYTw#rkqTfMKTp(u@oWwi7k;#424kUwZywQ^jQMAyXEO-qfDM*nRlZl+LP%9F!3aqZy(>X)Hn{1_;1hqBEGUbpuB@z?R_>@SEn8ZF zra5et`=X^qZ2>4AJ;_9bQ&#am8493pGD$dl8UJzZk5{g|@yphqdU}$+E%5y()HF1< z2&FB8LvYuvZdz3@)YNZi74B?oZ4lfWTUzT^3&m^Kv8t^~5o-~R4~n*@W!YRk&b$<4FprwBgj1t>_=$bH1uM65t zch?A-S_q2XIi{lprV{(*X{PO$Ev70-X?yrZnAI|&IE5E0yqPc+&oR--YKrM{fr-v2 zbo&3?NN07J{zr^3rSCcpvNWp!ILG8IFs%k)feDfT2FjzeKLx=QJI!Qo193;Z7AoxG zFxDNuG{baxrfER2bB1XLBnJ-D(L$<|6_l_sB`i|V71Wvv5VKFMsi1>{sbw}@E@W!a zqyaRTW%ABuYRxw7ng`;T4i1yIkm*opYGczH5aye_(-~~K$!lfej(BZU7*}hS>GEu< z)-2PG*(PQ$p(j;1p6dO=7<$n-Rt3+g7mdU7;5jC2Q;x|2-9EBS#$P_zCgCr`6#TmP zqLGmtPi=4e8>4}@rx*>qctLFYVGRuHUPMzTyGeLG^)Tppbh=6SF4gmeks@Z$6pA5c znU2n8h>ONrFx5nVS>zAE9TjS<30S!Ffj|i*6YVF1Znhk{O)6^xVkIM_3Xi58y_9xxy5NaV?5v?I zV%Tpr`yHDOJeHzbns;^;u-^`!6u1&o&~xSXG`J%|iG*5;P=NUTm(%FGMIjtcdkfzC z1W#ys`;@+TctF+OD{1y$zf1FI(!JlLL1L&)_l^PN`!tU(-TN(t#HIJ!1aFogx$ z1#g}p{A?JImTepyUL#fGeNEDW@FXePX_&#rxIiym4OTTt2e7tX+Ab}S2q+ST!A~L# zVHHY3bI_c@@paO(7)K0VZIK4l{C~C%vQe07EUU|!+`sNn+uGK}q)xx*+06)Ur zcvn5!w1ltqu$3T^JJ&XCY^H;p9fgBkWY|j(QEGvvbIDA-7#;HgkU)mk_!+QN1& z;dCb5N0_L(6}~vLs`FsA974ROq&i)wpTN%#qH zrLA?V8doqf`XwZS%zjlG2m1%h;Gv81lPzY!iIZg^T{OAxRjJkvy9c5=RgD{1sA5MH z>~Pi!b`T~|JhZV^!;wjS?BLl~rL~IiUNz)_5m69=Yj2`A-AL82)F7j8gLe)~LowX3 zh>0d!PfOPUFibu8>uG7QVo-TN_7i^UL#cLN_#6ZRqNo6b7=4eyh`~0VFw>Q5%>ar$|Qqjj0`AK&BMSv|+b=`6ZN9qIw~OuB=mnv zUMZHPv_UbN3S8{9B}2T`LT>U({GNEPz#f!31ke;2K9&WEw+@0`I0U=vgn3QLo?nu^ znaQ4Clf6@tJ=c=GQ6$zqfN=Dzqm=g2#2h{LFt9*dfYv9!< z`>R*d>Zfw(6#g*sN5*wD(4e8YvT6Hnl&Iq(=mup)sk4Kh(}Hj2;?|^INvtI@0SA)m z5}6SPk-O<5m>epR8E^=Bjp9Pd*YpuaDobVRU=|}%V7D(>MFFwF{3I^8vLT!TlIPGK z=cjd`MsvBt$yh{KrVS-TP9|WV$b3lnXc9%Yb*lEwlfkJVqMj!!#Ia=QJXt>0knVXh zn_cJgCv&m6kR3GeAM=WX?Lq2?l~sT%_2Jk_LR~!hb)HOXN|;13ms7AaT;YivQO>;7 zhBA{#!F-u1TYyUvRAjl?na#=J2oa15oqhsg7ZH4aEjyV!JYSXttBQB#gJY+Vz%rR7 zF_nvNpt%{_Xw2&LjTBUzMi!UJTsWOPL?0RCT$wBbPNRjCLsytcZaI`P$!}ZS z2yBdEFP(bm!K*ADl)|$CTnGm^#lsZZ98ypr)4;64!RErkDx0`(%FGf6JARCTVzNby zxbJ8uJ1b;ycG%aW6xD0*WamcM2RADUpU%OHSxq(+K7*G_#4o6^Gs))_GPQFSC>u7L z;h5FIVdijMBMJaoTv_2il>s-HIDpSxJRqUeLNdJ)hPhKj!c@c0L1v+tBAa}yu=$dR08Be z7aW>U=*mY&%AOtR|6=5s_93G%mI04vwhmo+FA6pyz8o3Q9KASlazlVoITm*G3MCUR zjW8taHiUJJcV0XCPE@b#*fpbMEZ{@o8}hjzcYyW3Fes)$XT_!{@^U^nH*mvaAqPVR zc&R=Z7TCT=X)GAa1TLj#;M^(reeB%9kkawP2SZE8KRkd=4NG-nhu)J(4jq<-2L?Yp zK7Midhbza(jub^9$b36Rk%I%^=!jek+cL+M;n(`m9;H{I88fi5CH^gV*8u=_erBgC zGW5@$pK{L-{4Z>e5(IUF{Y%N=hA)wSI_iCqY)Ms=g3QyYio~|5qdTUIdMZYDl#i|q zgI1!yj*ruAsGoFKrj8DOcM6tig8tlq;8`%bqiS?nNiTx?$UQ(4d}{b#S1LxYEEpZW z+;EqsR_vmrb7B`ASV{NTXY4#YO0VY%%5ww8o!(J;b=P}%ly3U4%kMFo`q^;%y?##D z9D3`$ZydJX`o<4ED+|-rmI!|uh2DQ)gwkc;V#liwH8so{3B` zOhHT4a7T|GT22mtQcZEk|II%kE44wg2xr)NU^E1h1;0p>VQyd73PVdERli8JO1_h7 z2%$I)IhrO93Jm4+(P8BIGf*MF79#c9MDNQ<28 zxL0+}juop`B9#vH9LkVOLT_8$)RAGfPT62Y$#HwbWO^LG*CI;_P5`qMIbi)1m$-Ks z1e7FFX_D)#0tXv%v%B1Gq|%E;Yi`%FDioCLV^SJ;wd$0;L$a94R95Olk!i?mB~&gb zLk|}sRXS&Za`nOr6rJHO7FDuCgPTye(GR1?3sItpTr+`LGD&= zGt7uHqcXT?FxOmESpk=6p(bAe1x@p7XW`m~SgBE{9($15MxM`<$Fyakp4o88lirK& zfXg-P_7e)uMm@_{v~ z0Q(x!r>3Le=^$fGeTNxt7t8?akeQTvV~4@ofud&lIB#O|j8itEs5un2p`)^i9?~pp zY-vUE0^o~vAhV57u@jgn8&Gf|h_7GQVa`HIC+dL{ohZ0StkH(#F5uJ_lTfKlBbkfH zI)^;EEuw_iYM5_!ncc9lrYuE0E%httyxP;;3P(}rQ?4>(&LUJ(ULS0NwM+$nq4$JY za}97Y21Ql?Yb&&!-Git42UkMv&2=4Suuc`#djT?Mli6iO4)ffO1{e_JH&f*SA=RRe za52D5-jvF;aL)VMRC#j5LQ#iBRENdLoI|W;c}(aMkv=~kB`hVMPlbW8j4_1WATr!Y z8EztGvs}}5Gf-2b0JZ!#09VyQ$CVW=b(D74a$u=ncYSZeVIjEHgrb)N8+5nm9Omj8 zHt-wO0IgBp<8PFAd1fub6HzDC9Eq~=xL z#@#UHc0Y<9t17L4yYeV@6~WWw>bBJ&wrZifq_DKZ(n=4O-OeS<D5g=q(~ciWMfq z!m5t4N~GILIkoBAL`EwL**?Lhx)=2{uGzSm5|@-B-40ewYKUioM7|RwN8aa`oZDH# z`)6`IhLc38<{o3XZL&`0;py>Pg5Q0DT(72}Fxpw^;81Z|l zzxFu(;;+|3O82{|zvs`b|=hBacaV3-#2kS=nKrEB_%_ zzy`k!TGMz5XL*Mi$&%AP5;)01uM)!jQ`RjJ{{Y0w6^xf5g5RYrUcuu1KcNoIdvv(0 zfKUX9luu2n!27hb&yde@?^;{%7rbFXW|&7W z(w2QmJ_BtPU%`0MeNBGJm1~19iJD(VJ^S+HF~L{F@;AJkG$uCX+yBukDCIlm0K}6g z51RfxZRHO>ohK!ZNck_WqWVX!;zU|WV|47l$>}_~TKm)gV5R=>pM7?DEPR&*qG&7a zho7M$?JuG)yJ!fX@HrImtIx?x;Z$&8Iq3+O8O+fLPjYnjHz!aO#=hAEGB`e0N^lQK zl9Ho#d7@1QXqxtbOUbe55&i%NdIT$gfcl&r$pe5-t0dR#a!p_$X1Rzuh$Q99W8#CM z2>FHBX8Ol==**!F!7%JeN4`8trwIj;<^R{=v|;3T`H%~!KzLL*G=R?k)Gb*$4jZeq zO=2!rQw@fR1j67bDj4Py3zA1eIUxo^)+J_ltW!i4XsV-BVZBw8Cpbh1{$EmR%#7Ul^-~nJ2nNAIy(%nRFMGkpEPO`F>NRo zyEz>y;W?4Nn=_y?xsm=d(P}e+0unx+%EOhU$|@wELa|ffSF9OBCd6$&k)fm5X}+q+ z28TSX%>tysR&GYHz0$_LATkS!Vj+3j&XOm%%E|Wob0|h!ENo}lYc6Klt1?eKBX6e^ zbm_21jI9kcK?}|Yb$P6do$ga260-i{=K6Y?2*P#unHZKUkak9g2G0_y;U3u>f@jKO zY70QsAO~#~o2ClITAjSspdwl;{Jj*Uba6;(G46rIM&bWhYA!J|mod*pfpZ!0CZsJP z>t@O|aG!GfOnEBYryQ6mFOkfLzFH)YBB8UOr_0E+S@Jx%Re39YRFFqz$y3@Yd1b*> zP+8H!^75r9XaT&!de?$Ns&SFH2t=`NJTct2n+x5W=rBi-H5isWEcw_0zz!>lT8L@3 z&QiO3IVffkZh%X20HgWjP7aJ*jF&H}pVqt_{`QZ^8ny&eQ}5ygK}%`v%p%J`BNtfa l20Un0Nb2$C0{P|w#pZ&5%>~NM1%aCjf;JZfA1Vkb_(SPV2zXR5YHP(S|2H$=ZbJY4$DcdjyldXP zdGqG@-p96Wo^9Jahn|+n_S#A{!@rl^1P>O?aHZS^4_GtY&K{KN;XCCNm8?Gct$Zua zkRT*O^KF(?8+uO?-fPQLAH8$dGqN;6k%r%!nwmoNPdeP5a{X{mO5)LzDOVG$9nOE~ zL98D>`H%pTteWAEA6lr&mZBe6XRAOA66nKl<-;MY8@~HtPIL6}hj+_Vvy)J_O_{=o z_S$kZM?;TZDFqoi_3-1-dorv@RRvNUX(9n=8#;KuY>zE9@#x0~ua-+68}$y?KcQ#k z^-s)}UOT#Ycn_41jaCjn`^4<@jL}s?co2=C(bGfHLCFX{I`u>jmhRep?=Y53?p-NK zCAeI6=E$#Z5M<}h>^MuN_Q|cK@0}?Wrg9G%M_-TR%SIj;JrlY8%#NWmBXdXX`&S6) zxV}x;ng{4-Df$i(J^cGOuPOTIOyt5DyE5|rnI!m&oIf+7K8zwCo*Bu6;^Q+T8Bnau z8%;cbcdp7CJ3rj~RtTRz`t!GB5}ZxG_qja(=u3a?NyL|qUUANY@ulJ3^Y>}&XAh%^ zOKrku8HW;{%t@`kbhd5mZ{)$Ygsfrj`>Rv!XFKl_CTERE4`&MY;YZ$IlJMQR@6LTS zHEbC-AJu$7q%8{u=hxn^@5&rn*x7}Kt{6*HMw667{=sUmkpArU$wWb>94a34>_ARbgWfivrjMnAB_p#Am+Z?@-l_Vs|KSpSmtv@7m*jjYXBc{N@K+Dx z$Xw+EMalxRnohl)|aBNwu&v?MRt-eUUO!q}+AkqD#5$1EDwV(8IOUybqKs zAMi423!{#dDuvp#NSX2>&%?z-^9CyqdX>?Z)JQ0G+jpJ%{%5j{cxpzy;C_<3ChjuteiMq?@FUo`Z$>b=m7Dr{~&xD2)8GyBBxR#@1|0Y zQFL!*v`kqGk{8q|A9)f@K{M%hs@t>D~?Hu zH@_GJJE)kGom`QB{0GxSv{Y%Inq*k{2|?ZO{KoXYKsH#n8C z|Hs_Qs7HA)=1EKjGD zew2}cdg{AZx33c+0hFGJR)wnT8ab24g%lc5ycQ5O&C4m`*4$zj%GCj&zOH)stFN*W z^_)m&7#60V zYk2;Y344ZDOy%I>;Vn}_VhNX6SUUXRR6$}HujQ8yzcQ7l^@@^%_lh!uUgWCSlY)zI z<(~O?4xYEC3p@1lMY6DSmDj~h?R6p3f<2F6qiJCr>1*-(nrrT6qP!lYyJF92ti7@- zj<2p?!kPVUr1izY;gARgmg+dv-_*dt0TG&g7oza*07|e ztJk^G7vb@~(ZSHB zKEKnql6M6rjo~T=r{KqFXhkXN_8`rT9Nyf~zDAT+g0$;6u(h|V zPmD*!Wk|c8Lxbx!ZS3Tl7JHFq1BZq?I&KsN_>iG{8t4oMS|ZLwsy}#_p@&?MVf|G% z%^(Og)`(67`t)){OUJr(qBuXw+{l4}rXcsi;s7#iVzB0p_1&90z(hNk8?wjnRjCyEgO%Rw)YgvS${hcjad$?80VB~g+ zz=m#d=*xUabB_pYx>@wEGC$Jn5`l|)W9$Kxc`vcd!soB-WjBA2Qv~NWdxAh1&Z%K`;+tCf z{D=oI!;fPk>pM2Ytqmbr`#=og@7c=R@)|uz`;$1hy-x%~VEZXaQ(&F(XEEfm9va}d zXL-HIFhZ_SV14U@F?_J4YrSY|FKD(urkOW@bPq8iN)R_og$o%UW?(;sd*~03WfdM| zJU|XAu%Yl5F(DOY$T-TV>8RFsT?cYRYA-T9NzNED;;MM`C*UV62YD zD?XI<1QP&}Dio&c#HNi--)(F%`uxcJOY&(V%(ZcnnuK+RU&Tm$z1KT^;-c?C<|oO5 zBy1}9bxdqEOrYN|S_r{`4YX%muWB#S9w+@tSY!NcOx9(1KQcW<4klq^;tAf(%%{mK zNm$+g3?mPQH(kg5(GRiaSq^L1w62fO3V#X8{2d3@bZr(1%TVSYI4pE?uLuJhJQq{e z4?+ASBdBk#gW1mg$q&=!6lYu4-QL$PHV{DSKXTgc>xY?@YFtSD0t1C_>J>pAq<)cs z0$X}SPzh4M#6bS;jUuQFsV6vN*9H;fMe0`=sHHsy@}bOEQFs9?F+Kot{cFHm{}j`| z2KEK7abs!!%$Q*;8#>nWe!yQPR1*jfR1V~NU2_-aRtJ&oA4Haht%)CVu7V4sC=KW1 zi)1+ziJx$&eUc2N;ljjEc~$s~981GF_;d0)E&fTqpe+9)SxTJe`GV7^{tfLm1R4gy zEzQgPElBYtho@gcVJEk06iHL-w1+!r>QcFcpsHK^K zz(Zvss6N1{%8*=+9Y~qL;mo7FNHGhu^G~LNg2OGo7H2~}^CcI`Oq_-V84T8vB-|e- ztYtvhdL>U2*0*o$V}}4}F9q7mOpW7KaKW(JrA@=QVAx@5l+!>i*bQr`Y8n`moIKzz zLGpBvt;ry}({bi(b)2Y16bEf&P6N3(x|h_DiFB+Nw7{I9ixIH%1?(UddTtA=fhaPt zCCA9CS`&5*EN%#ahZXu3!0EDUb%z~gnMrL1HqXk!j$7gEKz2bziVCvH_6(fw&f%;& z0oteuEO)|T&j}(};Pjw$iwF+0P*H+RR`PBJHewt3CIg#R<;Kv?=76t;h32@USf`&8b$`&?IIBfy%vGx z$m}9ZfuY|GX3zGB1dYCi0Aq5y2TNvO#AbNy5^+}M=u6^++WnywC8LV^23S?W%;K;PSzbZ!TEq>*UUh+ zHrKTTI1-#80fsw3(zP($K~kiJ&BG!R(n4gbB|WsLBfGS)8CXolD9IA?JT2S;@ zGaK|=7%anT;xb~rc1@fh%tze=`@jxzjS(9v*3Q7e@GJ?p@@C+KW4?YSuCb{((7V)o2-p|FEd|QBAx6h$nWq#fZscRGTnFJL6ppVc>p57p0T^Hx7-Z8Qgmn{@2_|h1 zahR}i-c2HwU)jXg5*`GydSl4I@_@K{#A86#M$&J>=KelT6AIPwOA$B9*d&7LYM6Ck zMWO>+0SxP`6=C#};TAZeiJCt=WxR!b_-F8lyx9$-FlPY+jbsC@$Cf zVe)tu*45n?!!2DVGQid69xg3oFEq$JCGLZSW76-3P6n2@#P>C(eMFfJ3&4+vBO8Lp zk4Z2aFT@X!p=^9b|4&8YP6*4ad2p$piLh$7=u#OYF^GpjU|=2;A+4MSJZgUo!f9Y9 z@pEeOhd7u8O)&YxT*=%60B)&kApRVPV80;kIWS8eA>YrzCetWK1)McLel=G-=yp1b z-So_MI0riN7sZ?4Iss@I8gH> z5VN(Q0k(^**AQ=hO(q2}{r`{@3pQ2!W+sWVxrv80SnJ^&aQrgdibZjp7ny%c+JGHD zMQ))|PFzm8EJjJ=+tZifTH`o4(3_tj6I9BxU)zmd}9NVMhoFW5M%=2V~7Jnp9SwZ#-Ko)s z8_v4&%@~&-e2Xvb#oj^YX#te|Rt(ElWHA($4c0KZ*?*bFE(zDI;)`;ri>sCOSJIOU zKKC~g$%VeWO`^2+ck+BL^z$9^K`yMMr%6&Ctg`Qtxp~-9d;p zl5&o@P9wMoQk>_o`R|i~JUmbR0q{_SvxP-nxY+)Xyqt$MSAG;nIKlcn#3J24rlEeA z!)!YPo1BlQ!PPNvG16X`2G=((VKU&_<|4TwA1)U@nMQ`gumxit1$&@L(w&dBiJx*k z^`DWQK;8d&j2hg;S=Us(EXdZ-VkG}3bY1hW8E7^QN??+FA&U5S3<({9?Q)Q{1WWgq zGvPC3>MqU11nMKse%NM$>R(+34^=ZsrO5pCOnA`G%u;sS&E36gko+5}-?uXecyI#! zzT^7ors7CA2E=lFk{Mto3ib(72@CovnS{m&HlAQ`q>yvC zDS=!pfJ>oSF;-@9C*7yA)vy?u6_=yfW|gfvaPmkbRfP};lgO2Y*t8<~a!ML~mW6Mp zdnyQmDWIV?^)d=(3>RJMN|JEK=VuNjM-EDNM5WtDq`Og@aEV-Hlbk)a24e-mFJbL6 zodPZl!eM`r&tK;oC@U>>57ZSkAw?p;H!vn4K*AIZg*kDX$1kC}s(Px{NT;Qx2Y(>U2@-x6=C3$ikHqBQtGCq#5b>+7MdE)sX{W7GV zZvd;XeZkMj~(PkH{tBk*>SRJ zcUfQsA5bR9FlQQ7%HM8s?TmBD1(4u%PUE4EVt*5$zsOuP165oqqU7`@fF8&f_QI0q zCaa*B=b5G~bH#)JB}mCGp2oR7E*A@m@xw%R2|3gY6T6hWM2j-=F)hkT(nct}q!5a0 zDy9Wgfb?krpfAd%hg>M#qRaj=`|lHY%F07X-xht}K5^~X93eVa*uNMu zi4LvU`My0eVA-+FvVDJw(BE&_kA!~9kZ-VR#B{hy{~?NeVn2Df3d%`ZQoyGo;4}M} zQ-~IELA%l~9=Au2+fR8XKHRSW5&E{BPuU}bmL0b-$+udfllI6N`{Kx-^P`{GBk$U8 zh`g2`{mdRY53o1#qo3L%=j_+t5P3a+%q2wK0tmU)GUgSc6+%Q_utQcbiiEWMZ4X7C zvQNtQrvdVT_wC-ch|jX4%CbNC_|()-k{!>h{@oS{TXr;C_NysG#~??{=gp7MpM#87 zQhzJyz70D&$}JDoJRA_}EC+Rt$vokG+aV=9ole^&7bYy*q{7XXBQ=j6f7$Nss2Qr+ z^{4ZJZ7=KFZZQhc9EbOU$q_kWj|z?pW=G^{yDK&IgneScXhKBisK40~H8~FEICcU} z&VfOk)bEIz9R~%+PM{SW(JaS7i(_Y&BVuuQN7027c8~<+({>OviX*?XM*(pG@Xr7k z4E`(?|BQVidsN27Q?6(141M8QJK#sBfNK;17L<;juzLahX!L3OhsfpKJ}K?5Ut$Aj z-Bjd{c7Q_pg8kwj?Gy5gFW4t_7fp@{=|wZuOTYei_DB{LvhAI==rbb6vz!AYBt?F2 zuLTK?$RF&FcG6ZN&)K(A9ZuTCW+@r~k9Hikbhu;FVpKt+kf^1^kjNLLXoHzSd^*-1_iaAv3vV3oUlW_ z5dbbzYo=B?|3#~5gZx*$Vs@j}I?~q0{pgk!LEqL131c?L!CXhJ_k!B7{emph5t1C+ zgJZ6Q^;l1;Fp zyAu-}soC!xD%hF+=12le1_QZ}D=|WL9<(O>^Y1jhP_Vx~qF|_{cPE5ld(e|7`2=T= zx8+OhY!7iFlAu>#I$Imv^rireZDX6?jNbgFU>J9&B;-iwh9T`&^6Mq~a|a3~DpFM` z*$ioc7k?%1fP2=gd6J7DGG)FbKjqR{n$>s&O{T+sVc~qq*71wKmfs~kuuzgVUezcu zUr zA3!7bEtM1%>dzg@jyAs`B%I@oB?|Wf#nkOcvYWdF(grvyEjQT!TCACFmBi{GvJ)h&)CmiI-77V`#r;Z`g1Rz zi}}HI=X%fm^4wEo>Ca`K9NR2WIQy4FHZ1)s6dc0eh10@vYmb#!e`0;m`k3{XRvOUv z_dpasg(pgcGlF2X?4NZ!&33icHj(kX>R(ZVFs2vw2Z3U=5S*mj63r9FazzO8wvFQb zy?`8Y54w)HPNh#=H-aC?vI$P>p%oFm?Xc^{Q$-U^CuzMdqJuhAt5~%%qNP<~!p*9) zBSu=SoUpR0Ibz~fHLIpZ%r+{v#xhFVeA(OPZPT|YwnV31uH8RtL=lxeyZDD`DTZ2bn?U8+g^Jfx!H zJGcKK_ukz5=}*)oj2U@{qdCG@wlK$NQzb;RgfX)SwFqN^_^7uD8tZ7${v%+MsBUIO zODj>EFlH4=L5jqlW50qjR8of2<53giV6_7WB$B%0Q8R-$xj?Xh#@bf982%Dn40I@| z)2TFWg_~Xw>me!N>OleI?A~K^VII&EkLW%G=^+op=Yu8@9_`)}Lez|X7 zdV0>MNfOLRB4{rw^hweB|RC#|6Q0C}C%gqkjjint6_c`81$vKnX2V!X<^!2Wq7QBqOF)Ita>R zYGpVs~8^tLm1$@s%tcS-oe z1O@*w`jVZI+@H7YDMkVh#~2AbL_zAdNAzv|-nJ1$_Y`J_a5(P~SeFiFJA^m$A}`u0 zB8ToR7{cN>Xl00(>}_DG>G5*O?@z>EQDaTRRMPtsC6sL1ew0kX$fjXHCQFpHMGxE{ zmG!@xe=2QPjnR0@I3XELi@cg2{Zqb5D%_EO@YVd|l|n>PFjRGXo)D214EaVRhpQrA z<-@Kq@-_SYhW&m^d0aJZbVD{&#eRJ;DUd{7wePijNUo+dLK}rAfb<9cluw^sOA~~h z`7c3bRET_@zirN_8474R`dYsC+c)zg-{nXDoDVyusr=~c0C_7vf(oK<|Z2~Nr)3KFU~Lm6Z`q{P9YZpi!E$SyG;(~2IPow|6_een8; zHC+zp!!!~-DK#3EaaP~P)sQ>P?>|bARYl%CDYd{ghV+!wV$6t>)%CTn>srmo=(VVt zEIcJO!HIbl6h=*)thIyc&B=<9QA_SQB{g{Aye#S;>e|xUwWhC=y|45_;sl(Tr%|c$NnNUELNEi2vAc2{9)XlD|<(p(co*Yt6$mZtZoPi{CWJrqlwSb z$Ywj{km00ZJdwLNgASL!+6l*fcEt!rq(j9aG}|y#w<1u_MiEeSs6^DFnJ9SApF+Az zWI6*K9Fbyq{OvX*G{dDviOguCBO{`#>sqSo`AHehkuWr`mB=iM;YK4yP}A&dr6Tw% zA-E5x<0UdvTnikuIj#()t2wSI#I9G}$el^9D3!V3x}&F5R)n==q*PXhb>nZ8%G|2l z=V0AX!S=!_ye8CJuC`2Ap0j*oIb$(ct=1-Mm-UC%9aiED$_#0pk<*s3)0X`*L3;eq zm1J2^Hb>@+ylWwM!jsMx*=iN8g{6H2?KV=fBp@3*P2LO2atooFNx5317Ar(IL)0St z!F;bdDzJi5rvN%?Aw`R1+J2EaYOqE&S))d4WV1DDvPN#UM$Oj97TSuw?MS97IZ36U ztQo*ccM|kDjWuf7uZ5Dfa6kQltqyE>B1^107SqL>wQP;Ite`E==1>PM4CZJ7ujXGy z1f6+hk*p}axv8n8NOUPwW1WA1=TpGDE%8pwl0@9KG65%(=31E@r;uA{ zkxCBK%4|4|JWp{-@((CTW1UQw%qDLxTs&FRNfQO|d^eW|*)k}=dIcR@{!Sg*b2j+= zj75aa_MoiHnFQ=2JBEatO%1(a2<=@g(_lT(E|yipW_jgeSp_zd;l(nK*BtX4XV6*A zUI)gLF-&k%MLn)51h~2wj^+Cpv&pxMWd=vi42ngZf@NB$1deE6{^&uoEu?CR%u!;6 zRAef$!RasI&{NHGsMtDU8zv?N;B|lvvE5>=`)g|D<`6RJk=E^SM;yZ&)jr?tQ z@nCFDpkN_st(OJhnDG-@ILLeTvO+wYq%^=l%pqkBP@7Axr8OtHs{w|kh(sG?R!P2# zywV^urp$?p%5sy`MwvP2LGbzxZjwOtJv7eKlm{{OUsVd=YDk@8hKCfLGO_Ngt`50p z+{YQqNq3{n0I`qLQ+$bt7jL!Ts)>oBD6fbTQ(ttI-#N9HUCi{qg}6%ou-1s;w3QeDUBR2Ict~lq_qK z<@DEx6cF%vYEm)M1Y%;kdN=Z~Rp1SEPz2J{CwBE!igb%aSWU;;c1V^KHPqCK;OgFv zcK%Tc+}PJqyD#P#W)IMN2_pO7z}FmA!DadQ(WSBm8MrcDE;GV4s~HOB(R_UjQe7bH zzL(9Zic-Wpn&YTS6vY-R$dAp=CL5N^vTzRBv0P??JJv^*%giPVZJRCge4ew#&keIx zZzb<6m+2tm>EFv`+4JC%Rivx#>f6|~cJ0QFzFVoMxZ%~kIWLZlC5y0D-R^Qocp{-z zXtt1SXq6et?Qu%q#-8@o@WmPv0=XO}M;ujs84BKk%qG8Wh5pYWZ?!^nnM=N+5}ic9 z0*WF!|E~pW-G~pYlGPq~Q!3fNR&wBVndHDDGS&W0$$?+X()Qnw01(B2mt>0lJ&I%J zWw?sqZ=?%n!RqOOC6ENak=~T85Wg8D7L^~tQsv1KSr4OnQex%+08r!a%ni?TCGcY!<$*0V@~ zT%Sk3KdSHA(BbdiBz_vjr9eK6LdX5utS5i`R%$9V@T$s){OoOXbIXp^>((Hp3GKUK zea}Fl(>-U49a+tL(q#Grg>p$!VOi;Fm&cBTtUWGSPI5Nd2XEhDXJ^XUvr1;H7kIrU z?1WDZ=0XAQCYoDrtqCKgg`;d`B|~ATTE(inY-m*oCD~$vVjm@G^Y)yOY1Z?Pk_J&m z0dl$tZ3`5wgS-f&EaWUuZ(i1jGVSqdO%uy^xD}}!aTv{vK-sfVJ)}V{axM$|76o=v zY4O?svd$sC*>Veb$QmrmrO^+|Y!VZMzu9tQzbmewo7*hKLv2P?xff}RsdfwN8vV{i z1CVjeERVD$Xx~Ek;)H&rH2|5uEEO9im!f^wt=>356A#MJK9pWgsajV02Ec9ldfiCw zrO*nrZ{3>qfkFw3>R#(?I6V zmFt@uMPf+lMHx*%*asbDU*Oq6+2jzk)Z0Gb1XC=fN;V^B30YWQ;{)S%#-LnDfKnT zSx(5|X1Tf|DlPTzC2C!i!EwsYaQr$?hV#`pPxH zq3)O-TA1-Lx=67W?d#jpj#Sq(6zdY8kh~M^f zd>i#5>hkcV59QF8qz=Ux8i3*U84Py-L*|_#L#`XXu&xdb)HfmHU6j*Muw7(yqm;X+ z*_1obzOD^hZ>Pkyb;uZD&E%!*oF*($su;s2@i!%3+!*01+zn4lNaS7!hfi`wOmyolMN-z?YM=rbON8$*;mv%p% zAql>{VRL9k*q;rP=O-Xo@l$AdT{}wtS)5fqf_?&dS@8xvgRM;E{i4c0rwtlxtw`|@ z*INEC)$l-^p%@sbhQAOse1tLBTcOS5(Ree8N5z&Oi-Y82AjlXchZHbb57I%`=oF8G z>A~X_hs1e!7-+JNkQ<8SW_*;<1TvnWZMP4w=u!uX@ksGY9$pfUF|I+R80WJ?|Eu`K z@k4%YOQ3043w*nZbWhUhqBZ_nR0d{CuD^N^R__5eXY&4s&Y9dRem~+K z*6)F}zJ~1f$h8gHKg33G#u|^b&&8miXKdw1@{@F2Pchd-8P9XmOovbXABn3}uIqo{ zzwlD8coDd@FLAERwiGD+Wwft-!#5^!)Q)GM`;Lz+@e?hE61xb4tSePzjRRi ziH~ObYyE&(vzp0bnB+fGqpfC9{dG`5{|4>AY6wd+dQA0u6OhKY=z6+tWAFb#EB*ol z-rbAze+7O18~$%1e*WA455eC#f%cu4eP*PmTE!Q$2sU?_AO1>SWt0t05 z@jjFz!y>4@sVTIRyIg#CjFRQRMmJL6;t5#v$T%95PM!q>bPlw7kz4@+4T+fg=Cp}o zy;me*w&l?#LwVhQcsA0d02KB)qETW@hE#G>gs9L53YEjWJ8mI!ZQ)HiDErGl)yinu(@9n+?#U9PBJ6uv{XofcLHL*$P_D zbhl*70#OXi04p$L+Qb2+u~zJlA$JCBCbuq+yizIG_UDUuaDoEbb#WsT6rG?Dnt;eW z(+TX*l-xmoX46LJ00nF=XZQq?&!t!={OF1>Y{0mU`AMOssS!Rgb;X(@TYT~~_|gSz z?BPbVLC`A(`@vo}qa@~P;CGfWac$<|!Is6-7{A}K(XfRh{i^939tEW-QXj8i>OL<>hScDVf(@m zd^0y-UB20h@)wgQ=F9Woo0GrHm)A<_F=<~eSCjGuaI$J3D;LPiaU^eBJVnqTcJ^Upo+4(^le6@Wfr5AZZnCotfiG&?o?AxeC)f i#C!1VRr1@b5^k@Wb$gZK_Nv6&tCDW7NWGcx^NrpUw(0CbTDV*mgE diff --git a/.Floppies/A2OSX.SRC.po b/.Floppies/A2OSX.SRC.po index bbd7aec15123c147617378fc0b3840a9f6bc6616..c9ee1047d793404895ab2cb8f2903230524cd312 100644 GIT binary patch delta 43008 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

B(9UCx%WCl4>t!5F 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.TXT + +SET S=1 + +:LOOP0 +set /a B=0 +set SHIFTL= +echo Creating SHIFT.L%S%... + +:LOOP1 + +call :ToBin %B% + +if "%S%" EQU "1" set SHIFT=#%%0%Output:~1,6%%Output:~0,1% +if "%S%" EQU "2" set SHIFT=#%%0%Output:~2,5%%Output:~0,2% +if "%S%" EQU "3" set SHIFT=#%%0%Output:~3,4%%Output:~0,3% +if "%S%" EQU "4" set SHIFT=#%%0%Output:~4,3%%Output:~0,4% +if "%S%" EQU "5" set SHIFT=#%%0%Output:~5,2%%Output:~0,5% +if "%S%" EQU "6" set SHIFT=#%%0%Output:~6,1%%Output:~0,6% + +if not defined SHIFTL ( + if "%B%" EQU "0" ( + set SHIFTL=SHIFT.L%S% .DA %SHIFT% + ) ELSE ( + set SHIFTL= .DA %SHIFT% + ) +) ELSE ( + set SHIFTL=%SHIFTL%,%SHIFT% + ) + +set /a B+=1 +set /a MOD=B%%8 + +if "%MOD%" EQU "0" ( + (echo %SHIFTL%)>>SHIFT.TXT + set SHIFTL= + ) + +if "%B%" NEQ "128" goto LOOP1 + +set /a S+=1 +if "%S%" NEQ "7" goto LOOP0 + +(echo.)>TWIST.TXT + +set /a B=0 +set TWISTL= +echo Creating TWIST... +:LOOP2 + +call :ToBin2 %B% + +if not defined TWISTL ( + if "%B%" EQU "0" ( + set TWISTL=TWIST .DA #%%%Output% + ) ELSE ( + set TWISTL= .DA #%%%Output% + ) +) ELSE ( + set TWISTL=%TWISTL%,#%%%Output% + ) + +set /a B+=1 +set /a MOD=B%%8 + +if "%MOD%" EQU "0" ( + (echo %TWISTL%)>>TWIST.TXT + set TWISTL= + ) + + if "%B%" NEQ "256" goto LOOP2 + +echo. +echo (I know, this other batch is also stupid ;-) +echo. +pause +exit 0 + + +:ToBin + +SET Output= +SET CurrentValue=64 +SET InputValue=%1 + +:TopLoop +IF !CurrentValue! LEQ !InputValue! ( + SET Output=!Output!1 + SET /A InputValue=!InputValue!-!CurrentValue! +) ELSE ( + SET Output=!Output!0 + ) + +If !CurrentValue! EQU 1 GOTO :EOF +SET /A CurrentValue=!CurrentValue!/2 + +Goto TopLoop + +:ToBin2 + +SET Output= +SET CurrentValue=128 +SET InputValue=%1 + +:TopLoop2 +IF !CurrentValue! LEQ !InputValue! ( + SET Output=1!Output! + SET /A InputValue=!InputValue!-!CurrentValue! +) ELSE ( + SET Output=0!Output! + ) + +If !CurrentValue! EQU 1 GOTO :EOF +SET /A CurrentValue=!CurrentValue!/2 + +Goto TopLoop2 diff --git a/.Tools/ShiftL8Tables.cmd b/.Tools/ShiftL8Tables.cmd new file mode 100644 index 00000000..b469dc58 --- /dev/null +++ b/.Tools/ShiftL8Tables.cmd @@ -0,0 +1,81 @@ +@echo off +title Shift table generator +COLOR 2A +prompt ] +SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION + +mode con:cols=80 lines=24 + +cls +echo Apple //e + +(echo.)>SHIFT.TXT + +SET S=1 + +:LOOP0 +set /a B=0 +set SHIFTL= +echo Creating SHIFT8.L%S%... + +:LOOP1 + +call :ToBin %B% + +if "%S%" EQU "1" set SHIFT=#%%%Output:~1,7%%Output:~0,1% +if "%S%" EQU "2" set SHIFT=#%%%Output:~2,6%%Output:~0,2% +if "%S%" EQU "3" set SHIFT=#%%%Output:~3,5%%Output:~0,3% +if "%S%" EQU "4" set SHIFT=#%%%Output:~4,4%%Output:~0,4% +if "%S%" EQU "5" set SHIFT=#%%%Output:~5,3%%Output:~0,5% +if "%S%" EQU "6" set SHIFT=#%%%Output:~6,2%%Output:~0,6% +if "%S%" EQU "7" set SHIFT=#%%%Output:~7,2%%Output:~0,7% + +if not defined SHIFTL ( + if "%B%" EQU "0" ( + set SHIFTL=SHIFT8.L%S% .DA %SHIFT% + ) ELSE ( + set SHIFTL= .DA %SHIFT% + ) +) ELSE ( + set SHIFTL=%SHIFTL%,%SHIFT% + ) + +set /a B+=1 +set /a MOD=B%%8 + +if "%MOD%" EQU "0" ( + (echo %SHIFTL%)>>SHIFT.TXT + set SHIFTL= + ) + +if "%B%" NEQ "128" goto LOOP1 + +set /a S+=1 +if "%S%" NEQ "8" goto LOOP0 + +echo. +echo (I know, this other batch is also stupid ;-) +echo. +pause +exit 0 + + +:ToBin + +SET Output= +SET CurrentValue=128 +SET InputValue=%1 + +:TopLoop +IF !CurrentValue! LEQ !InputValue! ( + SET Output=!Output!1 + SET /A InputValue=!InputValue!-!CurrentValue! +) ELSE ( + SET Output=!Output!0 + ) + +If !CurrentValue! EQU 1 GOTO :EOF +SET /A CurrentValue=!CurrentValue!/2 + +Goto TopLoop + diff --git a/BIN/ATBROWSE.S.txt b/BIN/ATBROWSE.S.txt index 0e14dea4..62f7d544 100644 --- a/BIN/ATBROWSE.S.txt +++ b/BIN/ATBROWSE.S.txt @@ -4,7 +4,7 @@ AUTO 4,1 .LIST OFF .OP 65C02 .OR $2000 - .TF /A2OSX.BUILD/BIN/ATBROWSE + .TF /A2OSX.BUILD/BIN/ATK/ATBROWSE *-------------------------------------- .INB /A2OSX.BUILD/INC/MACROS.I .INB /A2OSX.BUILD/INC/A2OSX.I diff --git a/BIN/ATLOGON.S.txt b/BIN/ATLOGON.S.txt index c57daf83..9ae49278 100644 --- a/BIN/ATLOGON.S.txt +++ b/BIN/ATLOGON.S.txt @@ -4,7 +4,7 @@ AUTO 4,1 .LIST OFF .OP 65C02 .OR $2000 - .TF /A2OSX.BUILD/BIN/ATLOGON + .TF /A2OSX.BUILD/BIN/ATK/ATLOGON *-------------------------------------- .INB /A2OSX.BUILD/INC/MACROS.I .INB /A2OSX.BUILD/INC/A2OSX.I diff --git a/BIN/NSCUTIL.S.txt b/BIN/NSCUTIL.S.txt index c74a6ed1..c2c49f1a 100644 --- a/BIN/NSCUTIL.S.txt +++ b/BIN/NSCUTIL.S.txt @@ -1,8 +1,6 @@ -PR#3 -PREFIX /A2OSX.BUILD NEW -INC 1 -AUTO 6 +PREFIX /A2OSX.BUILD +AUTO 4,1 .LIST OFF .OP 65C02 .OR $2000 @@ -44,8 +42,8 @@ L.MSG.USAGE .DA MSG.USAGE CS.INIT clc rts *-------------------------------------- -CS.RUN >SYSCALL GetArgC - cmp #1 +CS.RUN ldy #S.PS.ARGC + lda (pPs),y bne CS.RUN.SET CS.RUN.READ jsr NSC.Init diff --git a/BMP2PIX.S.txt b/BMP2PIX.S.txt index 192c5c96..e6b82c49 100644 --- a/BMP2PIX.S.txt +++ b/BMP2PIX.S.txt @@ -8,6 +8,7 @@ AUTO 4,1 *-------------------------------------- .INB /A2OSX.BUILD/INC/MACROS.I .INB /A2OSX.BUILD/INC/A2OSX.I + .INB /A2OSX.BUILD/INC/GUI.I .INB /A2OSX.BUILD/INC/LIBGUI.I *-------------------------------------- ZPPTR1 .EQ ZPBIN @@ -322,7 +323,7 @@ CS.QUIT >LDA.G hBuf *-------------------------------------- CS.END *-------------------------------------- - .INB /A2OSX.BUILD/X.TWIST.G + .INB /A2OSX.BUILD/ROOT/X.TWIST.G *-------------------------------------- OptionList >PSTR "Vv" OptionVars .DA #bVerbose,#bVerbose @@ -345,5 +346,5 @@ DS.END .ED *-------------------------------------- MAN -SAVE /A2OSX.BUILD/BMP2PIX.S +SAVE /A2OSX.BUILD/ROOT/BMP2PIX.S ASM diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index 521a346d..ca0bbe43 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -1,8 +1,6 @@ -PR#3 +NEW PREFIX /A2OSX.BUILD -LOMEM $A00 -INC 1 -AUTO 6 +AUTO 4,1 .LIST OFF *-------------------------------------- pDrv .EQ $10 @@ -230,6 +228,9 @@ SYS.LoadStkObj .EQ $FA SYS.GetStkObj.A .EQ $FC SYS.FreeStkObj.A .EQ $FE *-------------------------------------- +SYS.Kernel.JMP .EQ $E000 +SYS.GuiOSD.JMP .EQ $E200 +*-------------------------------------- * ProDOS ERROR CODES : $00->$5F * Lib ERROR CODES : $80->$BF * Kernel ERROR CODES : $C0->$FF diff --git a/INC/COM.6551.I.txt b/INC/COM.6551.I.txt index 3c92515d..14a45410 100644 --- a/INC/COM.6551.I.txt +++ b/INC/COM.6551.I.txt @@ -1,8 +1,6 @@ -PR#3 -PREFIX /A2OSX.BUILD NEW -INC 1 -AUTO 6 +PREFIX /A2OSX.BUILD +AUTO 4,1 .LIST OFF *-------------------------------------- * SSC/ACIA 6551 I/O diff --git a/INC/GUI.I.txt b/INC/GUI.I.txt new file mode 100644 index 00000000..e2e9258e --- /dev/null +++ b/INC/GUI.I.txt @@ -0,0 +1,76 @@ +NEW +PREFIX /A2OSX.BUILD +AUTO 4,1 + .LIST OFF + .OP 65C02 +*-------------------------------------- +S.CB.CMD .EQ 0 +S.CB.CMD.SETPIXEL .EQ 0 +S.CB.CMD.GETPIXEL .EQ 2 +S.CB.CMD.HLINE .EQ 4 +S.CB.CMD.VLINE .EQ 6 +S.CB.CMD.FILLRECT .EQ 8 +S.CB.CMD.BITBLT .EQ 10 +S.CB.CMD.GETRECTBUFSIZE .EQ 12 +S.CB.CMD.DRAWLINE .EQ 14 +S.CB.CMD.DRAWTEXT .EQ 16 +S.CB.OP .EQ 1 +S.CB.OP.XOR .EQ 0 screen EOR bitmap -> Screen +S.CB.OP.SET .EQ 2 replace screen with bitmap +S.CB.OP.ORA .EQ 4 combine screen & bitmap -> Screen +S.CB.OP.MASK .EQ %00001000 Apply BitMap mask before painting +S.CB.OP.SAVE .EQ %00010000 Save Screen to DstPtr before painting +S.CB.OP.RESTORE .EQ %00100000 Restore Screen From DstPtr +S.CB.OP.COLOR .EQ %01000000 Assume BitMap is COLOR + +S.CB.OP.F.B .EQ %00010000 +S.CB.OP.F.I .EQ %00100000 +S.CB.OP.F.U .EQ %01000000 +S.CB.OP.F.G .EQ %10000000 +S.CB.M .EQ 2 +S.CB.M.MONO .EQ %00000001 b/w (1 bit/pixel) +*S.CB.M.C4 .EQ %00000010 +*S.CB.M.C8 .EQ %00000100 +S.CB.M.C16 .EQ %00001000 16 colors (4 bits/pixel) +*S.CB.M.C256 .EQ %00010000 256 colors (8 bits/pixel) +S.CB.COLOR .EQ 3 xPIXEL,xLINE,FILLRECT +S.CB.hFont .EQ 3 DRAWTEXT +S.CB.X1 .EQ 4 xPIXEL,xLINE,FILLRECT,BITBLT,GETRECTBUFSIZE,DRAWLINE +S.CB.Y1 .EQ 6 xPIXEL,xLINE,FILLRECT,BITBLT,GETRECTBUFSIZE,DRAWLINE +S.CB.X2 .EQ 8 VLINE,FILLRECT,DRAWLINE +S.CB.Y2 .EQ 10 HLINE,FILLRECT,DRAWLINE +S.CB.SrcW .EQ 8 BITBLT,GETRECTBUFSIZE +S.CB.SrcH .EQ 10 BITBLT,GETRECTBUFSIZE +S.CB.DstX .EQ 12 BITBLT,DRAWTEXT +S.CB.DstY .EQ 14 BITBLT,DRAWTEXT +S.CB.SrcPtr .EQ 16 BITBLT +S.CB.TxtPtr .EQ 16 DRAWTEXT +S.CB.DstPtr .EQ 18 BITBLT +* +S.CB .EQ 20 +*-------------------------------------- +S.BM.F .EQ 0 +S.BM.F.BBP1 .EQ %00000001 +S.BM.F.BBP2 .EQ %00000010 +S.BM.F.BBP4 .EQ %00000100 +S.BM.F.BBP8 .EQ %00001000 +S.BM.RowBytes .EQ 1 +S.BM.W .EQ 2 +S.BM.H .EQ 4 +S.BM.MASK.OFS .EQ 6 +* +S.BM .EQ 8 +*-------------------------------------- +S.FON.F .EQ 0 +S.FON.Ascent .EQ 1 +S.FON.PixW .EQ 2 if 0, variable W +S.FON.PixH .EQ 3 +S.FON.First .EQ 4 +S.FON.Last .EQ 5 +S.FON.Default .EQ 6 +S.FON.Break .EQ 7 +* +S.FON .EQ 8 +*-------------------------------------- +MAN +SAVE /A2OSX.BUILD/INC/GUI.I diff --git a/INC/IO.I.txt b/INC/IO.I.txt index 61851862..6f94cfdc 100644 --- a/INC/IO.I.txt +++ b/INC/IO.I.txt @@ -1,8 +1,6 @@ -PR#3 -PREFIX /A2OSX.BUILD NEW -INC 1 -AUTO 6 +PREFIX /A2OSX.BUILD +AUTO 4,1 .LIST OFF *-------------------------------------- * Software Switches diff --git a/INC/MACROS.I.txt b/INC/MACROS.I.txt index 3c650554..0017f9ea 100644 --- a/INC/MACROS.I.txt +++ b/INC/MACROS.I.txt @@ -1,8 +1,6 @@ -PR#3 -PREFIX /A2OSX.BUILD NEW -INC 1 -AUTO 6 +PREFIX /A2OSX.BUILD +AUTO 4,1 .LIST OFF *-------------------------------------- .MA DEBUG diff --git a/INC/NIC.I.txt b/INC/NIC.I.txt index bca81a58..1336d9ce 100644 --- a/INC/NIC.I.txt +++ b/INC/NIC.I.txt @@ -1,8 +1,6 @@ -PR#3 -PREFIX /A2OSX.BUILD NEW -INC 1 -AUTO 6 +PREFIX /A2OSX.BUILD +AUTO 4,1 .LIST OFF *-------------------------------------- * NIC Devices diff --git a/LIB/LIBGUI.S.CLIP.txt b/LIB/LIBGUI.S.CLIP.txt index 239989b1..4e2e8946 100644 --- a/LIB/LIBGUI.S.CLIP.txt +++ b/LIB/LIBGUI.S.CLIP.txt @@ -22,7 +22,7 @@ CLIP.HLine CLIP.VLine CLIP.Rect - +CLIP.Text clc rts *-------------------------------------- diff --git a/LIB/LIBGUI.S.DRAW.txt b/LIB/LIBGUI.S.DRAW.txt index 5ba65061..ff5e5ccd 100644 --- a/LIB/LIBGUI.S.DRAW.txt +++ b/LIB/LIBGUI.S.DRAW.txt @@ -318,8 +318,18 @@ DrawLine.IncX lda DX .8 rts *-------------------------------------- -DrawText - rts +DrawText >LDYA L.CB.Cache + ldx #0 + + jsr SYS.GuiOSD.JMP + bcs .9 + + jsr GoDevGfx + + lda CB.Cache+S.CB.SrcPtr + >SYSCALL FreeStkObj.A + +.9 rts *-------------------------------------- MAN SAVE /A2OSX.SRC/LIB/LIBGUI.S.DRAW diff --git a/LIB/LIBGUI.S.txt b/LIB/LIBGUI.S.txt index e81b5752..3a9e0ff9 100644 --- a/LIB/LIBGUI.S.txt +++ b/LIB/LIBGUI.S.txt @@ -101,6 +101,7 @@ J.Clip .DA CLIP.Point SETPIXEL .DA CLIP.BitBlt .DA CLIP.Rect GETRECTBUFSIZE .DA CLIP.Line + .DA CLIP.Text .DA 0 *-------------------------------------- LIB.LOAD @@ -286,6 +287,7 @@ CB.CmdLen .DA S.CB.Y1+1 SETPIXEL .DA S.CB.DstPtr+1 BITBLT .DA S.CB.DstPtr+1 GETRECTBUFSIZE .DA S.CB.Y2+1 DRAWLINE + .DA S.CB.TxtPtr+1 DRAWTEXT *-------------------------------------- MouseClamp .BS 8 *-------------------------------------- @@ -295,6 +297,7 @@ GC.TaskBar .BS S.GC *-------------------------------------- GC.Cache .BS S.GC CB.Cache .BS S.CB +BM.Cache .BS S.BM *-------------------------------------- MAN SAVE /A2OSX.SRC/LIB/LIBGUI.S diff --git a/README.md b/README.md index 78b2a776..173c3df4 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ + **A2OSX.BOOT.po** : **(0.9.1)** 140k BOOT disk image with all binaries + **A2OSX.DEV.po** : **(0.9.1)** 140k disk image with ASM binaries, Debug Tools & INClude files -+ **A2OSX.BUILD.po** : **(0.9.1)** 800k BOOT disk image with S-C MASM 2.0 and all binaries (BOOT+DEV) ++ **A2OSX.BUILD.po** : **(0.9.1)** 800k BOOT disk image with S-C MASM 3.0 and all binaries (BOOT+DEV) + **A2OSX.SRC.po** : **(0.9.1)** 800k disk image with all sources ## Latest News 2017-11-08 diff --git a/SBIN/GUI.S.txt b/SBIN/GUI.S.txt index dfb32213..35112c7d 100644 --- a/SBIN/GUI.S.txt +++ b/SBIN/GUI.S.txt @@ -38,8 +38,9 @@ L.LIBGUI .DA LIBGUI L.SYSFONT .DA SYSFONT L.Filename .DA Filename L.MouseData .DA MouseData -L.CB.Rect .DA CB.Rect +L.CB.Paint .DA CB.Paint L.BM.Apple .DA BM.Apple +L.TXT.Sample .DA TXT.Sample L.CB.Marylin .DA CB.Marylin L.CB.DrawLine .DA CB.DrawLine L.GC.Clip .DA GC.Clip @@ -63,6 +64,7 @@ CS.INIT >LDYA L.MSG.INIT >SYSCALL LoadStkObj bcs .99 sta hSYSFONT + sta CB.DrawText+S.CB.hFont >PUSHWI 0 Aux type >PUSHBI $CB Type @@ -73,6 +75,12 @@ CS.INIT >LDYA L.MSG.INIT sta CB.Marylin+S.CB.SrcPtr + >LDYA L.TXT.Sample + >STYA CB.DrawText+S.CB.TxtPtr + + >LDYA L.BM.Apple + >STYA CB.Apple+S.CB.SrcPtr + jsr Destop.Paint lda #CUR.T.ARROW @@ -153,10 +161,7 @@ Destop.Paint >LIBCALL hLIBGUI,LIBGUI.HideCursor >LIBCALL hLIBGUI,LIBGUI.GetScreenGC >PUSHYA - - >LDYA L.BM.Apple - >STYA CB.Apple+S.CB.SrcPtr - >PUSHW L.CB.Rect + >PUSHW L.CB.Paint >LIBCALL hLIBGUI,LIBGUI.Draw * >LIBCALL hLIBGUI,LIBGUI.GetScreenGC @@ -182,7 +187,7 @@ SYSFONT >CSTR "/A2OSX.BUILD/SBIN/GUI/SYSTEM" *-------------------------------------- MouseData .BS S.MOUSE *-------------------------------------- -CB.Rect .DA #S.CB.CMD.FILLRECT +CB.Paint .DA #S.CB.CMD.FILLRECT .DA #S.CB.OP.SET .DA #S.CB.M.MONO .DA #1 @@ -199,7 +204,6 @@ CB.Rect .DA #S.CB.CMD.FILLRECT .DA 20 Y1 .DA 519 X2 .DA 171 Y2 - *-------------------------------------- CB.Apple .DA #S.CB.CMD.BITBLT .DA #S.CB.OP.SET @@ -208,30 +212,42 @@ CB.Apple .DA #S.CB.CMD.BITBLT .DA 0 X1 .DA 0 Y1 .DA 16 W - .DA 9 H + .DA 7 H .DA 28 DestX .DA 180 DestY .BS 2 SrcPtr - .DA 0 - + .DA 0 DstPtr +*-------------------------------------- +CB.DrawText .DA #S.CB.CMD.DRAWTEXT + .DA #S.CB.OP.SET OP + .DA #S.CB.M.MONO M + .BS 1 hFont + .DA 0 X1 + .DA 0 Y1 + .DA 0 SrcW + .DA 0 SrcH + .DA 4 DstX + .DA 7 DstY + .BS 2 TxtPtr +*-------------------------------------- .DA #0 *-------------------------------------- BM.Apple .DA #S.BM.F.BBP4 .DA #2 RowBytes .DA 16 W - .DA 9 H + .DA 7 H .DA 0 .HS FFF6 green (8) .HS 6FF6 green (8) - .HS 6666 green (8) .HS EEEE yellow (15) .HS CCFC orange (14) .HS 88F8 magenta (10) .HS 9999 violet (11) - .HS 1111 Dark blue (4) .HS 1FF1 Dark blue (4) *-------------------------------------- +TXT.Sample >CSTR "@@@@@@@@@ This Is A Sample Text with System Font Height=7px, Variable Width {}[] #0123456789$ @@@@@@@@@" +*-------------------------------------- CB.Marylin .DA #S.CB.CMD.BITBLT .DA #S.CB.OP.SET .DA #S.CB.M.MONO @@ -241,9 +257,9 @@ CB.Marylin .DA #S.CB.CMD.BITBLT .DA 141 W .DA 150 H .DA 200 DestX - .DA 35 DestY + .DA 21 DestY .BS 2 SrcPtr - .DA 0 + .DA 0 DstPtr .DA #0 *-------------------------------------- diff --git a/SYS/KERNEL.S.CTRL.txt b/SYS/KERNEL.S.CTRL.txt index 448cc868..a5b9d2a3 100644 --- a/SYS/KERNEL.S.CTRL.txt +++ b/SYS/KERNEL.S.CTRL.txt @@ -6,8 +6,8 @@ AUTO 4,1 .LIST ON *-------------------------------------- A2osX.MAIN.S .EQ A2osX.AUX-A2osX.MAIN -A2osX.AUX.S .EQ A2osX.GP-A2osX.AUX -A2osX.GP.S .EQ A2osX.D1-A2osX.GP +A2osX.AUX.S .EQ A2osX.GP-A2osX.AUX +A2osX.GP.S .EQ A2osX.D1-A2osX.GP A2osX.D1.S .EQ A2osX.D2-A2osX.D1 A2osX.D2.S .EQ A2osX.E0-A2osX.D2 A2osX.E0.S .EQ A2osX.E0.E-A2osX.E0 diff --git a/SYS/KERNEL.S.JMP.txt b/SYS/KERNEL.S.JMP.txt index 18af6e2e..c5dd1246 100644 --- a/SYS/KERNEL.S.JMP.txt +++ b/SYS/KERNEL.S.JMP.txt @@ -405,15 +405,6 @@ K.SYSCALL.BANK .DA #RRAMWRAMBNK1 $00 .DA 0 .DA 0 .DA 0 - - .DA 0 - .DA 0 - .DA 0 - .DA 0 - .DA 0 - .DA 0 - .DA 0 - .DA 0 *-------------------------------------- .DA 0 $F0 .DA 0 @@ -423,15 +414,22 @@ K.SYSCALL.BANK .DA #RRAMWRAMBNK1 $00 .DA 0 .DA 0 .DA 0 - - .DA 0 - .DA 0 - .DA 0 - .DA 0 - .DA 0 - .DA 0 - .DA 0 - .DA 0 +*-------------------------------------- +K.GUIOSD.JMP sta SETREADAUX + sta SETWRITEAUX + jsr X.GUIOSD + sta CLRREADAUX + sta CLRWRITEAUX + rts +*-------------------------------------- +TXTPTR.GetNext sta CLRREADAUX + lda (TXTPTR) + sta SETREADAUX + beq .9 + inc TXTPTR + bne .9 + inc TXTPTR+1 +.9 rts *-------------------------------------- PullP1P2P3 sec .HS 90 bcc diff --git a/SYS/KERNEL.S.OSD.txt b/SYS/KERNEL.S.OSD.txt new file mode 100644 index 00000000..9a4a6933 --- /dev/null +++ b/SYS/KERNEL.S.OSD.txt @@ -0,0 +1,778 @@ +NEW +PREFIX /A2OSX.BUILD +AUTO 4,1 +*-------------------------------------- +ZPCmdPtr .EQ ZPDRV +ZPDstBMPtr .EQ ZPDRV+2 +ZPFontPtr .EQ ZPDRV+4 +ZPTablePtr .EQ ZPDRV+6 +ZPCharPtr .EQ ZPDRV+8 +ZPSrcBMPtr .EQ ZPDRV+10 +ZPTmpPtr .EQ ZPDRV+14 +*-------------------------------------- +* YA =Ptr to S.CB in MAIN +* X = DstBM hMem +*-------------------------------------- +X.GUIOSD >STYA ZPCmdPtr + + >STYA A1L Src Start Address (MAIN) + pha + + tya + clc + adc #S.CB-1 + sta A2L Src End Address (MAIN) + pla + adc /S.CB-1 + sta A2L+1 + + >LDYAI CB.Cache + >STYA A4L Dst Address (AUX) + + sec Main To Aux + jsr AuxMove + + txa + beq .3 + + jsr GO.GetMemPtr.A + + >STYA ZPDstBMPtr + + ldx #0 + +.1 lda (ZPDstBMPtr) + sta DstBM.Cache,x + inc ZPDstBMPtr + bne .2 + inc ZPDstBMPtr+1 +.2 inx + cpx #S.BM + bne .1 + +.3 ldx CB.Cache+S.CB.CMD + + jmp (J.Cmds,x) +*-------------------------------------- +J.Cmds .DA SETPIXEL + .DA GETPIXEL + .DA HLINE + .DA VLINE + .DA FILLRECT + .DA BITBLT + .DA GETRECTBUFSIZE + .DA $ffff DRAWLINE + .DA DRAWTEXT +*-------------------------------------- +SETPIXEL >LDYA CB.Cache+S.CB.Y1 + ldx DstBM.Cache+S.BM.RowBytes + jsr YAMultX + + pha + tya + + clc + adc ZPDstBMPtr + sta ZPDstBMPtr + pla + adc ZPDstBMPtr+1 + sta ZPDstBMPtr+1 + + lda CB.Cache+S.CB.M + bit #S.CB.M.C16 + bne SETPIXEL.C16 + +SETPIXEL.MONO lda CB.Cache+S.CB.X1 + pha + and #$7 MOD 7 + tax + pla + lsr CB.Cache+S.CB.X1 + ror + lsr CB.Cache+S.CB.X1 + ror + lsr CB.Cache+S.CB.X1 + ror + clc + adc ZPDstBMPtr + sta ZPDstBMPtr + + lda CB.Cache+S.CB.X1 + adc ZPDstBMPtr+1 + sta ZPDstBMPtr+1 + + lda CB.Cache+S.CB.OP +* cmp #S.CB.OP.XOR + beq .2 + + lda CB.Cache+S.CB.COLOR + bne .1 + + lda (ZPDstBMPtr) + and Mono.NMasks,x + sta (ZPDstBMPtr) + rts + +.1 lda (ZPDstBMPtr) + ora Mono.Masks,x + sta (ZPDstBMPtr) + rts + +.2 lda (ZPDstBMPtr) + eor Mono.Masks,x + sta (ZPDstBMPtr) + rts +SETPIXEL.C16 +*-------------------------------------- +GETPIXEL +*-------------------------------------- +HLINE +*-------------------------------------- +VLINE +*-------------------------------------- +FILLRECT +*-------------------------------------- +* BitBlt +* S.CB.X1 : SrcX1 in bitmap/mask +* S.CB.Y1 : SrcY1 +* S.CB.SrcW : width +* S.CB.SrcH : height + +* S.CB.DstX : Destination X (screen) +* S.CB.DstY : Destination Y (screen) + +* S.CB.SrcPtr : pointer to S.BM +* S.CB.SrcPtr+1 = 0, hMem in S.CB.SrcPtr +* S.CB.DstPtr : pointer to Save Buffer +*-------------------------------------- +BITBLT >LDYA CB.CACHE+S.CB.SrcPtr + bne BITBLT.1 + + tya + jsr GO.GetMemPtr.A + +BITBLT.1 >STYA ZPSrcBMPtr + + +*-------------------------------------- +* In: +* S.CB.SrcW +* S.CB.SrcH +* Out: +* S.CB.DstPtr : Buffer Size (in bytes) +*-------------------------------------- +GETRECTBUFSIZE + +GETRECTBUFSIZE.RTS + rts +*-------------------------------------- +* In: +* S.CB.S.CB.FONT : hFont +* S.CB.SrcPtr : Ptr to Text +* S.CB.DstPtr : Buffer Size (in bytes) +* Out: +* A=hBM +*-------------------------------------- +DRAWTEXT lda CB.Cache+S.CB.hFONT + jsr GO.GetMemPtr.A + >STYA ZPFontPtr + + ldy #S.FON-1 + +.1 lda (ZPFontPtr),y + sta FON.Cache,y + dey + bpl .1 + + lda ZPFontPtr + clc + adc #S.FON + sta ZPTablePtr + lda ZPFontPtr+1 + adc /S.FON + sta ZPTablePtr+1 + +.2 >LDYA CB.Cache+S.CB.TxtPtr + >STYA TXTPTR + + lda #S.BM.F.BBP1 + sta DstBM.Cache+S.BM.F + + stz DstBM.Cache+S.BM.W + stz DstBM.Cache+S.BM.W+1 + + lda FON.Cache+S.FON.PixH + sta DstBM.Cache+S.BM.H + stz DstBM.Cache+S.BM.H+1 + + sta CB.Cache+S.CB.SrcH + stz CB.Cache+S.CB.SrcH+1 + +.3 jsr TXTPTR.GetNext + beq .4 + + jsr FON.GetChar + lda (ZPCharPtr) Get Char PixelW + sec + adc DstBM.Cache+S.BM.W + sta DstBM.Cache+S.BM.W + bcc .3 + + inc DstBM.Cache+S.BM.W+1 + bra .3 + +.4 >LDYA DstBM.Cache+S.BM.W + >STYA CB.Cache+S.CB.SrcW + + jsr BM.Create + bcs GETRECTBUFSIZE.RTS + + sta DRAWTEXT.END+1 save hBM, ZPDstBMPtr=BMData + + >LDYA CB.Cache+S.CB.TxtPtr + >STYA TXTPTR + + stz GWORD reset Col index in BM + stz GWORD+1 reset Bit index in Col + +DRAWTEXT.LOOP jsr TXTPTR.GetNext + beq DRAWTEXT.END + + jsr FON.GetChar + + lda (ZPCharPtr) Char PixW + sta GBYTE + + jsr CHAR.GetNext Char ByteW + sta GBYTE2 + + >LDYA ZPDstBMPtr + >STYA ZPTmpPtr + + lda GWORD+1 Get Bit Index for shifting + jsr DRAWTEXT.JMP + + lda GBYTE Get Char PixW + sec +1 for char spacing + adc GWORD+1 Add Bit index in Col + pha + and #7 mod 7 + sta GWORD+1 Update Bit index in Col + + pla + lsr + lsr + lsr + clc + adc GWORD Update Col Index in BM + sta GWORD + bra DRAWTEXT.LOOP + +DRAWTEXT.END lda #$FF SELF MODIFIED + sta CB.Cache+S.CB.SrcPtr Save hBM in Src CB + stz CB.Cache+S.CB.SrcPtr+1 + + lda #S.CB.CMD.BITBLT + sta CB.Cache+S.CB.CMD + + jsr CB.Update + clc + rts +*-------------------------------------- +DRAWTEXT.JMP asl + tax + jmp (.1,x) +.1 .DA DRAWTEXT.SHIFT0 + .DA DRAWTEXT.SHIFT1 + .DA DRAWTEXT.SHIFT26 + .DA DRAWTEXT.SHIFT26 + .DA DRAWTEXT.SHIFT26 + .DA DRAWTEXT.SHIFT26 + .DA DRAWTEXT.SHIFT26 + .DA DRAWTEXT.SHIFT7 +*-------------------------------------- +DRAWTEXT.SHIFT0 lda FON.Cache+S.FON.PixH + +.6 pha save Height counter + + ldx GBYTE2 init Width counter + ldy GWORD get col index in BM + +.7 jsr CHAR.GetNext + + sta (ZPTmpPtr),y + iny + + dex + bne .7 + + lda ZPTmpPtr + clc + adc DstBM.Cache+S.BM.RowBytes + sta ZPTmpPtr + bcc .10 + + inc ZPTmpPtr+1 + +.10 pla get back Height counter + dec + bne .6 + rts +*-------------------------------------- +DRAWTEXT.SHIFT1 lda FON.Cache+S.FON.PixH + +.1 pha save Height counter + + clc make sure reset first bit in line for initial ORA + + ldx GBYTE2 init Width counter + ldy GWORD get col index in BM + +.2 jsr CHAR.GetNext + + rol 8th bit in ->carry, 1st bit from carry + + sta (ZPTmpPtr),y + iny + + dex + bne .2 + + lda ZPTmpPtr Next line... + clc + adc DstBM.Cache+S.BM.RowBytes + sta ZPTmpPtr + bcc .3 + + inc ZPTmpPtr+1 + +.3 pla get back Height counter + dec + bne .1 + rts +*-------------------------------------- +DRAWTEXT.SHIFT26 + ldx GWORD+1 Get Bit Index for shifting + lda SHIFT8.LL-1,x + sta .3+1 + lda SHIFT8.LH-1,x + sta .3+2 + + lda SHIFT8.LL,x + sta .4+1 + lda SHIFT8.LH,x + sta .4+2 + + lda FON.Cache+S.FON.PixH + +.1 pha save Height counter + + lda GWORD + sta ColIndex + lda GBYTE2 + +.2 pha save Width counter + + jsr CHAR.GetNext + + and First.Masks,x x = 2->6, for X=3 : A=000xxxxx + tay Range 0..127 + +.3 lda $FFFF,y SELF MODIFIED ShiftL3 A=xxxxx000 + + ldy ColIndex get col index in BM + ora (ZPTmpPtr),y + sta (ZPTmpPtr),y + inc ColIndex + + lda (ZPCharPtr) + and Last.Masks,x x = 2->6, for X=3 : A=xxx00000 + lsr Range 0..127 !! A=0xxx0000 + + tay but SHIFTL(x+1) A=00000xxx + +.4 lda $FFFF,y SELF MODIFIED + + ldy ColIndex get col index in BM + sta (ZPTmpPtr),y + + pla get back Witdh counter + dec + bne .2 + + lda ZPTmpPtr + clc + adc DstBM.Cache+S.BM.RowBytes + sta ZPTmpPtr + bcc .5 + + inc ZPTmpPtr+1 + +.5 pla get back Height counter + dec + bne .1 + rts +*-------------------------------------- +DRAWTEXT.SHIFT7 lda FON.Cache+S.FON.PixH + +.1 pha save Height counter + + ldx GBYTE2 init Width counter + ldy GWORD get col index in BM + +.2 jsr CHAR.GetNext + + lsr 1st bit in carry, for COL 1 + pha Other 7 bits for COL 2 + + lda #0 + ror get back 1st bit, -> for bit 8 + + ora (ZPTmpPtr),y + sta (ZPTmpPtr),y + iny + + pla get back bit 1->8 already shifted Left 7 (= Shift right 1) + sta (ZPTmpPtr),y + + dex + bne .2 + + lda ZPTmpPtr + clc + adc DstBM.Cache+S.BM.RowBytes + sta ZPTmpPtr + bcc .3 + + inc ZPTmpPtr+1 + +.3 pla get back Height counter + dec + bne .1 + rts +*-------------------------------------- +CHAR.GetNext inc ZPCharPtr + bne .8 + inc ZPCharPtr+1 +.8 lda (ZPCharPtr) + rts +*-------------------------------------- +FON.GetChar cmp FON.Cache+S.FON.Last + bcc .1 + bne .2 + +.1 sec + sbc FON.Cache+S.FON.First + bcs .3 + +.2 lda FON.Cache+S.FON.Default + +.3 asl + php + clc + adc ZPTablePtr + sta ZPCharPtr + + lda #0 + adc ZPTablePtr+1 + sta ZPCharPtr+1 + + plp + bcc .4 + inc ZPCharPtr+1 + +.4 lda (ZPCharPtr) + clc + adc ZPFontPtr + pha + ldy #1 + lda (ZPCharPtr),y + adc ZPFontPtr+1 + sta ZPCharPtr+1 + pla + sta ZPCharPtr + rts +*-------------------------------------- +BM.Create lda DstBM.Cache+S.BM.W + ldx DstBM.Cache+S.BM.W+1 + bit #7 + beq .1 + and #$F8 + clc + adc #8 + bcc .1 + inx + +.1 sta DstBM.Cache+S.BM.RowBytes + txa + + lsr + ror DstBM.Cache+S.BM.RowBytes + lsr + ror DstBM.Cache+S.BM.RowBytes + lsr + ror DstBM.Cache+S.BM.RowBytes + + >LDYA DstBM.Cache+S.BM.H + ldx DstBM.Cache+S.BM.RowBytes + + jsr YAMultX + + pha + tya + clc + adc #S.BM + tay + pla + adc /S.BM + jsr GO.GetMem.YA + bcs .9 + + >STYA ZPDstBMPtr + + ldy #S.BM-1 + +.2 lda DstBM.Cache,y + sta (ZPDstBMPtr),y + dey + bpl .2 + + lda ZPDstBMPtr +* clc + adc #S.BM + sta ZPDstBMPtr + bcc .8 + + inc ZPDstBMPtr+1 + +.8 txa hBM + + clc +.9 rts +*-------------------------------------- +* IN: +* Y,A = num1 (16) +* X = num2 (8) +* OUT: +* Y,A = (Y,A) * X +*-------------------------------------- +YAMultX stx GBYTE + + sty GWORD + sta GWORD+1 + + ldy #0 Result LO + tya Result HI + + bra .3 + +.1 pha + tya + clc + adc GWORD + tay + pla + adc GWORD+1 + +.2 asl GWORD + rol GWORD+1 + +.3 lsr GBYTE + bcs .1 + bne .2 + rts +*-------------------------------------- +CB.Update >LDYA ZPCmdPtr + >STYA A4L Dst Start Address (MAIN) + + >LDYAI CB.Cache + >STYA A1L Src Start Address (AUX) + + >LDYAI CB.Cache+S.CB-1 + >STYA A2L Src End Address (AUX) + + clc Aux To Main + jmp AuxMove +*-------------------------------------- +GO.GetMem.YA ldx #SYS.GetMem.YA + .HS 2C BIT ABS +GO.GetMemPtr.A ldx #SYS.GetMemPtr.A + jmp (K.SYSCALL.JMP,x) +*-------------------------------------- +CB.Cache .BS S.CB +FON.Cache .BS S.FON +SrcBM.Cache .BS S.BM +DstBM.Cache .BS S.BM +ColIndex .BS 1 +GBYTE .BS 1 +GBYTE2 .BS 1 +GWORD .BS 2 +*-------------------------------------- +Mono.NMasks .DA #%11111110 + .DA #%11111101 + .DA #%11111011 + .DA #%11110111 + .DA #%11101111 + .DA #%11011111 + .DA #%10111111 + .DA #%01111111 +*-------------------------------------- +Mono.Masks .DA #%00000001 + .DA #%00000010 + .DA #%00000100 + .DA #%00001000 + .DA #%00010000 + .DA #%00100000 + .DA #%01000000 + .DA #%10000000 +*-------------------------------------- +First.Masks .DA #%11111111 Useless + .DA #%01111111 + .DA #%00111111 + .DA #%00011111 + .DA #%00001111 + .DA #%00000111 + .DA #%00000011 + .DA #%00000001 +*-------------------------------------- +Last.Masks .DA #%00000000 Useless + .DA #%10000000 + .DA #%11000000 + .DA #%11100000 + .DA #%11110000 + .DA #%11111000 + .DA #%11111100 + .DA #%11111110 +*-------------------------------------- +SHIFT8.LL .DA #SHIFT8.L1 + .DA #SHIFT8.L2 + .DA #SHIFT8.L3 + .DA #SHIFT8.L4 + .DA #SHIFT8.L5 + .DA #SHIFT8.L6 + .DA #SHIFT8.L7 +SHIFT8.LH .DA /SHIFT8.L1 + .DA /SHIFT8.L2 + .DA /SHIFT8.L3 + .DA /SHIFT8.L4 + .DA /SHIFT8.L5 + .DA /SHIFT8.L6 + .DA /SHIFT8.L7 +*-------------------------------------- +SHIFT8.L1 .DA #%00000000,#%00000010,#%00000100,#%00000110,#%00001000,#%00001010,#%00001100,#%00001110 + .DA #%00010000,#%00010010,#%00010100,#%00010110,#%00011000,#%00011010,#%00011100,#%00011110 + .DA #%00100000,#%00100010,#%00100100,#%00100110,#%00101000,#%00101010,#%00101100,#%00101110 + .DA #%00110000,#%00110010,#%00110100,#%00110110,#%00111000,#%00111010,#%00111100,#%00111110 + .DA #%01000000,#%01000010,#%01000100,#%01000110,#%01001000,#%01001010,#%01001100,#%01001110 + .DA #%01010000,#%01010010,#%01010100,#%01010110,#%01011000,#%01011010,#%01011100,#%01011110 + .DA #%01100000,#%01100010,#%01100100,#%01100110,#%01101000,#%01101010,#%01101100,#%01101110 + .DA #%01110000,#%01110010,#%01110100,#%01110110,#%01111000,#%01111010,#%01111100,#%01111110 + .DA #%10000000,#%10000010,#%10000100,#%10000110,#%10001000,#%10001010,#%10001100,#%10001110 + .DA #%10010000,#%10010010,#%10010100,#%10010110,#%10011000,#%10011010,#%10011100,#%10011110 + .DA #%10100000,#%10100010,#%10100100,#%10100110,#%10101000,#%10101010,#%10101100,#%10101110 + .DA #%10110000,#%10110010,#%10110100,#%10110110,#%10111000,#%10111010,#%10111100,#%10111110 + .DA #%11000000,#%11000010,#%11000100,#%11000110,#%11001000,#%11001010,#%11001100,#%11001110 + .DA #%11010000,#%11010010,#%11010100,#%11010110,#%11011000,#%11011010,#%11011100,#%11011110 + .DA #%11100000,#%11100010,#%11100100,#%11100110,#%11101000,#%11101010,#%11101100,#%11101110 + .DA #%11110000,#%11110010,#%11110100,#%11110110,#%11111000,#%11111010,#%11111100,#%11111110 +SHIFT8.L2 .DA #%00000000,#%00000100,#%00001000,#%00001100,#%00010000,#%00010100,#%00011000,#%00011100 + .DA #%00100000,#%00100100,#%00101000,#%00101100,#%00110000,#%00110100,#%00111000,#%00111100 + .DA #%01000000,#%01000100,#%01001000,#%01001100,#%01010000,#%01010100,#%01011000,#%01011100 + .DA #%01100000,#%01100100,#%01101000,#%01101100,#%01110000,#%01110100,#%01111000,#%01111100 + .DA #%10000000,#%10000100,#%10001000,#%10001100,#%10010000,#%10010100,#%10011000,#%10011100 + .DA #%10100000,#%10100100,#%10101000,#%10101100,#%10110000,#%10110100,#%10111000,#%10111100 + .DA #%11000000,#%11000100,#%11001000,#%11001100,#%11010000,#%11010100,#%11011000,#%11011100 + .DA #%11100000,#%11100100,#%11101000,#%11101100,#%11110000,#%11110100,#%11111000,#%11111100 + .DA #%00000001,#%00000101,#%00001001,#%00001101,#%00010001,#%00010101,#%00011001,#%00011101 + .DA #%00100001,#%00100101,#%00101001,#%00101101,#%00110001,#%00110101,#%00111001,#%00111101 + .DA #%01000001,#%01000101,#%01001001,#%01001101,#%01010001,#%01010101,#%01011001,#%01011101 + .DA #%01100001,#%01100101,#%01101001,#%01101101,#%01110001,#%01110101,#%01111001,#%01111101 + .DA #%10000001,#%10000101,#%10001001,#%10001101,#%10010001,#%10010101,#%10011001,#%10011101 + .DA #%10100001,#%10100101,#%10101001,#%10101101,#%10110001,#%10110101,#%10111001,#%10111101 + .DA #%11000001,#%11000101,#%11001001,#%11001101,#%11010001,#%11010101,#%11011001,#%11011101 + .DA #%11100001,#%11100101,#%11101001,#%11101101,#%11110001,#%11110101,#%11111001,#%11111101 +SHIFT8.L3 .DA #%00000000,#%00001000,#%00010000,#%00011000,#%00100000,#%00101000,#%00110000,#%00111000 + .DA #%01000000,#%01001000,#%01010000,#%01011000,#%01100000,#%01101000,#%01110000,#%01111000 + .DA #%10000000,#%10001000,#%10010000,#%10011000,#%10100000,#%10101000,#%10110000,#%10111000 + .DA #%11000000,#%11001000,#%11010000,#%11011000,#%11100000,#%11101000,#%11110000,#%11111000 + .DA #%00000001,#%00001001,#%00010001,#%00011001,#%00100001,#%00101001,#%00110001,#%00111001 + .DA #%01000001,#%01001001,#%01010001,#%01011001,#%01100001,#%01101001,#%01110001,#%01111001 + .DA #%10000001,#%10001001,#%10010001,#%10011001,#%10100001,#%10101001,#%10110001,#%10111001 + .DA #%11000001,#%11001001,#%11010001,#%11011001,#%11100001,#%11101001,#%11110001,#%11111001 + .DA #%00000010,#%00001010,#%00010010,#%00011010,#%00100010,#%00101010,#%00110010,#%00111010 + .DA #%01000010,#%01001010,#%01010010,#%01011010,#%01100010,#%01101010,#%01110010,#%01111010 + .DA #%10000010,#%10001010,#%10010010,#%10011010,#%10100010,#%10101010,#%10110010,#%10111010 + .DA #%11000010,#%11001010,#%11010010,#%11011010,#%11100010,#%11101010,#%11110010,#%11111010 + .DA #%00000011,#%00001011,#%00010011,#%00011011,#%00100011,#%00101011,#%00110011,#%00111011 + .DA #%01000011,#%01001011,#%01010011,#%01011011,#%01100011,#%01101011,#%01110011,#%01111011 + .DA #%10000011,#%10001011,#%10010011,#%10011011,#%10100011,#%10101011,#%10110011,#%10111011 + .DA #%11000011,#%11001011,#%11010011,#%11011011,#%11100011,#%11101011,#%11110011,#%11111011 +SHIFT8.L4 .DA #%00000000,#%00010000,#%00100000,#%00110000,#%01000000,#%01010000,#%01100000,#%01110000 + .DA #%10000000,#%10010000,#%10100000,#%10110000,#%11000000,#%11010000,#%11100000,#%11110000 + .DA #%00000001,#%00010001,#%00100001,#%00110001,#%01000001,#%01010001,#%01100001,#%01110001 + .DA #%10000001,#%10010001,#%10100001,#%10110001,#%11000001,#%11010001,#%11100001,#%11110001 + .DA #%00000010,#%00010010,#%00100010,#%00110010,#%01000010,#%01010010,#%01100010,#%01110010 + .DA #%10000010,#%10010010,#%10100010,#%10110010,#%11000010,#%11010010,#%11100010,#%11110010 + .DA #%00000011,#%00010011,#%00100011,#%00110011,#%01000011,#%01010011,#%01100011,#%01110011 + .DA #%10000011,#%10010011,#%10100011,#%10110011,#%11000011,#%11010011,#%11100011,#%11110011 + .DA #%00000100,#%00010100,#%00100100,#%00110100,#%01000100,#%01010100,#%01100100,#%01110100 + .DA #%10000100,#%10010100,#%10100100,#%10110100,#%11000100,#%11010100,#%11100100,#%11110100 + .DA #%00000101,#%00010101,#%00100101,#%00110101,#%01000101,#%01010101,#%01100101,#%01110101 + .DA #%10000101,#%10010101,#%10100101,#%10110101,#%11000101,#%11010101,#%11100101,#%11110101 + .DA #%00000110,#%00010110,#%00100110,#%00110110,#%01000110,#%01010110,#%01100110,#%01110110 + .DA #%10000110,#%10010110,#%10100110,#%10110110,#%11000110,#%11010110,#%11100110,#%11110110 + .DA #%00000111,#%00010111,#%00100111,#%00110111,#%01000111,#%01010111,#%01100111,#%01110111 + .DA #%10000111,#%10010111,#%10100111,#%10110111,#%11000111,#%11010111,#%11100111,#%11110111 +SHIFT8.L5 .DA #%00000000,#%00100000,#%01000000,#%01100000,#%10000000,#%10100000,#%11000000,#%11100000 + .DA #%00000001,#%00100001,#%01000001,#%01100001,#%10000001,#%10100001,#%11000001,#%11100001 + .DA #%00000010,#%00100010,#%01000010,#%01100010,#%10000010,#%10100010,#%11000010,#%11100010 + .DA #%00000011,#%00100011,#%01000011,#%01100011,#%10000011,#%10100011,#%11000011,#%11100011 + .DA #%00000100,#%00100100,#%01000100,#%01100100,#%10000100,#%10100100,#%11000100,#%11100100 + .DA #%00000101,#%00100101,#%01000101,#%01100101,#%10000101,#%10100101,#%11000101,#%11100101 + .DA #%00000110,#%00100110,#%01000110,#%01100110,#%10000110,#%10100110,#%11000110,#%11100110 + .DA #%00000111,#%00100111,#%01000111,#%01100111,#%10000111,#%10100111,#%11000111,#%11100111 + .DA #%00001000,#%00101000,#%01001000,#%01101000,#%10001000,#%10101000,#%11001000,#%11101000 + .DA #%00001001,#%00101001,#%01001001,#%01101001,#%10001001,#%10101001,#%11001001,#%11101001 + .DA #%00001010,#%00101010,#%01001010,#%01101010,#%10001010,#%10101010,#%11001010,#%11101010 + .DA #%00001011,#%00101011,#%01001011,#%01101011,#%10001011,#%10101011,#%11001011,#%11101011 + .DA #%00001100,#%00101100,#%01001100,#%01101100,#%10001100,#%10101100,#%11001100,#%11101100 + .DA #%00001101,#%00101101,#%01001101,#%01101101,#%10001101,#%10101101,#%11001101,#%11101101 + .DA #%00001110,#%00101110,#%01001110,#%01101110,#%10001110,#%10101110,#%11001110,#%11101110 + .DA #%00001111,#%00101111,#%01001111,#%01101111,#%10001111,#%10101111,#%11001111,#%11101111 +SHIFT8.L6 .DA #%00000000,#%01000000,#%10000000,#%11000000,#%00000001,#%01000001,#%10000001,#%11000001 + .DA #%00000010,#%01000010,#%10000010,#%11000010,#%00000011,#%01000011,#%10000011,#%11000011 + .DA #%00000100,#%01000100,#%10000100,#%11000100,#%00000101,#%01000101,#%10000101,#%11000101 + .DA #%00000110,#%01000110,#%10000110,#%11000110,#%00000111,#%01000111,#%10000111,#%11000111 + .DA #%00001000,#%01001000,#%10001000,#%11001000,#%00001001,#%01001001,#%10001001,#%11001001 + .DA #%00001010,#%01001010,#%10001010,#%11001010,#%00001011,#%01001011,#%10001011,#%11001011 + .DA #%00001100,#%01001100,#%10001100,#%11001100,#%00001101,#%01001101,#%10001101,#%11001101 + .DA #%00001110,#%01001110,#%10001110,#%11001110,#%00001111,#%01001111,#%10001111,#%11001111 + .DA #%00010000,#%01010000,#%10010000,#%11010000,#%00010001,#%01010001,#%10010001,#%11010001 + .DA #%00010010,#%01010010,#%10010010,#%11010010,#%00010011,#%01010011,#%10010011,#%11010011 + .DA #%00010100,#%01010100,#%10010100,#%11010100,#%00010101,#%01010101,#%10010101,#%11010101 + .DA #%00010110,#%01010110,#%10010110,#%11010110,#%00010111,#%01010111,#%10010111,#%11010111 + .DA #%00011000,#%01011000,#%10011000,#%11011000,#%00011001,#%01011001,#%10011001,#%11011001 + .DA #%00011010,#%01011010,#%10011010,#%11011010,#%00011011,#%01011011,#%10011011,#%11011011 + .DA #%00011100,#%01011100,#%10011100,#%11011100,#%00011101,#%01011101,#%10011101,#%11011101 + .DA #%00011110,#%01011110,#%10011110,#%11011110,#%00011111,#%01011111,#%10011111,#%11011111 +SHIFT8.L7 .DA #%00000000,#%10000000,#%00000001,#%10000001,#%00000010,#%10000010,#%00000011,#%10000011 + .DA #%00000100,#%10000100,#%00000101,#%10000101,#%00000110,#%10000110,#%00000111,#%10000111 + .DA #%00001000,#%10001000,#%00001001,#%10001001,#%00001010,#%10001010,#%00001011,#%10001011 + .DA #%00001100,#%10001100,#%00001101,#%10001101,#%00001110,#%10001110,#%00001111,#%10001111 + .DA #%00010000,#%10010000,#%00010001,#%10010001,#%00010010,#%10010010,#%00010011,#%10010011 + .DA #%00010100,#%10010100,#%00010101,#%10010101,#%00010110,#%10010110,#%00010111,#%10010111 + .DA #%00011000,#%10011000,#%00011001,#%10011001,#%00011010,#%10011010,#%00011011,#%10011011 + .DA #%00011100,#%10011100,#%00011101,#%10011101,#%00011110,#%10011110,#%00011111,#%10011111 + .DA #%00100000,#%10100000,#%00100001,#%10100001,#%00100010,#%10100010,#%00100011,#%10100011 + .DA #%00100100,#%10100100,#%00100101,#%10100101,#%00100110,#%10100110,#%00100111,#%10100111 + .DA #%00101000,#%10101000,#%00101001,#%10101001,#%00101010,#%10101010,#%00101011,#%10101011 + .DA #%00101100,#%10101100,#%00101101,#%10101101,#%00101110,#%10101110,#%00101111,#%10101111 + .DA #%00110000,#%10110000,#%00110001,#%10110001,#%00110010,#%10110010,#%00110011,#%10110011 + .DA #%00110100,#%10110100,#%00110101,#%10110101,#%00110110,#%10110110,#%00110111,#%10110111 + .DA #%00111000,#%10111000,#%00111001,#%10111001,#%00111010,#%10111010,#%00111011,#%10111011 + .DA #%00111100,#%10111100,#%00111101,#%10111101,#%00111110,#%10111110,#%00111111,#%10111111 +*-------------------------------------- +MAN +SAVE /A2OSX.SRC/SYS/KERNEL.S.OSD +LOAD /A2OSX.SRC/SYS/KERNEL.S +ASM diff --git a/SYS/KM.VSDRIVE.S.txt b/SYS/KM.VSDRIVE.S.txt index 6d59e931..fd188eed 100644 --- a/SYS/KM.VSDRIVE.S.txt +++ b/SYS/KM.VSDRIVE.S.txt @@ -1,8 +1,6 @@ -PR#3 -PREFIX /A2OSX.BUILD NEW -INC 1 -AUTO 6 +PREFIX /A2OSX.BUILD +AUTO 4,1 .LIST OFF .OP 65C02 .OR $2000 diff --git a/X.FNT.I.txt b/X.FNT.I.txt index de474893..d67b7a5b 100644 --- a/X.FNT.I.txt +++ b/X.FNT.I.txt @@ -1,8 +1,6 @@ -PR#3 -PREFIX /A2OSX.BUILD NEW -INC 1 -AUTO 6 +PREFIX /A2OSX.BUILD +AUTO 4,1 .LIST OFF *-------------------------------------- S.FNT.dfVersion .EQ 0 diff --git a/X.PRINTF.S.txt b/X.PRINTF.S.txt index 1162110b..8094d90d 100644 --- a/X.PRINTF.S.txt +++ b/X.PRINTF.S.txt @@ -1,8 +1,6 @@ -PR#3 -PREFIX /A2OSX.BUILD NEW -INC 1 -AUTO 6 +PREFIX /A2OSX.BUILD +AUTO 4,1 .LIST OFF *-------------------------------------- PrintFAX sta PrintFAX.Next+1