From 00f9fe267ee4601256275e9cb7ed18e81eaa969c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Mon, 3 Oct 2016 17:59:36 +0200 Subject: [PATCH] Kernel version 0.8 : Kernel OK, now fixing DRV,BIN... --- A2OSX.BOOT.po | Bin 143360 -> 143360 bytes A2OSX.SRC.po | Bin 819200 -> 819200 bytes DRV/UTHERNET.DRV.S.txt | 16 ++--- INC/A2osX.I.txt | 6 +- SBIN/GETTY.S.txt | 3 +- SYS/KERNEL.S.BIN.txt | 2 +- SYS/KERNEL.S.DEV.txt | 2 +- SYS/KERNEL.S.DRV.txt | 2 +- SYS/KERNEL.S.EVT.txt | 2 +- SYS/KERNEL.S.FIO.txt | 6 +- SYS/KERNEL.S.INIT3.txt | 8 +-- SYS/KERNEL.S.IRQ.txt | 2 +- SYS/KERNEL.S.MEM.txt | 150 +++++++++++++++++++++++++++-------------- SYS/KERNEL.S.PS.txt | 8 +-- SYS/KERNEL.S.STR.txt | 5 +- SYS/KERNEL.S.TSK.txt | 8 +-- 16 files changed, 134 insertions(+), 86 deletions(-) diff --git a/A2OSX.BOOT.po b/A2OSX.BOOT.po index ceb07f319602546222c606a7fe9a3e76e0160b4c..44cb5e166d6174e7231222a1e987b06a3ec2c633 100644 GIT binary patch delta 5768 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 AHUIzs delta 5778 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 g-n-1E@Rqx%f~95pv4saV?V!Z diff --git a/A2OSX.SRC.po b/A2OSX.SRC.po index 97100ce88fa97bc0cd4c87c77be61281fe9839f3..01fe339ff537ee13ee48f1880aa4d9fa9d8da77b 100644 GIT binary patch delta 14475 zcmaib34D~r`TxwDyy4xvxwB_3$bB!_4FM7b%}D~e$OZxLO|p<+E;buUtQua96af{8 zGRCW(@n}716E3+#6s!ko)mjy_w$+Ml?P;~G|L?r-yU7Omeg1wvxVtmY%slhVGtYdV z?@ZROcdlRWe6}w*xIDQadSqSjVth%77l#n}eN!X1v zYR|#2O+isNr4jyLD*5fk2DN=-6qgQ)+_Nsq5**c^=da$ji1)hZe&a(yQGc4@FOBIe zPcDw$(`dbdqE&A6$TPORbN8kAs~0WBz!BjjZ%JiSePylPWv{5b43*#BL&C^MM!#6< zHRZ`!BlpFnp^wnWk(c5Y&U?$?ue7fzPfnfIM^#M&@8cLTkm^X%Gt(FY_4l^%IgXUX zUmO!d>XQAf_cTGl$UR%)pI>B3O(i*vjrOL2^5$B5qqnE4qpx)1NPX))tyx(CHRVm^ z9X%hY5yXG?YN&xdt5z9RQ)Dc8GEK! zwCvf{`?gjx(&e442|eO%j(mPYojbTBhK#cHcL&)Ll*)l#cXyl8;Zw3)D_!NKwY7?` zM=7gc;>aH9`t1#S#LvD962reBqn*!xKC(0-atRrAx3wy%>guy62Bf5k7!!M9VCxE{Tww<9IB*c!4t;C^c;n+8WWw_B=$Z!+S1#p*ynDp=~kBYc`hO1 z{dAPf{s~+89<}E@Ku0^<+)CEvjdh-`y4Bw1u3l$$-XM`5L_5z~v?Jm}kWYD-J@+0> zUib)#TlPN9cGx{llDy$o|0focMMF4WZ&Kr1G-n zu}xI4CC3rFgZ24tP?mVR%lcP2i{@_ddip%R@nQOoAjFrmSt-;SOQZ^-&8(8BGb>rd zzT85KtE$Q9nm(_x#9rm~c(9;%}j3HM*Lc zYU&qdlelFpYAdxFF4KBnu$(!!(u?T|*0YtG>??`pki{hC3Me0FBO+c&Mu~hCpX#8J z>LAvu*|pbFvygKQJGGT&(`(t^x6;`mZb+G1*xB}Ale1N`OIB}VANO}to8NSp4J_B_ z^Olk@4;fw9xXe|JX_;5C-fh%mUG0}^bospHz3|<3^lIy1_idwAx<(a>y>6P2+eb`Y z?C2I6yV%%`nyy|Lt=_Ya_rML-gEe4$HKbl`Ii^2<+XB0*u_a&#Xh)=5$Y^i- z0Fk!hvvYtXZDViVN)v~+qhr&plZ&;vx4*Al=|qEw+w{V+8l`|l-|in&TVxWpBVf>- z7Z?ISn{xhgA{*j<&)#CoSX{i@ym0p<~rK|by- zU7_WH{qgSNMlV#uXPt02`{*_rKXi{@`>LkO(h3rGZ$RJoq3^K!H395sBK`ygwg=Fq z8XV8FqxC`V{Xd+N^pF-;LLcTX$)ke&D89|x-P`UamDVwB&jfVV&NYvHY*I0Q*pVLR z3*;v96J*q0?NXfOM0}D@|EKKW?bH_blp1z;uePVzC%02;;WLwcl-D-6DocsFjG$G{|ezWlvmd44bZvf*?=%uA3VXtbvihUSB-FfOF5oy2H zjqw2X6yHM2v4vdTR&0D?JUG3KFGBJQC}Rt^)5L;9dhPU0cQ~MQYSSIzt+s8aaiP*t zZNRi+tYjxmr7yCpcT(HD8njoBw=s*M}o_ohGf`VngsVD>23X#c}KIn_$vs= z?@le)(uu!8!_W`?J|%smN0yJ-v%9Em@fn;nQ;`I7+N>Qj z*0X^XC?DqKPGbEeupE=r%cW1*(HQa2_#M=oA*4xc-hP^DFlb}V4P~wSX%Us#=zf|+ z!`NQ_5zgMjhbcmn35!H%Y;LG%z)3YLiiIAaGifx-IY6B>hFx`lrqEcn{s1j97&UpT ziIu)iE!50bzE17A76KIkq3lhbwXTjEJepRU`+Pm#kItO^kb2q_-jYaGT_YRGxxH~&S#3=@k>a$nhFHL0=ZOUL&#^&q8f!U3=cl9t#Q?X;s+S1)4L4J9Gq<<|rUxPVT+{V)!l<5+JbwBF;h6gdzZ`g55YoN>^-{zAVH# zPmhW<3Oo5O4WDnBkAi7X*2SZMSd5P1O0-CsTClmi-|O{s`;@-U9^Zlja>>Q)FNf*E zm<77lbAb95qJ`xWcIgpn4!M-8QOd47LgQ^^+78hbsrL-{TW>n^vuN4qy!+M`8inREVP)9!p3vm+(G}Y}HX3Lu=XKQ5qj# z2T@Z!u@?g80uO1zwFoS;8#Lh;j{;{mvX75ar)?>Q;Angf5u4CXa&a>b5?iw>ngncQ zTL#l3bWXP;P;S9x?22Q+Rm;)Nxq|IDMjdn|J9dm_%)J~A6Opf!dp&NSM{z5FJBq8e zp_#;ALF{uJyE!JE>aVKPy}FOgyHcHWG;o|h^|%^6&%K6uUZh0}uhoKy1t_ksr8S_n zx@BxF{#Kg@J$-qKyR);W6=M?-NRQ;TvG-r3xg5}`Xt;o+tzwbKX=)zuoDOSLAQ#_3 zkRE7<=9GTw2x)877GVH)dJAhOyY)B%Ko@)TIM%G2y?vaf(;oKqDdaCi?8U&AwdZY> zn);gN0wQ~LZReAiJ_O75f#E*)^&Uk%PffmQ?o!j;;VU2}WDbBl!$=1ZP;^Q0dJGZ1 zjv&p@rxiP(dq|kJ>SZq`{M7$Yw(Li>( z%QU)p9Ee)48O#rpt;(bT-}w#8>nocYA!pm5b`wuT;5`xxpcmkI+)V-dxSN{bP7aS&@yNJivdABNh`1B7VY}254CrQmxmBj6y#K{QlJWeMfQ1|gbEi*l^Dnz#A^+{rqL>Ou3ueV8GvLt-DX%^Baf+ z7{}vO%Dqf_g(in^cLjT z{1ChLsUQ=5n7#Q5H5Da4qFVXF;?*^qhzV$}wRh0pO>GbQV|^!S;i^m^HJ(Q51Ng($ zh81}$mHzIop0>lR>vjG{eyzl(`070U1AmzF45O!L zA$^wnjg{4%qUo1Br}@LI=eZC3A6-`05c3{wVFTumSY-RT>VdKf0l8acO|X-vXeQmu z%QKS!|4^zB%YLrQw1nQln;%e{2NA~$tm#!+Fmy=AK8JPea|H9qI1101znd%9*3sAM z_O>bKF9h_n9MeWf)fGg_-Ox}+q!+ctm4NtEHUglJ#GO!mQQf?O;?)U6dRdb<00BZC z4t7#=u(VU`+gEXR0{3xtBNEV0r-)R-;x)}We&11#GWm5Lvoyj25HOIi;Psfl{3Z_~ z7-tKSPHW@Le9I4L)CjcYyd5n#-`4i+#4l;084!{0Kf4osNx+Hf5%R7okc&MZ{@!Fg z$Qb}eVgyDE=n<#WMq>LwZIHmcD@scn@Z%-%`lKTTGMf9AveMYk-G zzSayI^;Z?aO>#7bzu`A995MeL(S&0&ehethJqi~gq5nX&3f_$WME!ZYQ2LkFY0Nhy zeTw(l+}n;o`)@U35b;~6k^Y@Fu^e{s8#FQdKPXE5uOGN;V6tqmrlNGiioiW?`JZZJ zCoz7H=A1_?<~(A5pGN_aNI-I#Dd+koQASf`Re60gDHE9TCbh8BZ{VZ}V*h!AT7_WB z8cu+exkzO8H))A21g&FdOl!?gt3ru4b*?giV^iTI5knyvBU65A1RRsrFi?M-omoD~ zzNyYGg+mg#XKDo1*|7h6dXaoAV-QJ+VyUMQjH5A9dJJ29nx+Bl_nfBYB%?YC&kv_< zDbWPcG&6hnG;%o$7c~iSHumvpYMT?Mt3IEI@sLVQ`2Q=Cs49{{fqF(I1_DS zXH7E@2XXnynr(aDq9#L%Mq8$)vRmJxDT!$sTNw}%w?r-gKWv?tR@a=BH49*b+*Q@8VV@S5;l=I2L*k=&vAd4 zYV4p z{sq-1R-#FC6|BP%FhUZd+a?mVNSk9?IgEl36IDI^cW4cMd)*-2rNuO-m?vT}OQ_Dg zVii@c(ol;M9z-JQXwF7|5Fw%UC{}|f9HjRsKMD?^iE-h7;jifZOuivK0M%Oft zQ^8xa>N?<^m#LeONSEn8wOp-eAkqqME4ai;%@w4}wLW972+&iFFT`-AU(u_kDSEYE z(adYul6PtPP|UUGYie^tCMO3I>h*PW0e`irYg$5bTWF3y&1-hIfXnRYQ+nO2k$H4> ztnP-K+oz;C=ELXAtq@hQF_)RIv<&(@aDz5Y-*^ulwSxeFRfl*guXeUTYZweIvQ*R`7=_}ApRW==? zmkkaf82>o%>Ol=|)*fvG&DM9Xs^IMT#MFyT-PbuiMoDY28aDu z6Us3KV!at(ygftHC&ML%{1WR`i606met``a7Kq(Qb8;9^({N2)BS@8+W@6dI+wd#4 zK#LN?WRcWphC(bfGP<%fkT=|iQ0=8Pfj=-BN9LY4?AH%2s}b^9!L)3=Mzl2kpKy(v{hCF z4B;Pu?Sm3DlD&J5X3!{h`YRmtQD4zuP<{M+a2c`2sNcl0GGd9<3M+`!s1;UM6Yzdq zQmCn6rC(8Va2>G%>7Ycct0NYx)}oPEZTy>sJ@^$h1}`U;c&*h+GX5uOi<@^Ym~5Dt zW5o5lv8OyabJ{IEZp8R4eJnK*mg&Ea@2D+Lj)-QBl35Ip5@yEb zl5ND42a=ZC9Npr8a^RnnnAzHcA%I(E`^a-FHl9de`1l@^LGG#EhvdKkWE$sWGqYq% z5V00Q&@_`sAobMi-=ZmSJ(q*)c^sZI8Y~#&BTJ^Hf-ASsizcUXu{MQo#HCufm( z3Gj4{Mq_5x;5GrZ}HSby@}^)CcNtdJYX zvn2mVEXj$d9m#gV7PzCf}ZjL$hKDNmz6w#ls{Z7HL>H$c~4{}e$iK`I9Lu7|aWQY&*iboKNZUgj2 z#iM$KG^YFHW0O9)te0PrM?XGUP`i#77@p9al%zh%mKF*r@=tZ=BzZq$Hx~-I)lX?% znV;6fklN90Iu8*0jQ?74GtW5OEq%oNtS+bypb298J;%N-6igwYq)7H27B)x7iugGv zBL<213zV71)kqL2P3Sv+FAC%K>CwxwpAF3s%wY#$SkAsUiR~bJaE@TLy}(OwneHUv zAeuCy!&yMAhuO|}YOV-9!rfX8ct`bRN74gciEtK41=?Vdc#&a6$x?aI%gDpYSMt}Axq>}QGiSyv3%w)*>y!i5`B$rEfUh{>+IPgVHSOZoi2iZ zzRAAfg{N84TztI6D&`8w^li3kF81_0?2fq*`4v0BKi*}Z^1}C6)I1@MzRz;!p_gB? zTK?+;wtAj$5&aE&cpiHBke!@|@jhao&l3_1A8QJyoMGYf(f3()_9DTQZTUpK(A3gy ze`Lfh2q+$%(7~IQ0y6tE)-_+SC;pC`25gQReL>}r(9iuOkM)a@(>u+1;eYh+gY--y zgT(QlH{fxI1O|t%X#%(#fD3l|kZc-~{;Zi=27!aSBsH3Tt#ty3rQEm6n3%2{0t_5=aZ@3oVYj~!f2fn7Wjonr(WE#NQkhuTwtDH~DBvV-& zC>y?;r{Ijo-rUj&xFr8i?`#f{z}2Xy0{9t~vneEDU}@9|JH|@{M;M*MoK-^B#5GmI zgH!}WClO=Sf-oU27BYguBbH7wij6L|picNKA+dGx&aAoby2;Ea*M%c~qO4x{y$~L8 zXJD(6rNW8bi>YzENw`#sbQ(!Qa=r<06j5MNTKE4`hz(83ryeIPS2VU_HO4=AoChpQcxU^N{wtd_Aq#HMFb&Cr}F7RIfaR zN}izy)Dr1ctuo@5sC0RJDhp1e*K}gzb$vLnSbRA1o4kLww*{GHc~2+j9C~m$db(Q| ze@hn!S;ECHdq*D;nMEn*1cn#tZ=IABWU*SlQBvyjdAfS})h}*ixqe_QkhbFD46NEJ z{BG0eK%T*-SEqno9idO{+ub7EL$lbuErN~hZxLL8UJ_g`HzGM8a80J=fj&!Imee~ZHx<a0x*|OydfudV7-XW`E$tFifi`KZ&5$(_ zx!v$}P^9Kw#y{|(tD5cOI}BZwkxs-worp!#O%uwm3_~I8@M=LE`_OR1gm_sfW_A@t zL>gNWdbPwKQbZr4<>TX_|E3dkZ|L_k*>~+i>O|K2q3=^sg`#60gy!tNEL5Bb4VM2& zMck&gDPtkBnTZJ?#d29?f}G9z66BwTN9>x^8zG}0QGPQL6g>B0II*|CySrmNNv0_i zA(zVEQc=}^tV|YIWQF{<@QCN&LL4Wn(ZpCOpNqhpjbqJnida*>%vH(gIyq;e_MnQP#Ul7RT<8@iz7@`5fIn zcZPB7ZdsZTA3`NJ@7N=sWHE<- zGc(6N*{JH2r|C2+pWU@jo*4(`ReM&oxlF?^cvmr--c8~P*y(+;jXKzu`{cOA&Z*qp ze_qYmKujtLtJ+&lxR+Oyt|V4)u{?ziJXv@eDuR_I*14=|c{hI(STh}GXMn-jpY>OQKDjH>2pB7$%wix#rq@0Y6#AY1t% zZo8Ddez$DR0O3kZWt>_78XESxyTR!d*zGv)K)mWlIMOkCP>#jbALvznOc<-!&I5An zRp3=M0&Q~gMCRNo$6{c-L91#vVUyKhB;>`K9r)q11cQgy@-3q$CSX%>67w_K+Q7%O z7#cNRB4H^@J}Adu)5Q4*WL@A;`7s@U6XpOXH0vtkya$o0vZ#En(sKT`8B+p@s-Anm zIp9%=e7VkKU~#X&@8m1lJqP7k^eXoKL3t*r-!v@ z3Zy!4A=NrL<*+tbgtOczPV%suUXT-!ncc%1uIAk&3F+1o>nkpLz=e)&X?auS=Y1DBk+BN z`&Ju~H*hsU-D43qVo~BYv9(8J+t9G4ePHW~%5nmhP`#b~LHU*+j>hH1TexFv)g5A+ z?hv?B-Oe#a8_59mr?Qdfb;t}yfc zWw$>fo8re1b0$&Ma!*^gr?1UDm_n?NQFizd*#E zGfWlMaea;W!-lD%#r@qLls!MatP^tPJ@l#o!P5TK{e8X^Jbwrjb$I|NyIMTn6k_>B zU_}EEt6FRw4=k?lxn38yPOwj2L|oge&Dge&(c`j}?q_kw<@AOF`obRs|E&3o6AWLe z*XtfcQZB!Ms}(J$v>gH=t#Q}-J449f-i^qIA%puUJh6;F!frb*$K@ZL#$6xNhA_RT z`&Qrp=Hql^?fbDp-b;KZ$Fl!IwV@N-%hcO_>1EBeU;N?H@HI&Y@T|dWqgyD4Dym$9{x(njt4l# z)2iQVV!VvMRe6iDrSriRo8M7Y4k8J^VrO2G7)Y8*nh{qKOyHEe$OKvD7`Ccmn??6es+dz45XfPyfQs zd>CY&A%2ar#J}P(l$?L2ML^u*}NJT&Fb4H-4V>eynJA)Tz%CiiGrFa$svOFwtf?CH3a6k MKe&7Blsx|b0Ag8~?EnA( delta 13803 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 LrMP1Fv^etrt0t{} diff --git a/DRV/UTHERNET.DRV.S.txt b/DRV/UTHERNET.DRV.S.txt index bda83a43..0ebeb468 100644 --- a/DRV/UTHERNET.DRV.S.txt +++ b/DRV/UTHERNET.DRV.S.txt @@ -32,14 +32,14 @@ PP.RxCFG.LID .EQ %00000000.00000011 PP.RxCTL .EQ $0104 Receiver Control (RW) PP.RxCTL.LID .EQ %00000000.00000101 PP.RxCTL.IAHashA .EQ %00000000.01000000 -PP.RxCTL.PromisA .EQ %00000000.10000000 +*PP.RxCTL.PromisA .EQ %00000000.10000000 PP.RxCTL.RxOKA .EQ %00000001.00000000 PP.RxCTL.MulticastA .EQ %00000010.00000000 PP.RxCTL.IA .EQ %00000100.00000000 PP.RxCTL.BroadcastA .EQ %00001000.00000000 -PP.RxCTL.CRCerrorA .EQ %00010000.00000000 -PP.RxCTL.RuntA .EQ %00100000.00000000 -PP.RxCTL.ExtradataA .EQ %01000000.00000000 +*PP.RxCTL.CRCerrorA .EQ %00010000.00000000 +*PP.RxCTL.RuntA .EQ %00100000.00000000 +*PP.RxCTL.ExtradataA .EQ %01000000.00000000 PP.TxCFG .EQ $0106 Transmit Configuration (RW) PP.TxCMD .EQ $0108 Receiver Control (RW) PP.TxCMD.LID .EQ %00000000.00001001 @@ -63,12 +63,12 @@ PP.SelfCTL .EQ $0114 Self Control (RW) PP.SelfCTL.LID .EQ %00000000.00010101 PP.SelfCTL.RESET .EQ %00000000.01000000 PP.SelfCTL.SWSuspnd .EQ %00000000.10000000 -PP.SelfCTL.HWSleepE .EQ %00000001.00000000 -PP.SelfCTL.HWStndby .EQ %00000010.00000000 +*PP.SelfCTL.HWSleepE .EQ %00000001.00000000 +*PP.SelfCTL.HWStndby .EQ %00000010.00000000 PP.BufCTL .EQ $0116 PP.TestCTL .EQ $0118 -PP.TestCTL.LID .EQ %00000000.00011001 -PP.TestCTL.DisLT .EQ %00000000.10000000 +*PP.TestCTL.LID .EQ %00000000.00011001 +*PP.TestCTL.DisLT .EQ %00000000.10000000 PP.TestCTL.FDX .EQ %01000000.00000000 PP.ISQ .EQ $0120 PP.RxEvent .EQ $0124 Receiver Event (RO) diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index c09127bf..1fffbadb 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -285,7 +285,7 @@ S.MEM.BIN .EQ 3 S.MEM.PTR .EQ 4 S.MEM.LEN .EQ 6 * -S.MEM.SIZE .EQ 8 +S.MEM .EQ 8 *-------------------------------------- * DEV STRUCT *-------------------------------------- @@ -303,7 +303,7 @@ S.DEV.F.BLOCK .EQ %00000010 S.DEV.F.CHAR .EQ %00000001 S.DEV.NAME .EQ 6 5 Bytes : LEN+NUL KBD CON COMx LPTx ETHx * -S.DEV.SIZE .EQ 16 +S.DEV .EQ 16 *-------------------------------------- S.DEVINFO.TYPE .EQ 0 S.DEVINFO.TYPE.CHAR .EQ %00000001 @@ -369,7 +369,7 @@ S.PS.CID .EQ 12 S.PS.LASTERROR .EQ 13 S.PS.PC .EQ 14 * -S.PS.SIZE .EQ 16 +S.PS .EQ 16 *-------------------------------------- * LIB Function Indexes *-------------------------------------- diff --git a/SBIN/GETTY.S.txt b/SBIN/GETTY.S.txt index 6e5855d9..534b941a 100644 --- a/SBIN/GETTY.S.txt +++ b/SBIN/GETTY.S.txt @@ -111,9 +111,10 @@ CS.DOEVENT sec *-------------------------------------- CS.QUIT ldy #hBinName lda (pData),y + beq .1 >SYSCALL SYS.FreeMemA - ldx #DEVMGR.CLOSE +.1 ldx #DEVMGR.CLOSE * jsr pDevJmp clc diff --git a/SYS/KERNEL.S.BIN.txt b/SYS/KERNEL.S.BIN.txt index 6edf7083..0f787de2 100644 --- a/SYS/KERNEL.S.BIN.txt +++ b/SYS/KERNEL.S.BIN.txt @@ -226,7 +226,7 @@ BIN.MoveDRV ldy #H.BIN.DRV.DEVCTRLBLK.O jsr K.GetDevByIDA >STYA pDev - ldy #S.DEV.SIZE Make sure DevMgr.Table Ends with 0 + ldy #S.DEV Make sure DevMgr.Table Ends with 0 lda #0 sta (pDev),y diff --git a/SYS/KERNEL.S.DEV.txt b/SYS/KERNEL.S.DEV.txt index 196653c1..bfa22cb7 100644 --- a/SYS/KERNEL.S.DEV.txt +++ b/SYS/KERNEL.S.DEV.txt @@ -72,7 +72,7 @@ K.GetDevByNameYA .3 lda ZPQuickPtr2 clc - adc #S.DEV.SIZE + adc #S.DEV sta ZPQuickPtr2 bcc .4 diff --git a/SYS/KERNEL.S.DRV.txt b/SYS/KERNEL.S.DRV.txt index f3b0aac6..c3fb3b53 100644 --- a/SYS/KERNEL.S.DRV.txt +++ b/SYS/KERNEL.S.DRV.txt @@ -24,7 +24,7 @@ K.LoadDrvYA >STYA K.LoadDrv.CmdArray jsr K.FileSearch find libname in $DRV bcs .99 stx K.LoadDrv.hFullName - + jsr K.LoadExeYA Y,A =filename full path bcs .98 diff --git a/SYS/KERNEL.S.EVT.txt b/SYS/KERNEL.S.EVT.txt index 478ba144..0b704d06 100644 --- a/SYS/KERNEL.S.EVT.txt +++ b/SYS/KERNEL.S.EVT.txt @@ -114,7 +114,7 @@ EVT.GetEvents.DEV .2 lda pDev clc - adc #S.DEV.SIZE + adc #S.DEV sta pDev bcc .3 inc pDev+1 diff --git a/SYS/KERNEL.S.FIO.txt b/SYS/KERNEL.S.FIO.txt index 2a704500..cd408497 100644 --- a/SYS/KERNEL.S.FIO.txt +++ b/SYS/KERNEL.S.FIO.txt @@ -15,7 +15,7 @@ AUTO 6 *-------------------------------------- K.FileSearch >PULLW ZPQuickPtr4 ZPQuickPtr1 trashed by ExpandPStrYA >PULLYA Get Search list - jsr K.ExpandPStrYA Expand it + >SYSCALL SYS.ExpandPStrYA Expand it (SYSCALL to BNK1) bcs .99 stx K.FileSearch.hSrch @@ -64,7 +64,9 @@ K.FileSearch >PULLW ZPQuickPtr4 ZPQuickPtr1 trashed by ExpandPStrYA lda K.FileSearch.hSrch Discard Expanded hSrch list jsr K.FreeMemA >LDYAI KrnBuf256 - jmp K.NewPStrYA + >SYSCALL SYS.NewPStrYA + clc + rts .98 lda K.FileSearch.hSrch Discard Expanded hSrch list jsr K.FreeMemA diff --git a/SYS/KERNEL.S.INIT3.txt b/SYS/KERNEL.S.INIT3.txt index 2b94000d..fa4eced7 100644 --- a/SYS/KERNEL.S.INIT3.txt +++ b/SYS/KERNEL.S.INIT3.txt @@ -77,13 +77,13 @@ Kernel.Init3 jsr K.DevMgrInit *-------------------------------------- * K.DevMgrInit *-------------------------------------- -K.DevMgrInit ldx #S.DEV.SIZE*DevMgr.Count +K.DevMgrInit ldx #S.DEV*DevMgr.Count .1 lda DevMgr.NUL-1,x sta DevMgr.Table-1,x dex bne .1 - stz DevMgr.Table+S.DEV.SIZE*DevMgr.Count+1 + stz DevMgr.Table+S.DEV*DevMgr.Count+1 lda #DevMgr.Count-1 sta DevMgr.LastDevID @@ -198,7 +198,7 @@ K.TskMgrInit stz TSKMGR.LASTID ldx #K.PS.MAX .1 lda #0 - ldy #S.PS.SIZE-1 + ldy #S.PS-1 .2 sta (pPs),y dey @@ -206,7 +206,7 @@ K.TskMgrInit stz TSKMGR.LASTID lda pPs clc - adc #S.PS.SIZE + adc #S.PS sta pPs bcc .3 diff --git a/SYS/KERNEL.S.IRQ.txt b/SYS/KERNEL.S.IRQ.txt index 2e2fd065..c38a98f2 100644 --- a/SYS/KERNEL.S.IRQ.txt +++ b/SYS/KERNEL.S.IRQ.txt @@ -52,7 +52,7 @@ K.IrqHandlerAuxLC bcc .8 CC, IRQ cleared by device .2 lda $fe CS, - adc #S.DEV.SIZE-1 + adc #S.DEV-1 sta $fe bcc .1 inc $ff diff --git a/SYS/KERNEL.S.MEM.txt b/SYS/KERNEL.S.MEM.txt index a679a74a..ce376dc2 100644 --- a/SYS/KERNEL.S.MEM.txt +++ b/SYS/KERNEL.S.MEM.txt @@ -5,7 +5,6 @@ INC 1 AUTO 6 .LIST OFF *-------------------------------------- -* !!!!!!!! DO NOT USE VCPU16 !!!!!!!! * !!!!!! DO NOT USE ZPQuickPTRs !!!!! *-------------------------------------- ZPMemMgrSPtr .EQ ZPMEMMGR Pointer To Slot selected @@ -19,6 +18,10 @@ ZPMemMgrTmp3 .EQ ZPMEMMGR+6 * Garbage collector move blocks * - mem.ID=0 always used! useful to test if hMem=0 *-------------------------------------- +MemMgr.SlotCnt .BS 1 +MemMgr.ReqFlags .BS 1 store requested Flags +MemMgr.ReqSize .BS 2 store requested Size +*-------------------------------------- * PUBLIC *-------------------------------------- * K.GetMem @@ -155,26 +158,24 @@ MemMgr.AddSlot >STYA ZPMemMgrTmp1 save req size lda MemMgr.Free Compute base PTR=FREE-REQ size sec sbc ZPMemMgrTmp1 - sta ZPMemMgrTmp2 store new MemMgr.Free in ZPMemMgrTmp2 + tay save new MemMgr.Free LO lda MemMgr.Free+1 sbc ZPMemMgrTmp1+1 - sta ZPMemMgrTmp2+1 + pha save new MemMgr.Free HI - lda ZPMemMgrTmp2 ensure new MemMgr.Free is not lower - sec than LoMem - sbc MemMgr.LoMem - lda ZPMemMgrTmp2+1 + cpy MemMgr.LoMem sbc MemMgr.LoMem+1 bcc .98 ERR out of mem - jsr MemMgr.NextSlot + jsr MemMgr.NextSlot X,Y unmodified + + tya get back MemMgr.Free LO ldy #S.MEM.PTR - lda ZPMemMgrTmp2 get new MemMgr.Free sta MemMgr.Free set as system MemMgr.Free value sta (ZPMemMgrSPtr),y store is as base address of new slot iny - lda ZPMemMgrTmp2+1 + pla get back MemMgr.Free HI sta MemMgr.Free+1 sta (ZPMemMgrSPtr),y @@ -189,7 +190,8 @@ MemMgr.AddSlot >STYA ZPMemMgrTmp1 save req size clc rts -.98 lda #MemMgr.ERROOM +.98 pla discard new MemMgr.Free HI + lda #MemMgr.ERROOM sec rts @@ -199,7 +201,7 @@ MemMgr.AddSlot >STYA ZPMemMgrTmp1 save req size *-------------------------------------- MemMgr.NextSlot lda ZPMemMgrSPtr clc - adc #S.MEM.SIZE + adc #S.MEM sta ZPMemMgrSPtr bcc .8 inc ZPMemMgrSPtr+1 @@ -237,10 +239,6 @@ MemMgr.Init0 ldy #S.MEM.PTR .8 rts *-------------------------------------- -MemMgr.SlotCnt .BS 1 -MemMgr.ReqFlags .BS 1 store requested Flags -MemMgr.ReqSize .BS 2 store requested Size -*-------------------------------------- * K.FreeMemA * In: * A = hMem To Free @@ -248,13 +246,13 @@ MemMgr.ReqSize .BS 2 store requested Size * X,Y unmodified *-------------------------------------- K.FreeMemA phy - phx - tax - beq .8 Slot=0, reserved by Kernel + tay - jsr K.GetMemByIDA + beq * Slot=0, reserved by Kernel + + jsr K.GetMemByIDA X unmodified lda (ZPMemMgrSPtr) - bpl * In use ? + bpl .9 In use ? ldy #S.MEM.REFCNT lda (ZPMemMgrSPtr),y Get count of those referencing this hMem @@ -269,7 +267,7 @@ K.FreeMemA phy pha save hMem >PUSHW ZPMemMgrSPtr pla - jsr K.GetMemByIDA + jsr K.GetMemByIDA X unmodified lda (ZPMemMgrSPtr) bpl * ***MUST BE ALLOCATED*** @@ -283,7 +281,7 @@ K.FreeMemA phy .2 lda MemMgr.LastSlot beq .8 - jsr K.GetMemByIDA + jsr K.GetMemByIDA X unmodified lda (ZPMemMgrSPtr) bmi .8 @@ -300,10 +298,35 @@ K.FreeMemA phy dec MemMgr.LastSlot discard last slot bne .2 no slot left, exit -.8 plx - ply +.8 ply clc rts +*-------------------------------------- +.9 ply discard saved Y + + lda $D000 + sta .91+1 + bit RRAMWRAMBNK1 + bit RRAMWRAMBNK1 + + jsr PS.Select0 + + pla Get PC and sub 2 for calling address + sec + sbc #2 + tay + pla + sbc #0 + + >PUSHYA + + >LDYAI K.FreeMemA.ERR + jsr K.PStrOutYA + +.91 ldx #$ff + bit $C000,x + bit $C000,x + bra * *-------------------------------------- * K.GetMemPtrA * In: @@ -327,27 +350,49 @@ K.GetMemPtrA jsr K.GetMemByIDA * Out: * Y,A = ZPMemMgrSPtr = PTR to S.MEM * X unmodified +* *** Optimized for : +* MemMgr.Table is page aligned at $1800 +* S.MEM is 8 bytes *-------------------------------------- -K.GetMemByIDA stz ZPMemMgrSPtr+1 - - asl - rol ZPMemMgrSPtr+1 - asl - rol ZPMemMgrSPtr+1 - asl - rol ZPMemMgrSPtr+1 - -* clc IMPLICIT - - adc #MemMgr.Table - tay - lda ZPMemMgrSPtr+1 - adc /MemMgr.Table - - sty ZPMemMgrSPtr + .DO MemMgr.Table=$1800 + .ELSE + !!!!!WARNING!!!!! + .FIN + .DO S.MEM=8 + .ELSE + !!!!!WARNING!!!!! + .FIN +*-------------------------------------- +K.GetMemByIDA sta ZPMemMgrSPtr + lda /MemMgr.Table/8 + asl ZPMemMgrSPtr + rol + asl ZPMemMgrSPtr + rol + asl ZPMemMgrSPtr + rol sta ZPMemMgrSPtr+1 + ldy ZPMemMgrSPtr rts *-------------------------------------- +* OLD CODE +*-------------------------------------- +* stz ZPMemMgrSPtr+1 +* asl +* rol ZPMemMgrSPtr+1 +* asl +* rol ZPMemMgrSPtr+1 +* asl +* rol ZPMemMgrSPtr+1 +** clc IMPLICIT +* adc #MemMgr.Table +* tay +* lda ZPMemMgrSPtr+1 +* adc /MemMgr.Table +* sty ZPMemMgrSPtr +* sta ZPMemMgrSPtr+1 +* rts +*-------------------------------------- * In: * Y,A = BINPATH (PSTR) * Out: @@ -355,15 +400,16 @@ K.GetMemByIDA stz ZPMemMgrSPtr+1 * X = hMem *-------------------------------------- K.GetMemByNameYA + ldx MemMgr.LastSlot + beq .9 + >STYA ZPMemMgrTmp1 save BINPATH >LDYAI MemMgr.Table >STYA ZPMemMgrTmp2 + ldx #0 -.1 cpx MemMgr.LastSlot - beq .9 - - lda (ZPMemMgrTmp2) +.1 lda (ZPMemMgrTmp2) bpl .6 In Use? ldy #S.MEM.BIN any BIN PATH in this slot? @@ -393,14 +439,14 @@ K.GetMemByNameYA .6 lda ZPMemMgrTmp2 clc - adc #S.MEM.SIZE + adc #S.MEM sta ZPMemMgrTmp2 - bcc .7 + bcc .8 inc ZPMemMgrTmp2+1 -.7 inx - - bra .1 +.8 inx +.81 cpx MemMgr.LastSlot + bne .1 .9 sec rts @@ -419,6 +465,8 @@ K.GarbageCollector clc rts *-------------------------------------- +K.FreeMemA.ERR >PSTRING "***MemMgr:Attempted to Free an already freed hMem at $%H" +*-------------------------------------- MAN SAVE SYS/KERNEL.S.MEM LOAD SYS/KERNEL.S diff --git a/SYS/KERNEL.S.PS.txt b/SYS/KERNEL.S.PS.txt index 459a6ea4..7b64cc52 100644 --- a/SYS/KERNEL.S.PS.txt +++ b/SYS/KERNEL.S.PS.txt @@ -81,7 +81,7 @@ K.GetPSByIDA sta K.GetPSByIDA.PS .1 inx lda ZPQuickPtr1 clc - adc #S.PS.SIZE + adc #S.PS sta ZPQuickPtr1 bcc .2 inc ZPQuickPtr1+1 @@ -130,7 +130,7 @@ K.Sleep pla get PC LO * we cannot use ZPQuickPtrs1 & 2 * because of calling K.NewPStrYA & S.DupEnvA *-------------------------------------- -PS.CreateChild >LDYAI TskMgr.Table+S.PS.SIZE +PS.CreateChild >LDYAI TskMgr.Table+S.PS >STYA ZPQuickPtr3 ldx #0 @@ -143,7 +143,7 @@ PS.CreateChild >LDYAI TskMgr.Table+S.PS.SIZE bpl .3 lda ZPQuickPtr3 clc - adc #S.PS.SIZE + adc #S.PS sta ZPQuickPtr3 bcc .1 inc ZPQuickPtr3+1 @@ -174,7 +174,7 @@ PS.CreateChild >LDYAI TskMgr.Table+S.PS.SIZE .5 sta (ZPQuickPtr3),y Blank Everything in this S.PS iny - cpy #S.PS.SIZE + cpy #S.PS bne .5 lda #S.PS.F.ENV diff --git a/SYS/KERNEL.S.STR.txt b/SYS/KERNEL.S.STR.txt index 637332ab..4dd8b4f6 100644 --- a/SYS/KERNEL.S.STR.txt +++ b/SYS/KERNEL.S.STR.txt @@ -29,10 +29,7 @@ K.NewPStrYA >STYA ZPQuickPtr1 >LDYA ZPQuickPtr2 clc - rts - -.9 sec - rts +.9 rts *-------------------------------------- * K.PStrCpy * IN: diff --git a/SYS/KERNEL.S.TSK.txt b/SYS/KERNEL.S.TSK.txt index 280d9709..638aa59f 100644 --- a/SYS/KERNEL.S.TSK.txt +++ b/SYS/KERNEL.S.TSK.txt @@ -7,7 +7,7 @@ AUTO 6 *-------------------------------------- * TSK.TskMgrRun *-------------------------------------- -TSK.TskMgrRun >LDYAI TskMgr.Table+S.PS.SIZE skip PS 0 +TSK.TskMgrRun >LDYAI TskMgr.Table+S.PS skip PS 0 >STYA pPs lda TSKMGR.SIZE @@ -78,7 +78,7 @@ TSK.TskMgrRun >LDYAI TskMgr.Table+S.PS.SIZE skip PS 0 .7 lda pPs clc - adc #S.PS.SIZE + adc #S.PS sta pPs bcc .71 inc pPs+1 @@ -96,7 +96,7 @@ TSK.TskMgrRun >LDYAI TskMgr.Table+S.PS.SIZE skip PS 0 * CC: Event Cleared *-------------------------------------- TSK.DispatchEvents - >LDYAI TskMgr.Table+S.PS.SIZE + >LDYAI TskMgr.Table+S.PS >STYA pPs lda TSKMGR.SIZE @@ -146,7 +146,7 @@ TSK.DispatchEvents .4 lda pPs clc - adc #S.PS.SIZE + adc #S.PS sta pPs bcc .1 inc pPs+1