From 35a8b8b2a0b2b9c529f9bf72de9edc694e1bfd93 Mon Sep 17 00:00:00 2001 From: Bobbi Webber-Manners Date: Sat, 21 Aug 2021 20:13:06 -0400 Subject: [PATCH] Implemented OSFILE A=&06: Delete file, *DELETE cmd --- applecorn.po | Bin 819200 -> 819200 bytes auxmem.hostfs.s | 12 +++++++----- auxmem.oscli.s | 36 +++++++++++++++++++++++++++++++----- mainmem.s | 20 +++++++++++++------- 4 files changed, 51 insertions(+), 17 deletions(-) diff --git a/applecorn.po b/applecorn.po index 2e305337311b45b467d2556841b3ab6f73c7179c..f6ee554df38d5620ee35c1e8ad2dd53e97d70a86 100644 GIT binary patch delta 3929 zcmai13s4kC8lIVE7gj(XqCpa*QIMTc@R67!IbY$S>$!>t#=<0*Z0=H)mD5;fDr%W1 zV^wx@NgN8~wDXXw5fvSE$bt%pQI^0eOH`Ie09h7yFVUDNxClnYczfNmXjYTdO;2r4 z|NZ^n|MlPh^wjeFOrD=@bDWOqEH>#Z~ zIt*=#1aBj8E`UeFnP|FVbmBEo*I_N1d>1}{uDPy3JPGSgojC*L(~t}WvHrYW+`G?Q zDTrTLTf~|M>p5$?RY9362}&^(<=#D`(8LWtF+-s_efqT6b*AEco$bOAVmMuhE?q>oIjYpWLz_@1j0baYchXrsITyX%+X zA;pNsub^iE{D>w5(s9VRl8zfof|vVLG`Eoz)PHr@j4rI8xgbT*K63-oEvFOE{1@rT zbIp}FEj}Fl?(+4^Lzm&VH~RW;5T8=tlpwaYw+S`Y)>cLSS5~WCF`*w<($30P=;X|0 zLpL7yyWy1|u3r|gDiU2Jd9z+~wrqNr~ z^gAeG4_zLj#C%|0TTRDSEia*;NjBN(N;~s}JxO8<#+6W~nxQ8M_T9hA-{J#d{(b1Y zXONp%!Oco#*bJ-CToKHO#Fo1(G_%rH<7|mD&XKmFZ6Y`uc!oXoX}oY2W$ghLdT$ZU zcy{dtVF+kc1H1NtW3m6q?*k>S{C==0b!x6xA5|Z;=D(oqV++1ZhEU5sFg}vv$|zum z^7LBaJ`1T@>(A)tec+369d04OV)1%FBi|=dC#W1jW%;xN)$IpydGOw(5t3UZK!;xd zX{yl6N}O`qWaYwIp_`R=)Cvw(E~*uJSXdH-QSf#`elwb13bd0hu-ltiOnZ)So+oh| zzh=#0vYjn!PH=fWfyIO9<5G|`e=6t8qCAzu?s!HeQN@D^`l zsl@wGHwFto5Yncr=w>OH7J@7s?5}iE>Y(eYEUMv}@$vM0yvlU$TX6%*6M-!`VF!if5QV-jB^(Kr~#z{og{(D`Cxg zl9q+3@@B3N`weL2cey_7dQ*#OjI)h%F^_SMao!c&$hvT4QKYgMTv=s2a9RxSyTxKX{1u7jpL&>Eoa(S&22=qfF@EVrHHSbfm&iTLAl})t zfU{>{^|&0e@q10yJ&Q27SzHeEVK8Rmd{WX~ekJ`dz{oZxqh}9;$@A4*0l)|0h;a(> zy6ESHV_8~Q1MV8FN_Xy#(lxo1?rRU)eHdiWQ<3{HXwq!QC*}-%Vs@ZoN5InPHSS`H zX$rp$SM|chEmDJMhp)S$^|w%r4D2!YFC}=VkGGAnM+@N=nX-i6Tg2NUJb~~&3Md1| znOUx?lVxBTjq5+e4C3bDS4d^aU0v1(OvPpW!1V8u5TZ7LsIAGT=`xCruExjiCVZA| z_ksPecJ!th%uIOQm6fwFZCP3h)%}w0w~@1v#SErL{)$0O?1?C;9K_F^<>Iq!Ui)Ig zu-k{^=a10kCo4j6*-Tfa@!^1V`$<`ZOywXUK7~6@3)8scjDU}fM-jnfVUy9<<>1N4 z-*CT!-RVn2&R8_F0>owLd(`<6~=4a%*+Q^{yc1xTMYk}#bo&gS*Zwy8ZUrLAHo z-h$OSxY;Fr;CtRYZ1B@|2n|#KnAEHYcs#RyxGn;igx2AW3De2%bs7ugEuF?f{PF5Q znMZ*<`K-cj$jVuelb%8uNG9@smD2TO4GC!WF%YVz2_uWLj)AAAce`1a&1Dagc8XnC zZ>mJ;g5aJmEiTpXy{ltvq0#n!KQU`j#W666?nWKQz})Aqbr;Zv61u#=7U~Hjaf^L% z8?W-$ntofyMqg~Q8nos(NXSbw?vT2TMev<&vkF?f`CMtCzvW6dzd&02nB^I1iND3& z#ZQ#}>~Goa;KQXA{+90@{08Y|e@j{q|AzEhoWCijhtHN)`CE3Orz%0L`tM>lP7az^ z3C63}`<`E|1o7&OOnv6^OtiHU%#1ps*d>j~W2jW`Lp4-_#F!znX6@r!EUEMv2vmW; z=IwHjuk)P}N~FpQV6wv;T)fNCNNk?+0(@2m*`P;_Q_Q3qPVI1v!dGmOL-^cr>R-OW zPKWTBBiew!q`nJo>Vem~&GX;{$NmDLpV?n1++d)_VV*3778W$(IXnXwIn1&0XAZ%W z$H<>MgaM|cUt}aNbb1YvR~TaW8*rA(Fv6AfE3P?@aU~P3I||iZ=9duTi1}y5eBT#= zA`u9+6rfXZd5+S8eTA#nOc-%{L^Fw^2va|F!ym!oeujMN?ih|bYn>;Zb-2~y_M`Kf z^INCK8R;5(soi zJq9QtbOOA}1iI1f69C4{5qn*Mo&afq*ozBd{|#~wWQo0cTt_o%z*OdyUi4ZGc#WBf zkCz$%LzqjO|M|&qszC>tOXzwHh^M!p(I>%pT0+{BV5#X#Q2J$n32itD67hkJicf;S zMWn9seiUsGsgI_QcIDXvv4n^;)k`6pU59jk!WSC`KR_GPRD2$CiFEmWj~e!S8|^+$PaqCmu z`uJA;T(^FSTmKigKD$@H5utQdvU<=p(T!Y3X@+L-zstk4NvAUD)Fxe^Nf%_&X-v9N LCS7o;E+qATxOq@8 delta 3588 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 SAVE + BEQ :SAVE ; A=00 -> SAVE CMP #$FF - BEQ :S2 ; A=FF -> LOAD - + BEQ :LOAD ; A=FF -> LOAD + CMP #$06 + BEQ :DELETE ; A=06 -> DELET LDA #OSFILEM JSR PRSTR @@ -244,8 +245,9 @@ FILEHND PHX PLY PLX RTS -:S1 >>> XF2MAIN,SAVEFILE -:S2 >>> XF2MAIN,LOADFILE +:SAVE >>> XF2MAIN,SAVEFILE +:LOAD >>> XF2MAIN,LOADFILE +:DELETE >>> XF2MAIN,DELFILE OSFILERET >>> ENTAUX PHA diff --git a/auxmem.oscli.s b/auxmem.oscli.s index fbe36fc..d8d3fcb 100644 --- a/auxmem.oscli.s +++ b/auxmem.oscli.s @@ -64,7 +64,7 @@ CLIHND PHX JSR STRCMP BCS :S5 JSR STARLOAD - BRA :EXIT + BRA :IEXIT :S5 LDA #<:SAVE STA ZP2 LDA #>:SAVE @@ -81,7 +81,15 @@ CLIHND PHX BCS :S7 JSR STARRUN BRA :EXIT -:S7 LDA #<:HELP +:S7 LDA #<:DELETE + STA ZP2 + LDA #>:DELETE + STA ZP2+1 + JSR STRCMP + BCS :S8 + JSR STARDEL + BRA :EXIT +:S8 LDA #<:HELP STA ZP2 LDA #>:HELP STA ZP2+1 @@ -91,9 +99,6 @@ CLIHND PHX BRA :EXIT :ASKROM LDA $8006 ; Check for service entry BPL :UNSUPP ; No service entry -* LDA $8003 ; Check for service entry -* CMP #$4C ; Not a JMP? -* BNE :UNSUPP ; Only BASIC has no srvc entry LDA ZP1 ; String in (OSLPTR),Y STA OSLPTR LDA ZP1+1 @@ -142,6 +147,8 @@ CLIHND PHX DB $00 :RUN ASC 'RUN' DB $00 +:DELETE ASC 'DELETE' + DB $00 :HELP ASC 'HELP' DB $00 :OSCLIM ASC 'OSCLI(' @@ -399,6 +406,25 @@ JUMPFSCV PHA PLA CALLFSCV JMP (FSCV) ; Hand on to filing system +* Handle *DELETE command +* On entry, ZP1 points to command line +STARDEL JSR EATSPC ; Eat leading space + JSR ADDZP1Y ; Advance ZP1 + LDA ZP1 + STA OSFILECB+0 + LDA ZP1+1 + STA OSFILECB+1 + JSR EATWORD + LDA #$0D + STA (ZP1),Y ; Terminate filename + LDX #OSFILECB + LDA #$06 ; OSFILE delete command + JSR OSFILE + RTS +:ERR JSR BEEP + RTS + * Clear OSFILE control block to zeros CLRCB LDA #$00 LDX #$00 diff --git a/mainmem.s b/mainmem.s index d47f4d4..4a63ece 100644 --- a/mainmem.s +++ b/mainmem.s @@ -139,21 +139,27 @@ COPYAUXBLK CLI RTS -* ProDOS file handling for MOS OSFIND OPEN call -* Options in A: $40 'r', $80 'w', $C0 'rw' -OFILE >>> ENTMAIN - PHA ; Preserve arg for later - CMP #$80 ; Write mode - BNE :S0 +* ProDOS file handling to delete a file +DELFILE >>> ENTMAIN + JSR DESTROY + >>> XF2AUX,OSFILERET - LDA #MOSFILE STA DESTPL+2 JSR MLI DB DESTCMD DW DESTPL + RTS +* ProDOS file handling for MOS OSFIND OPEN call +* Options in A: $40 'r', $80 'w', $C0 'rw' +OFILE >>> ENTMAIN + PHA ; Preserve arg for later + CMP #$80 ; Write mode + BNE :S0 + JSR DESTROY LDA #