From 2ed4cf6587616ea1e21ea19246be89d1bfd67be8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Tue, 20 Sep 2016 18:00:51 +0200 Subject: [PATCH] Kernel version 0.8 : FILE/DIR migration in BIN/EDIT --- A2OSX.BOOT.po | Bin 143360 -> 143360 bytes A2OSX.SRC.po | Bin 819200 -> 819200 bytes BIN/EDIT.S.CTRL.txt | 1 + BIN/EDIT.S.txt | 187 ++++++++++++++++++++---------------------- INC/A2osX.I.txt | 36 +++----- INC/PRODOS.I.txt | 2 + SYS/KERNEL.S.FILE.txt | 19 ++++- SYS/KERNEL.S.FIO.txt | 77 ++++++++++++++++- SYS/KERNEL.S.JMP.txt | 6 +- SYS/KERNEL.S.txt | 4 +- 10 files changed, 195 insertions(+), 137 deletions(-) diff --git a/A2OSX.BOOT.po b/A2OSX.BOOT.po index e285501c3a8af5e9c4566eac743266e110caec0e..e78acb338dfe13ce770e15d65f47743dd10062dc 100644 GIT binary patch delta 6093 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 Sy!MMP&%kxskB5(;C;tm4ojC~r diff --git a/A2OSX.SRC.po b/A2OSX.SRC.po index bf5fbaa41f68aef35068ae41622ad215f57b4658..6c8ff891d6c426918b0c8f82ac7c72e174e0733b 100644 GIT binary patch delta 20957 zcmaKUd0gqNg1x3pQhw`>JM(x#k}fnUw78ZwNTsy3EeLKgfb6Sr zxZ;kZ)p1{Obacd-aTaGo#a(gV9d~DQ`+e^6(iGI09ay{Ai$Pa*7I zDS0Q>#26pAXY%XgGwsCg*5L2gaXHs#?@TYq(133*_Y{|!ADCy!)T5a!Q=-NGQl^=7 zWs&~E>`X|z?i^2X4H|X4u`;3PK1qzf+(HfiGJbHy=5~AfbW$E~jIQnqY?5D|xNS?`)S1Lv(LdDg40o=LhTFF~1B>HjZkKzLcg;GY&Jv{6vlAb0sZyMY zqOAqWoWv5^aBGR;PW)_Zv9Ur>6;>vm*jfNh%rmQwGV_T^*FVVPdhVdjR_T)rt zTaIzQc$>8#as9TL$|;Gbx0M@D6)?Lu@xwNou}-{|_!5QNi;aFsA4oK8pP3&d%W7Pw zHMZ=Qy=84K6cn}fiGAB^j1A&#-f4+vx7QjMNn9wAy`#q1DBh}@5^X!GjLqV0PD>)O z!`ZS}yxCg`EZ%tTpfl3Byf-SXT7!0Ghc!%n4@gEao5H>Q!*N%p`1=1Ez;SG&JaR#&&2R@&xtP#HP?AV@fPpG04X_(ep93?Hl8h; zK8F?*>#Xl2-S%Qi&9i-@g({n_6VChBSAfHTlStc#=@`du!!GtlJc?odwD zkPu{r(XR^m;@-CQco}G1@j7qQq6(rm34C_*D1XIv*1>WzsRgoI>IFTqFGib|#JztX zue7q(S4A2c14IqW_9H3$sqME3`I$>n+J|}IFw(l&?UIv0cgU7IWXqh=zKpdu4*r&i z9mzE`v@Rz0GZ@Iw7-%H+Gx?u&4Nb&;7W*@C?-9LnHfISn)ZPEg-wP&1+9P6QTpog1 z_Uq3J6i?!H{9l#${_}jLI${5!ST~o@_=D!`G~ofRxumRyLoAcS5r3SIxywz;YB|tq zmJmNFo|m}niz4Nu#KAA}m6H=s;Q#rF*8y3O`0DPB|Fu8fLMs3DYUqzorlLaFQ}l6|hVCd)KUvrl4%iiMzkD zDlLgWe3kFQmL-0~-=`<+-`Hz0oyw}J84C|bCCM6^`6Pk$iLE>F{WsRUXcD)yHPX`B91$Wa>WE`S!u73P zIXAKBTYKKhBw5f`7i`m7@>CFePa^)UO*t=d4aim{$(A%VM}kd$ANx z({Jsuz9d=m5@_GnB*|)sqd$pS(i}=@sFvgoBvCN1h~XX|QO_6dm@&xE`?;6a1u;{z zhsbGREHVK>3Roq{876*jByssaGh%Bv|3DPJvet>xCM;A_L94GIpz;+a5@40Bn2Gl zXc5rDPgA5}y@&nfwrL9X^hUQY5Nd{DeM1fm4R^wdNr@|&T%!LLjP`%h_+BO3 z$QsfA3xGqaqF$`q`1Avc?w`t`&5BixrEkRwJ<3i@+t4rU!se0U?WBC8X4n5|uN{&= z*h@3l&J^gVxpt)pOEFirw3m4|)aYL`jCOPP(6e_dIkCOqXvavbg!=LR6>-)>j1}*m zx=)zbeg({{b$z?=CuyX_sF8m5|1;8l*d&7{ts9PbBVJ;^iVp|fyjPiQ=B7KqYUJ0KO&18-woAHI3!vQZ*Zxs_py$$`vMA82OvP`!_ z7UlEh4q>y*JI9Q8hnJY{(#E{tZWz5|mN!11dhLoO?Viz5xtEX1)cgLgQMq5VQ1k%3 zX17vke~@*&EAB+BQy-H3I|QAkKTMDAR;DSxq~GsWs_P%oI)X^BFglEA?ImfCYDTLe z`d@*^_82<1a^2=o=is?m{DxO{_Qk6`t4<;6SDB&wnYm1*@)te}>7Vv0la#;Gm-Z^te1Fp#K$lyi zo!unu?^+9UiT(&=*q;$3Q225l9=YSQFr|MM=sC~Px_ydMIZDspr_3&XUV70B(#kJ_ z#QYLQey)hQFViRXDY==iXw3!(qfw}9|F`DU{{chZe>Eed_DXnL#&=29rL7H-07?5^ zQy5@ua2=uD7|{TBA11r=GA(IuOq5K z5neq3vP>#u39mLP;+$$yMk9ff1&O{+?BSes;W#!O=2RqaX%oY^i7gG7pcX-#EY@5u zFxH8wJb-T&vaFL*;aFHCT%DXy?)rHyJEYEZ<8Uf^Zmi|%Z9>HTNI7(s^4dUp@nmvO zQKkv!@i)3X#kCpqQ&sm<=0sx6A;rZ`3*aA~$>0zFVAPGvi4jMqJUU>X&o*srkH4V| zr>{!lST0d)4NXPiSl1=yVoo<1@bz~`Pg^}8Hz@&3M@y6pgnE_(c!k)x1l*OxvVsiw z2iK+ot4X2dTtK5^pcvqlLi&^*dbC(qW;{>4&R9j265VvAmzJ04TuL83y+mhM`svyd zUAb~TJ;>gM=wok)GUt-DyaT*Q45J-ZZ|Tuk?t>O9IN^eH?hTq;QSA2AdvF!~TU>&C&HjLsEo6M_<{`No==nzsIkt_d_)wsUpXzEz-X?nE5rady zoIZBMkXO4|Qu$k#IJuTWQ8K1_xV>Sr%r>b}~|?^TdJ` z*dA`sHeD6TO;@l2yTgqdyfOuj-Qgw;?n!}TcX+u5uS$Vq7q(f0SEsy|1z=@;#~8Oknd@6hG9 z?P&#CAu8ZXCAq`ED*0z?2TiamQ0J>L$RwSVnBxj!ntxQ5aB ze8-)CMgs1ek@Iy5oj9nwf1+*C}$S15Z<(6esYwL)%w9ZXgM{3Z)oZ7^fuVq^%&10Lk zb@7!fp+NK}0aJD|eP&o!s?4WPzN<_xU2wdlQ#46f;!g$r0xvyvjc&fFjvN?X*Gcky zgf8wdXR8g(@H1ld)BC2Ga}5DdT7vZO8eMkg!W0ShfKO?ld+W>=ddYjrq;ZbZIKNF< zBp5>=nAa#wx^%5>3i1b#)I8SkjR+p3poP-4y8M$DLwxl7xDzKQeJhA_kyc8zg`^6Sf3?y%|cp05@fv%|VblD`Pr2Y)h zPdrm@kII5UVmpg#pEUMH;EvYdpT|Lt2s1$y&+?nc?&e_!vc-% z!&b6|Oy0&6SRXH4-q6=GOft6%eWnliJBK@G%vw*(J0t@}cPAKfcWE9Ra)twooqib4 z7a>)0tq4 z16yC?EJlQTqtOAP-w%OqN}~bQ6~l>vjX+Y_jVt;G5f`S$>xmhM2R`U-qQ4sAGOv+t z>uYUt@~)b3mXOCeJ&q1!GR_MrmY8^h5MElgVg<>>(Se=!k}VNE4iK}5=_cZ=q5L3$ z0|Ya={$_|W-@@i0&H|f=isJ$wjFF?`2QB8!+6vL3T#Yt5$iJ_?}tdpiUM!2OmA>U5VUZ~H@Sjv>MUXFw;PF1twebEczE3k9s zr;PKM|E!X}hmCSClaV_?zZ&quK6>66(dG5Sn_Ws%s#) zaxI(NNTY=7mo~)Ro0f|t=}^ywQLMeL`1F}^cbrYjXkT|v-??$u3}U~4FG^Nr9nEk| zu=Eo1`q7zqA!Mo-iSCtOtaVR#(MEQ>z|KG3*^A{DL2D>F%=C4U%u7z_^`#J$9%Iu} zgou`*8D#op^uCXE(;RV)ngP`fBAA*svPrwSTR+lmI2EbcbMeYkXPbvG$ZW-pM|t`@ z8-poR9^$OzbQ4Dpb-l0HV;DV_0>A*WGZ&xuy&?+dtY%qymZfsCm13(n?d0?&p=_%w zp|<`cRBjLW;i!U49w2-L*dw^Lr0V2Bo>~a{W{8Z0X$bEPESWTU7%2v}3z7?m+~OCn zrSINsD4KkMFoZx_*3pBH8M1Ua>)B3Vf}Rb<)QhO^7Q+5wXb0(T$W*Jm%m& z7Q^_w*x2=yTZQN^1AkGR9=^p;mGUx52R2v3#*tM0*y}HDg&+Dx=%zJEe?zGT#yMVGhvV{q{(>Jk|oc~ zLYf0fvJLd$2TIOqImm}4lbZhM&~TikHO+g#-psRP*agc>O}vg@o$@q-mKQ5#c`@GP z6?AsZgxoYNYCOg0CAnA9mYNAU)b)_THXa9!{nY)C!BI@dnvQF0#=0g0nBxFFTr6K7B(jQ+s*fSg@mK#%WNaMyw z4jJsU`WZv%To{cVf^v4Ue7jR@9QW{ZEAsZ%T^uSi8eV?zD|6w@znkuT#$Z$S(A%Fe z*kk)rcWnwOu4>!A)WKdP0vyreLpv8Uj@@^Z{a z3a?D+kb;+J9B6+=ns^Uv`#D`x^n#Y~@L-2moK$cg&!rr}puU0iqHj1N=3X@l?i`k2 z53wDf`<^veE3Zjn+XhCZ)ezgYNkr&^Q3SeiJ$>z2LqQ3Kff>|xBd25C#<^cp2g|MP zAkBNuV0GNY@ojx95F=gS73U(HHFIvJ&CeMuj$1f^FVeF*TEYI41W2Ne(AaYZTk)-& z0Nn~Qv>2QUSmZXLLEi23k>?DKGwQA2L&eH_`=hgi+ogsPR$MP@DYAE2v_8uFA!=+>i# zeC07Za@0_0f1I-+=r;HD_Vh)?h*edPf+y%3jOu85hQOeQ zAV4%*jUoR%ZF(MQggV+(RAY?)NH2NbV6{K3p@Y3^hE__CsjeaRKht}jH`uEF zqT$)J=p0<-6&Fm^USj*Jh6?kfs!+Y!N9=#6KY-PKBn6L!P2lGu^YILIyUDt-M0nDRCH-3tc0?iit8{7IKhXTE4KR^yt8&CJF{P0fCBrB>r3Id4i} zup!ti2D%30_?Bp?^ld_)yvC4g7SkI?{rq=m=ZhHGcj=`s8p@Ww$GOGH8Joi{T%zI} z%+;^0CiV|BMO(sLPcdT18(Ti&7{31(y42!65tl~1PUaK(AGG24l+&;cLO9wv*tJq{ zdy($>2X(zpaB%EywtJ2ghQNCH$ulUhpqc&a?`5VHxWSM|%EP)IM0*fRECT#X7 z5J%dGZ~-iFHcJY^*CvviNKX-44t@MpgS9+Y;E~}9NohWkZ52Rd6!vl7MrJj~PJcq{ zF$YJr2AaH$fuu#V^Ei}Uf(eG8hgkB35C#;IgVn@V$boDN>2GM&f?W`!TqNas{XodT zjLRHbF^6-jF+{oW-Jp-;mT*ktA}&a(f~j08#;>%DKJl8Nq@A4Qg3mVMrBF0 zvKrUy1-OVNrBkWybwi19n&6r}oz8yUFiV+1m*HV7m(ZDX4};F4kFm#W`qAr#*@~0q z9>cbB4xN7t!|bA~@i4k2M+Lp*7)UGWv&RfhqenoeR#D>{V5z2a*kdkjd&4kOsiAT9 zsHJzkVVGSpPmrdc1iewc6AvSaiQI&GvVdpI#}xwLPLb?%5$6J$_9nDBh0c4^FeCp| z4b3ygy!dMh3Z4$@U8K-UFMHEapw!VD-bBds(Z}C3l;`>-Lu(+2lq+X&6KjC}_$IO2A9%CTi9a>jlXU1C`;)f_GqV{ylrqeI+EPJdT*=X zhFCY5zl;{YV>r3=boAG9hNMdN7xfkDnWAIXv*=~-7;=@f=~eF-ij;HcBk$k_p_9JM z-j>tx@g|J2CLFdJKr@}5`P;pP2?-f6yDOTC}#Q>$aV!^{kd*3sdjjM%v1%33g_YC>V z`^BqeK*1oeJ5V-LdFC6TFvn_?p{9)*dlzC<$Z-I&L$pRKxVA z_YAp#H5yXe8nAobwbE1 z!B%?lD08Ht#TQ)23w}@mqh2D}FQt#ZZzvAL#B0H28pFaMYE%P}mWK8~h#MYE1@TlY z`kjKUCXNlX=mQMKMtTw+p-ri@bq$faP=wna7cc7NqP5AJp?ga>>GoR$IDIQzrv=B7%NHol$4ecmrLn7^6(2JbJ{ z-rF_!;x_3A=+_-Wdgh(bfKw;k@GgOIX50;X1eQdStBd0v4d9HpU6J~fkeYWdz2Rf* z)$gOf`q)sX+)sb}*x<{1FiDRII>rI>9-?P{VsNw{N>VHebZleW3lZS5AC`!f7-QZ) zH_85`gy9NKZ2GZ#dn5%GYUWM?=%e(=Ck9KyuTqdp-5d$0eJmAP!J$~B9)|}^{us6q|6&T43Nu54~%{>-N~4hX+ZK?w|&MiD>AwBOM^ zJB?G7r|6-b#tP;4^rM}|O63nUf0wbu{KrwohkyLUpbMSE^E3yOc^cbI$K`3*F>e^9 zUFy%prn=;2ma5^qMC!i5ltoXenV?U*Wi($iBJwpGkbYtLn%h{u#;(ix1-+qWf+g+t z(G<-cEJb7Y-6=CPL`7K-JDN;JQBNFg1Vc!UqS}WQ^@yb0y-2yFB;`=s!|03er}?!L zij)Uf!e9FxQ)=a?jL8TcL&CoWTPxfq+$bWqkY3H^Jlqz|7W`F$~#1IeEI;=vFyg_ zPS{r71l@(?U&h^I8Oii}2rd3@+|-PFW#SNbS@(g^eLwBA;40Qtrq9cMU@Q~ldLE=_ zT%=ZJK7?X%P5vRUMcaY4- zH8$y2mZ)imc)WqM&%YbR8Pb22v%0ASXNY+zQ_()Lo#L$39 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 H%jy3IhFjjM diff --git a/BIN/EDIT.S.CTRL.txt b/BIN/EDIT.S.CTRL.txt index d3970fef..96ff1c17 100644 --- a/BIN/EDIT.S.CTRL.txt +++ b/BIN/EDIT.S.CTRL.txt @@ -550,6 +550,7 @@ Prompt.Save cmp #3 lda (pData),y beq .11 >SYSCALL SYS.FreeMemA + .11 >LDYA pData >SYSCALL SYS.NewPStrYA diff --git a/BIN/EDIT.S.txt b/BIN/EDIT.S.txt index a89c1292..fc3d5ac6 100644 --- a/BIN/EDIT.S.txt +++ b/BIN/EDIT.S.txt @@ -96,92 +96,39 @@ J.CTRL .DA Ctrl.Invalid .DA Ctrl.Invalid .DA 0 *-------------------------------------- -CS.INIT stz hFile - stz TmpFilename - stz TmpLen - stz TmpLen+1 - - lda #$ff +CS.INIT lda #$ff ldy #bSaved sta (pData),y >SYSCALL SYS.GetArgC cmp #1 - beq .1 + beq .1 No arg, new file.... lda #1 >SYSCALL SYS.GetArgA >SYSCALL SYS.GetFullPathYA - stx TmpFilename - - >SYSCALL SYS.LoadFileYA - bcs .1 - - stx hFile - >STYA TmpLen - -.1 >LDYA TmpLen - iny - bne .2 - inc - -.2 >PUSHYA - >PUSHBI S.MEM.F.INIT0 - >SYSCALL SYS.GetMem - bcs .98 - - >STYA ZPPTR2 txa - ldy #hBuffer - sta (pData),y - - lda hFile - beq .7 - - >SYSCALL SYS.GetMemPtrA - >STYA ZPPTR1 - - >LDYA TmpLen - >STYA TmpCount - - ldy #0 - -.5 jsr DecTmpCount - beq .6 - lda (ZPPTR1),y - sta (ZPPTR2),y - iny - bne .5 - inc ZPPTR1+1 - inc ZPPTR2+1 - bra .5 - -.6 lda hFile - >SYSCALL SYS.FreeMemA - -.7 ldy #FileLen - lda TmpLen - sta (pData),y - iny - lda TmpLen+1 - sta (pData),y - - lda TmpFilename ldy #hFileName sta (pData),y - lda (pPs) + jsr LoadFile + bcc .8 if CS, Failed to load file, keep name, but new file.... + +.1 >PUSHWI 1 buffer size = 0 (+ 1 for ending 0) + >PUSHBI S.MEM.F.INIT0 + >SYSCALL SYS.GetMem + bcs .9 + + txa + ldy #hBuffer FileLen already set to 0 + sta (pData),y + +.8 lda (pPs) ora #S.PS.F.EVENT Now accept events sta (pPs) clc - rts - -.98 lda hFile - beq .99 - >SYSCALL SYS.FreeMemA - sec -.99 rts +.9 rts *-------------------------------------- CS.RUN ldy #bCancel lda (pData),y @@ -391,25 +338,81 @@ CS.QUIT ldy #hBuffer >SYSCALL SYS.CoutA .9 rts *-------------------------------------- -SaveFile >PUSHWI 0 Aux type - >PUSHBI 4 type=TXT - >PUSHBI $C3 access=RW +LoadFile >PUSHWI 0 Aux type + >PUSHBI 4 S.FILEINFO.TYPE.TXT + >PUSHBI SYS.FOPEN.R ldy #hFileName lda (pData),y - >SYSCALL SYS.GetMemPtrA - >PUSHYA - >SYSCALL SYS.MLICreateFile - bcc .1 - cmp #$47 File Exists error? - bne .9 no, sec;rts -.1 ldy #hFileName - lda (pData),y >SYSCALL SYS.GetMemPtrA - >SYSCALL SYS.MLIOpenYA + + >PUSHYA + >SYSCALL SYS.LoadFile bcs .9 - sta hFile - stx TmpByte + + stx hMem + >STYA TmpLen + iny + bne .2 + inc +1 for ending zero + +.2 >PUSHYA + >PUSHBI S.MEM.F.INIT0 + >SYSCALL SYS.GetMem + bcs .98 + + >STYA ZPPTR2 + txa + ldy #hBuffer + sta (pData),y + + lda hMem + + >SYSCALL SYS.GetMemPtrA + >STYA ZPPTR1 + + >LDYA TmpLen + >STYA TmpCount + + ldy #0 + +.5 jsr DecTmpCount + beq .6 + lda (ZPPTR1),y + sta (ZPPTR2),y + iny + bne .5 + inc ZPPTR1+1 + inc ZPPTR2+1 + bra .5 + +.6 lda hMem + >SYSCALL SYS.FreeMemA + +.7 ldy #FileLen + lda TmpLen + sta (pData),y + iny + lda TmpLen+1 + sta (pData),y + +.98 pha + lda hMem + beq .9 + >SYSCALL SYS.FreeMemA + pla + sec +.9 rts +*-------------------------------------- +SaveFile >PUSHWI 0 Aux type + >PUSHBI 4 S.FILEINFO.TYPE.TXT + >PUSHBI SYS.FOPEN.X+SYS.FOPEN.W + ldy #hFileName + lda (pData),y + + >SYSCALL SYS.GetMemPtrA + + >PUSHYA ldy #FileLen+1 >PUSHB (pData),y @@ -421,21 +424,7 @@ SaveFile >PUSHWI 0 Aux type >SYSCALL SYS.GetMemPtrA >PUSHYA - >PUSHB hFile - >SYSCALL SYS.MLIWrite - bcs .99 - - jsr .99 - clc - rts - -.99 pha - lda hFile - >SYSCALL SYS.MLICloseA - lda TmpByte - >SYSCALL SYS.FreeMemA - pla -.9 sec + >SYSCALL SYS.SaveFile rts *-------------------------------------- DecTmpCount lda TmpCount @@ -492,7 +481,7 @@ MSG.HELP >PSTRING "All commands: (* = Not yet implemented)" .HS 00 EscChars >PSTRING "DBAC" EscAscii .HS 04080A0B15 -hFile .BS 1 +hMem .BS 1 TmpFilename .BS 1 TmpByte .BS 1 TmpLen .BS 2 diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index 415a67f6..cb09d41e 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -37,20 +37,6 @@ ZPDRV .EQ $80 ZPBIN .EQ $90 ZPLIB .EQ $A0 32 bytes for TCPIP *-------------------------------------- -R.VCPU16 .EQ $F0 -R.AX .EQ R.VCPU16 -R.AL .EQ R.VCPU16 -R.AH .EQ R.VCPU16+$1 -R.BX .EQ R.VCPU16+$2 -R.BL .EQ R.VCPU16+$2 -R.BH .EQ R.VCPU16+$3 -R.CX .EQ R.VCPU16+$4 -R.CL .EQ R.VCPU16+$4 -R.CH .EQ R.VCPU16+$5 -R.DX .EQ R.VCPU16+$6 -R.DL .EQ R.VCPU16+$6 -R.DH .EQ R.VCPU16+$7 -*-------------------------------------- * Memory Map *-------------------------------------- A2osX.SaveSM .EQ $100 Aux @@ -234,6 +220,8 @@ SYS.GetDevByNameYA .EQ $84 SYS.GetDevInfoA .EQ $86 SYS.GetKeyboardEvent .EQ $88 +SYS.MKNOD .EQ $8C +SYS.MKFIFO .EQ $8E *-------------------------------------- SYS.ExecProcessNewEnvYA .EQ $90 SYS.ExecProcessYA .EQ $92 @@ -247,11 +235,9 @@ SYS.Sleep .EQ $9C SYS.CheckPrefixYA .EQ $A0 SYS.FileSearch .EQ $A2 SYS.GetFullPathYA .EQ $A4 -SYS.LoadFileYA .EQ $A6 +SYS.LoadFile .EQ $A6 -SYS.ListDirInitYA .EQ $AA -SYS.ListDirNextA .EQ $AC -SYS.ListDirCloseA .EQ $AE +SYS.SaveFile .EQ $A8 *-------------------------------------- SYS.AddNetCfg .EQ $B0 SYS.SetNetCfg .EQ $B2 @@ -281,7 +267,7 @@ SYS.FOPEN.A .EQ $04 Append SYS.FOPEN.T .EQ $08 Open/Append in Text mode SYS.FOPEN.X .EQ $80 Create if not exists -SYS.FCLOSE .EQ $E2 +SYS.FCLOSEA .EQ $E2 SYS.FREAD .EQ $E4 SYS.FWRITE .EQ $E6 @@ -295,13 +281,13 @@ SYS.FEOF .EQ $EE SYS.REMOVE .EQ $F0 SYS.RENAME .EQ $F2 -SYS.OPENDIRYA .EQ $F4 -SYS.READDIRA .EQ $F6 +SYS.STAT .EQ $F4 +SYS.FSTAT .EQ $F6 -SYS.CLOSEDIRA .EQ $F8 -SYS.MKDIRYA .EQ $FA -SYS.MKNOD .EQ $FC -SYS.MKFIFO .EQ $FE +SYS.OPENDIRYA .EQ $F8 +SYS.READDIRA .EQ $FA +SYS.CLOSEDIRA .EQ $FC +SYS.MKDIRYA .EQ $FE *-------------------------------------- * ProDOS ERROR CODES : $00->$5F * Lib ERROR CODES : $80->$BF diff --git a/INC/PRODOS.I.txt b/INC/PRODOS.I.txt index 75eac668..d68193a0 100644 --- a/INC/PRODOS.I.txt +++ b/INC/PRODOS.I.txt @@ -47,11 +47,13 @@ S.FILEINFO.ACCESS.RN .EQ $40 S.FILEINFO.ACCESS.D .EQ $80 S.FILEINFO.ACCESS.FULL .EQ $C3 S.FILEINFO.TYPE .EQ $04 +S.FILEINFO.TYPE.TXT .EQ $04 S.FILEINFO.TYPE.DIR .EQ $0F S.FILEINFO.TYPE.SYS .EQ $FF S.FILEINFO.AUXTYPE .EQ $05 S.FILEINFO.TOTALBLOCKS .EQ $05 S.FILEINFO.STORETYPE .EQ $07 +S.FILEINFO.STORETYPE.STD .EQ $01 S.FILEINFO.STORETYPE.DIR .EQ $0D S.FILEINFO.BLOCKSUSED .EQ $08 S.FILEINFO.MODDATE .EQ $0A diff --git a/SYS/KERNEL.S.FILE.txt b/SYS/KERNEL.S.FILE.txt index 7f32d8b3..9ca6927e 100644 --- a/SYS/KERNEL.S.FILE.txt +++ b/SYS/KERNEL.S.FILE.txt @@ -13,8 +13,8 @@ AUTO 6 * In : * PULLW = PATH (PSTR) * PULLB = MODE -* SYS.FOPEN.R .EQ $01 //Ignored (No ProDOS equivalent) -* SYS.FOPEN.W .EQ $02 //Ignored (No ProDOS equivalent) +* SYS.FOPEN.R .EQ $01 if R and !exists -> ERROR +* SYS.FOPEN.W .EQ $02 if W and !exists -> CREATE * SYS.FOPEN.A .EQ $04 Append * SYS.FOPEN.T .EQ $08 Open/Append in Text mode * SYS.FOPEN.X .EQ $80 Create if not exists @@ -31,18 +31,19 @@ S.FOPEN jsr S.PFTCHECKPATHSTK >PULLW S.FOPEN.AUXTYPE >MLICALL MLIGETFILEINFO + >DEBUG bcc .10 Already Exists bit S.FOPEN.MODE Create if not exists ? bpl .9 No, return MLI error - lda #$C3 Yes, Create... + lda #S.FILEINFO.ACCESS.FULL Yes, Create... sta MLICALL.PARAMS+3 Access lda S.FOPEN.TYPE sta MLICALL.PARAMS+4 File type >LDYA S.FOPEN.AUXTYPE >STYA MLICALL.PARAMS+5 Aux type - lda #$01 Storage=Standard Files + lda #S.FILEINFO.STORETYPE.STD sta MLICALL.PARAMS+7 >MLICALL MLICREATE bcc .10 @@ -293,6 +294,16 @@ S.RENAME jsr S.PFTCHECKPATHYA >MLICALL MLIRENAME rts *-------------------------------------- +S.STAT jsr S.PFTCHECKPATHYA + + + rts +*-------------------------------------- +S.FSTAT jsr S.PFTCHECKFILEA + + + rts +*-------------------------------------- FIL.SetupPrt1A jsr S.GetMemPtrA >STYA ZPQuickPtr1 ldy #S.FILE.PRODOS.REF diff --git a/SYS/KERNEL.S.FIO.txt b/SYS/KERNEL.S.FIO.txt index 10f261da..9fa5d112 100644 --- a/SYS/KERNEL.S.FIO.txt +++ b/SYS/KERNEL.S.FIO.txt @@ -133,6 +133,42 @@ S.GetFullPathYA >STYA ZPQuickPtr3 Ptr1 & 2 used by StrCpy .9 sec rts *-------------------------------------- +* S.LoadFile +* in : +* PULLW = PATH (Handled by.... +* PULLB = MODE ... +* PULLB = TYPE ... +* PULLW = AUXTYPE ...FOPEN) +* out : +* Y,A = File Length +* X = hMem of Loaded File +*-------------------------------------- +S.LoadFile jsr S.FOPEN + bcs .9 + + sta S.LoadFile.hFile + + jsr S.FSTATA + >PUSHW S.LoadFile.Mem + + >PUSHW S.LoadFile.Len + + >PUSHB S.LoadFile.hFile + jsr S.FREAD + bcs .99 + + jsr .99 + clc + rts + +.99 pha + lda S.LoadFile.hFile + jsr S.FCLOSEA + pla + sec + +.9 rts +*-------------------------------------- * S.LoadFileYA * in : * Y,A = FilePath (PSTRING) @@ -192,14 +228,47 @@ S.LoadFileYA jsr S.MLIOpenYA .99 sec rts *-------------------------------------- -S.LoadFile.hRef .BS 1 -S.LoadFile.hBuf .BS 1 +* PULLW = SrcPtr +* PULLW = SrcLen +* PULLW = PATH (Handled by.... +* PULLB = MODE ... +* PULLB = TYPE ... +* PULLW = AUXTYPE ...FOPEN) +*-------------------------------------- +S.SaveFile >PULLW S.LoadFile.Mem + >PULLW S.LoadFile.Len + + jsr S.FOPEN + bcs .9 + + sta S.LoadFile.hFile + + >PUSHW S.LoadFile.Mem + + >PUSHW S.LoadFile.Len + + >PUSHB S.LoadFile.hFile + jsr S.FWRITE + bcs .99 + + jsr .99 + clc + rts + +.99 pha + lda S.LoadFile.hFile + jsr S.FCLOSEA + pla + sec + +.9 rts +*-------------------------------------- +S.LoadFile.Filename .BS 2 +S.LoadFile.hFile .BS 1 S.LoadFile.hMem .BS 1 S.LoadFile.Mem .BS 2 S.LoadFile.Len .BS 2 *-------------------------------------- -TmpFileName .BS 16 -*-------------------------------------- MAN SAVE SYS/KERNEL.S.FIO LOAD SYS/KERNEL.S diff --git a/SYS/KERNEL.S.JMP.txt b/SYS/KERNEL.S.JMP.txt index 43a00eac..caa18b33 100644 --- a/SYS/KERNEL.S.JMP.txt +++ b/SYS/KERNEL.S.JMP.txt @@ -101,7 +101,7 @@ KERNEL.SYSCALL .DA S.GetMem $00 .DA S.FileSearch .DA S.GetFullPathYA .DA S.LoadFileYA - .DA 0 + .DA S.SaveFile .DA 0 .DA 0 .DA 0 @@ -144,12 +144,12 @@ KERNEL.SYSCALL .DA S.GetMem $00 *-------------------------------------- .DA S.REMOVEYA $F0 .DA S.RENAME + .DA S.STAT + .DA S.FSTAT .DA S.OPENDIRYA .DA S.READDIRA .DA S.CLOSEDIRA .DA S.MKDIRYA - .DA 0 - .DA 0 *-------------------------------------- KERNEL.SYSCALL.FLAGS .DA 0 $00 diff --git a/SYS/KERNEL.S.txt b/SYS/KERNEL.S.txt index 3b98f332..1bbf340c 100644 --- a/SYS/KERNEL.S.txt +++ b/SYS/KERNEL.S.txt @@ -69,6 +69,8 @@ A2osX.D001 .EQ * .INB SYS/KERNEL.S.ARG .INB SYS/KERNEL.S.ENV .INB SYS/KERNEL.S.EVT + .INB SYS/KERNEL.S.TSK + .INB SYS/KERNEL.S.PS .EP A2osX.D001.END .EQ * *-------------------------------------- @@ -91,8 +93,6 @@ A2osX.E000 .EQ * .INB SYS/KERNEL.S.BIN .INB SYS/KERNEL.S.DRV .INB SYS/KERNEL.S.LIB - .INB SYS/KERNEL.S.TSK - .INB SYS/KERNEL.S.PS *-------------------------------------- .INB SYS/KERNEL.S.PFT .INB SYS/KERNEL.S.FILE