From cb4dacb638528644caa833e8a7d6bbe49fb1bdc1 Mon Sep 17 00:00:00 2001 From: Bobbi Webber-Manners Date: Tue, 12 Oct 2021 09:50:22 -0400 Subject: [PATCH] Merge PR #117 'OSFIND checks return value from calling maincode' --- applecorn.po | Bin 819200 -> 819200 bytes auxmem.hostfs.s | 134 ++++++++++++++++++++++++------------------------ 2 files changed, 66 insertions(+), 68 deletions(-) diff --git a/applecorn.po b/applecorn.po index f8cfa698725157dc7c77f08c6ca976f6298b346d..2de5d9693744780683b30399171fb25b75677f3c 100644 GIT binary patch delta 2446 zcmZt|4NwzTdUq4ZBLZRzf}-U)S_BcrUm^+xlSsf75F&pv8a%9l($=%B<5^FlM<}(z zpyS=_I*COgUljw}DdgI)QhA1R#e%NfR2Nk{M-h$K4buQogzW06K zzVGFG@B7&`nU zn3v2=ZXcCd#CAcpPqnx*M8{qQjX%l0{G=Zb%T<)S0yxM-l(Z78#FKs{*ghrALEK8P zlwA3zRp2yvvZremP*9{Fb!UQANd=aWap-^wWKT`=(0~f4F`u*s zh-6|i`V5N?r}3Ln;u9hSq_#Sf7*)){}+EmJJ{}oDGr|Qo-(` ziZ)rWyRf279_-#&(H0hL1O45Hq)};nd4@j8;uP758gj5dUzvLJnn~Y{{y8zRwj^HsHp(FPF)hv+mDrVd#)CM43c66#26K^C}Jb{GgTp= zl6plvS<&pZFaHxw*s`_=0P@hM+aQnX>(QiGbi-zd0 zhIH%)j00X0j0U=S5XN~d2e4Q)B8pJyX&0!Y0SYTGJh9p5S)aASaUQE%ZZ_XyLv2qf zi@;FuVF<1rWC;UHsv4hCw9`p{jl>EZy-2jI5@dzl6^z*R-IX9VK0KJ}v^zP#CNWO@ zmnxRf0hs1Q0WXf@8-G!}9u{ss!3NPXpRy?Vu9HoJLWqfnx14am$q*M#q>6Tqo5pIe z8eVbIBbcJiRUm!lkkERa8#l0!#!n)L?Sz;DGlvoUTu~ieGmM@4S&3d$ff~h29ok+E z@@G#Uw#&qY#DlWmz4LzUzAQL-r*K`}p1tUDr{Xo_s0PWiYNSn-#Le}!b+E2}4`I0Q z#Gb_|;B+*1D~KoeqE%agddII<(F$O|Gc3h1-*_C*QEx7yu&!mMm!%y1x}90qim%E`XVctO4aO zPct2Ds{v(T>S%EuG$AOHarruHz>0+9!<__)Yrv>0#6S4aa9adv#1m=^D3=y|JFNS@ zcUT8$>T>=kj3bxhvW|-@VG6@2+y!x%Xn) z>bAJM-M#Lf3`WsK%F`VFQS@<8xu{9Omu@L)R`A-&j}?4D(T3t9Sfee<+oV0J;OXK# zO^EfB<&|qgUwAZHTC3N#BziY(#Hrny=v7Zm8!An!`Qj4&Cu{l5TMG217LQI#mxK~M z>+{MA)TRvYMr{?QTD7j&w9FgYR9t4t_vnht^c%`dRGtT!l0j_K#St4P;)pE~XTXai zG0!oX8ZrMgoN{M~lS&(>oLutIo@f0R{A@%@n{ob>TZf;TeV9z>x_r7LI;AMXMPM|H zxjAZVqQogBE{MJ3tfzx# z#I68*8rt0@xeHJ5Ru+4E0=-rX(o#M$#thOZ>poO<1w4mSCg85V`j~qWJ)6?TT@Cj$hVMegC-QlK;C^!;gBN!8|S0g@B&&V+}Hn(Q7%v65|~6TB9D z{itCFew~c*mKT`s*a6~W$9ZvvU1cgoJYJ2c||1Ds{FM#Qa=Zsh5Uyu{-% zB+w3ljtpRab*)H$7oh)so4yjDmFfVk56}nwv=x0&57NUj#Vz7(^hG@=ZD{~44G}F3 N%9e&{XBr}B{ufh&g604K delta 2439 zcmZuy4Ny~87Jly~n41U`D@EFAm#d@lr-F(af1tq-4D$F9q5`_z=!i!8vu<~1wXPkW zUBX%gio162D&mH$vOdQMc4ix`txLCcmZ(!-b*I}c5F(K9Lc+@x8Trqi5z z&OPV6b8o(P?>Xmj+!Bsk(%ztqIlG$5PgO7!*H7tW<+rDlzdNO*2{VKhgk?K|@HE0I z=P4zyE_x-QVOU|u4U%G?c0pN~jr{_=@lNP$&>+pHf6nx zgba{IFaF~)aGGv%o>>M|4DCmb6<`_tS9yv@<14@hdJihlf<^T6=ztbvPEE5>mlo)W zp0E;NI^G$xidbYetp+BV{wLzs065Jdqv}NmwICMtuK}xxKOqyWrPra(OaRe)nIIu? z96Jg(*H2)_`pxxEup@tS{Zm{IIvfY(QD%Ae4p-zAE%XUgl|}H3qEEAcj?Q#G$pRmO zS>w1~+0hZkicW6WMqQ?k)<<+4AHRq8cr@|o^L4<&jAN8)1m8q8TG#M8YbHN#&Ej<^ zIuERmuE5O{b3Nt(JQ9R&{tGSa)5OzDQFR`e$6S)on|+#BoL}UDbegeC$YxQ+B6U7E z!4ylVc(-a6UF`fUAG}A?7N@QNm>FWX6oDuutwwF7;I-%WcTfWTr~Qx3{2p5udkH0& zz~#8vJ+812y^ml%Nht`_GIqF|jYg6Q49~1|*EZJebk`jHsPUYQzSwvcs*$u2ETtcy zIh%miJQHi+BzKOX)KpSb&IR21qT=!n!(DXMuSqnI++{6&Y<@r6 z)^FtBwz=UY$zo;?_QGht{T*Vi8^jnY{0$OQ7h;I>;z*}!cKf445R1fJ`&G>?K3qRa z&dbKYo-ow*@|2mUwQr0vY>$U+zl+{Ip?Z~351^|jR4dbON*02igj}HM6J@QIm8YB?qLUIiQG-91##Wdq3gl}GY?tvNIl@9a1zWIK=7ohB6m$}f?{pvZE%D{}Hu<*seo3U& z*W_#UedKed+f=vcYDz5GSXe`ehO+l5F|RPU=rHjZ3bP9gb(F{!W#@$L{?hDChOo__ zV_*#?Lv8F(K|V?8L$O2psVTRNOB0KVO-C}s4IA@JT(#e5V2i`C{UXTY|>m~kSeM$EV77GFA^ zbao1w$&embcKd(e?*~bul00wm8Oc*?fQZM&GXdjaqXsKT@>|SfK7knLf4}W+rZ2hn#A@cr1|kwGtD$JOtXT4O(F^>f;r3_5xMVc7N$k};fO#| zYmgvxOykm{;9!_n+c;8?M6*%6n(Y(ht{^Do_dwN2;Ke!QFz@q_)ZHQB;na!BN9pE) zT#8bdy(ytjlEA!pviT!Xh??vc7F@ z3;d9}zTPi=@B6j1SE`h*F&a`Lfz0NXx=ns0&mjrC2VRzk_#$R_vlJ zjiI@oVg=L(?cpTL0$l*TlLGY2ZvyCQ3P@Bv3JB@Y89>1lu$*}mK)qv{EiY}i1wAUP zB)X8S%E>IlVEghb07Rk>+KRUh(RL~fW?jp-ET4@1u zX&rja0zRzXV8e2*EXE{V$Y2X`)V15UZ{7aHMrGnGoKEP{VDHeELwkdKFtJD3eWhz( z*Y2)|-(7WQ;vXZDZ)_$e{gAB`*)~zu$>^5Ye@kpci0I2JF#ER<`{mc{l@P006JiTO r?A{>DqXWCa!iaQSh_9myyFtkxVi;9z6{xLJ*H&q2tERVBMaKOX6117V diff --git a/auxmem.hostfs.s b/auxmem.hostfs.s index 6c4c725..b165d3f 100644 --- a/auxmem.hostfs.s +++ b/auxmem.hostfs.s @@ -8,17 +8,32 @@ * 30-Aug-2021 FSC commands moved to here * Command line set by *RUN, and read by OSARGS * 20-Sep-2021 *FREE uses new PRDECIMAL routine +* 12-Oct-2021 OSFIND checks return value from calling maincode. +* $B0-$BF Temporary filing system workspace FSXREG EQU $B0 FSYREG EQU $B1 FSAREG EQU $B2 FSCTRL EQU FSXREG FSPTR1 EQU $B4 FSPTR2 EQU $B6 -FSNUM EQU $C8 ; *TEMP* +* $C0-$CF Persistant filing system workspace +FSNUM EQU $C8 ; *TEMP* FSCMDLINE EQU $CE +; B0-B3 addr +; B4-B7 sect +; B8-BB +; BC-BF +; C0-C3 num +; C4-C5 cblk +; C6-C7 +; C8-CB +; CC-CD +; CE-CF cmd + + * OSFIND - open/close a file for byte access FINDHND PHX @@ -36,6 +51,7 @@ FINDHND PHX >>> XF2MAIN,CFILE OSFINDRET >>> ENTAUX + JSR CHKERROR ; Check if error returned PLY ; Value of A on entry CPY #$00 ; Was it close? BNE :S1 @@ -98,7 +114,7 @@ OSBGETRET * A=01 Read command line address * X=>4 byte ZP control block * Y=file handle -* On exit, A=0 - implemented (except ARGS 0,0) +* On exit, A=0 - implemented (except ARGS 0,0) * A - preserved=unimplemented * X,Y - preserved * control block updated for 'read' calls @@ -627,7 +643,7 @@ DRIVE LDA (OSLPTR),Y ; First char BEQ :HASPARM :ERR BRK DB $DC - ASC 'Syntax: DRIVE (eg: DRIVE :61)' + ASC 'Syntax: DRIVE (eg: DRIVE :61)' BRK :HASPARM >>> XF2MAIN,SETPFX @@ -651,7 +667,7 @@ FREE LDA (OSLPTR),Y ; First char BEQ :HASPARM :ERR BRK DB $DC - ASC 'Syntax: FREE (eg: FREE :61)' + ASC 'Syntax: FREE (eg: FREE :61)' BRK :HASPARM >>> XF2MAIN,DRVINFO @@ -671,19 +687,19 @@ FREERET LDA AUXBLK+3 ; MSB of total blks SBC AUXBLK+1 ; MSB of blocks used TAY - LDA #$00 ; *TO DO* b16-b23 of free + LDA #$00 ; *TO DO* b16-b23 of free * NEW - JSR :FREEDEC ; Print 'AAYYXX blocks aaayyyxxx bytes ' + JSR :FREEDEC ; Print 'AAYYXX blocks aaayyyxxx bytes ' LDX #<:FREE LDY #>:FREE - JSR OUTSTR ; Print 'free' - LDX AUXBLK+0 ; Blocks used + JSR OUTSTR ; Print 'free' + LDX AUXBLK+0 ; Blocks used LDY AUXBLK+1 - LDA #$00 ; *TO DO* b16-b23 of used - JSR :FREEDEC ; Print 'AAYYXX blocks aaayyyxxx bytes ' + LDA #$00 ; *TO DO* b16-b23 of used + JSR :FREEDEC ; Print 'AAYYXX blocks aaayyyxxx bytes ' LDX #<:USED LDY #>:USED - JMP OUTSTR ; Print 'used' + JMP OUTSTR ; Print 'used' * OLD * JSR PRDECXY ; Print in decimal @@ -706,20 +722,20 @@ FREERET STA FSNUM+3 * What's the maximum number of blocks? * JSR PRHEX ; Blocks b16-b23 in hex - JSR PR2HEX ; Blocks b0-b15 in hex + JSR PR2HEX ; Blocks b0-b15 in hex LDX #<:BLOCKS LDY #>:BLOCKS - JSR OUTSTR ; ' blocks ' - STZ FSNUM+0 ; FSNUM=blocks*512 + JSR OUTSTR ; ' blocks ' + STZ FSNUM+0 ; FSNUM=blocks*512 ASL FSNUM+1 ROL FSNUM+2 ROL FSNUM+3 - LDX #FSNUM ; X=>number to print - LDY #8 ; Y=pad up to 8 digits - JSR PRINTDEC ; Print it in decimal + LDX #FSNUM ; X=>number to print + LDY #8 ; Y=pad up to 8 digits + JSR PRINTDEC ; Print it in decimal LDX #<:BYTES LDY #>:BYTES - JMP OUTSTR ; ' bytes ' + JMP OUTSTR ; ' bytes ' :BLOCKS ASC ' blocks ' DB 0 :BYTES ASC ' bytes ' @@ -915,85 +931,67 @@ MKERROR4 * AcornOS ProDOS ERROR40 DW $CC00 - ASC 'Bad filename' ; $40 - Invalid pathname syntax + ASC 'Bad filename' ; $40 - Invalid pathname syntax ERROR41 DW $C400 - ASC 'Directory exists' ; $41 - Duplicate filename (split from $47) + ASC 'Directory exists' ; $41 - Duplicate filename (split from $47) ERROR42 DW $C000 - ASC 'Too many open' ; $42 - File Control Block table full + ASC 'Too many open' ; $42 - File Control Block table full ERROR43 DW $DE00 - ASC 'Channel not open' ; $43 - Invalid reference number -ERROR44 ; $44 - Path not found + ASC 'Channel not open' ; $43 - Invalid reference number +ERROR44 ; $44 - Path not found ERROR46 DW $D600 - ASC 'File not found' ; $46 - File not found + ASC 'File not found' ; $46 - File not found ERROR45 DW $D600 - ASC 'Disk not found' ; $45 - Volume directory not found + ASC 'Disk not found' ; $45 - Volume directory not found ERROR47 DW $C400 - ASC 'File exists' ; $47 - Duplicate filename (see also $41) + ASC 'File exists' ; $47 - Duplicate filename (see also $41) ERROR48 DW $C600 - ASC 'Disk full' ; $48 - Overrun error + ASC 'Disk full' ; $48 - Overrun error ERROR49 DW $B300 - ASC 'Directory full' ; $49 - Volume directory full -ERROR4A ; $4A - Incompatible file format -ERROR4B ; $4B - Unsupported storage_type + ASC 'Directory full' ; $49 - Volume directory full +ERROR4A ; $4A - Incompatible file format +ERROR4B ; $4B - Unsupported storage_type ERROR52 DW $C800 - ASC 'Disk not recognised' ; $52 - Not a ProDOS disk + ASC 'Disk not recognised' ; $52 - Not a ProDOS disk ERROR4C DW $DF00 - ASC 'End of file' ; $4C - End of file has been encountered + ASC 'End of file' ; $4C - End of file has been encountered ERROR4D DW $C100 - ASC 'Not open for update' ; $4D - Position out of range + ASC 'Not open for update' ; $4D - Position out of range ERROR4E DW $BD00 - ASC 'Insufficient access' ; $4E - Access error (see also $4F) + ASC 'Insufficient access' ; $4E - Access error (see also $4F) ERROR4F DW $C300 - ASC 'Locked' ; $4F - Access error (split from $4E) + ASC 'Locked' ; $4F - Access error (split from $4E) ERROR50 DW $C200 ASC 'Can' DB $27 - ASC 't - file open' ; $50 - File is open + ASC 't - file open' ; $50 - File is open ERROR51 DW $A800 - ASC 'Broken directory' ; $51 - Directory count error + ASC 'Broken directory' ; $51 - Directory count error ERROR53 DW $DC00 - ASC 'Invalid parameter' ; $53 - Invalid parameter + ASC 'Invalid parameter' ; $53 - Invalid parameter ERROR54 DW $D400 - ASC 'Directory not empty' ; $54 - Directory not empty + ASC 'Directory not empty' ; $54 - Directory not empty ERROR55 DW $FF00 - ASC 'ProDOS: VCB full' ; $55 - Volume Control Block table full + ASC 'ProDOS: VCB full' ; $55 - Volume Control Block table full ERROR56 DW $FF00 - ASC 'ProDOS: Bad addr' ; $56 - Bad buffer address + ASC 'ProDOS: Bad addr' ; $56 - Bad buffer address ERROR57 DW $FF00 - ASC 'ProDOS: Dup volm' ; $57 - Duplicate volume -ERROR5B ; spare + ASC 'ProDOS: Dup volm' ; $57 - Duplicate volume +ERROR5B ; spare ERROR27 DW $FF00 - ASC 'I/O error' ; $27 - I/O error + ASC 'I/O error' ; $27 - I/O error ERROR28 DW $D200 - ASC 'Disk not present' ; $28 - No device detected/connected + ASC 'Disk not present' ; $28 - No device detected/connected ERROR5A DW $FF00 - ASC 'Sector not found' ; $5A - Bit map disk address is impossible + ASC 'Sector not found' ; $5A - Bit map disk address is impossible ERROR2B DW $C900 - ASC 'Disk write protected' ; $2B - Disk write protected + ASC 'Disk write protected'; $2B - Disk write protected ERROR5D DW $CA00 - ASC 'Data lost' ; $5D - EOF during LOAD or SAVE + ASC 'Data lost' ; $5D - EOF during LOAD or SAVE ERROR5E DW $C000 ASC 'Can' DB $27 - ASC 't save' ; $5E - Couldn't open for save + ASC 't save' ; $5E - Couldn't open for save ERROR2E DW $C800 - ASC 'Disk changed' ; $2E - Disk switched + ASC 'Disk changed' ; $2E - Disk switched DB $00 - - - - - - - - - - - - - - - - - -