From 831d864e83e765256a653923956c7bc4675a7070 Mon Sep 17 00:00:00 2001 From: Bobbi Webber-Manners Date: Sat, 19 Oct 2019 20:07:18 -0400 Subject: [PATCH] Improved return codes for F_READ --- SOFTCARD80.ASM#040000 | 32 +++++++++++++++++++++----------- SOFTCARD80.BIN#041000 | Bin 32771 -> 32771 bytes zapple2.po | Bin 819200 -> 819200 bytes 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/SOFTCARD80.ASM#040000 b/SOFTCARD80.ASM#040000 index d6c6455..2cc25c0 100644 --- a/SOFTCARD80.ASM#040000 +++ b/SOFTCARD80.ASM#040000 @@ -15,7 +15,7 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; -; TODO: Populate FCBs properly so PIP etc. work!! +; TODO: Populate FCBs properly so PIP etc. work!! Do this in MAKE2PATH. ; TODO: F_ATTRIB needs to work with FCB with wildcards and leave the FCB at DMAADDR ; TODO: Implement missing system calls: ; - Random read/write (F_READRAND,F_WRITERAND,F_RANDREC,F_WRITEZF) @@ -388,15 +388,15 @@ PRFNF3 LD C,B_C_WRTSTR ; ; Delete the file - LD DE,DMSG ; Address of string - LD C,B_C_WRTSTR ; - CALL BDOS ; +; LD DE,DMSG ; Address of string +; LD C,B_C_WRTSTR ; +; CALL BDOS ; - LD DE,FCB1 ; Default FCB address - LD C,B_F_DELETE ; - CALL BDOS ; +; LD DE,FCB1 ; Default FCB address +; LD C,B_F_DELETE ; +; CALL BDOS ; - CALL CHECKOK +; CALL CHECKOK ; Read keyboard and echo to screen C_READ, C_WRITE L2 LD C,B_C_READ ; @@ -1026,12 +1026,22 @@ F_READ LD H,D ; Pointer to FCB ... LD (FRMLIDB),HL ; Store I/O buffer address in parm list LD HL,FRMLI ; Pass address of 6502 JSR instruction CALL PRODOS ; Invoke ProDOS MLI - CP 0 ; See if there was an error - JP NZ,FRERR ; Handle error + CP 4CH ; See if it was EOF + JP Z,FREOF ; If so, return EOF code (1) + CP 43H ; See if it was a bad file ref number + JP Z,FRBFCB ; If so, return invalid FCB code (9) + CP 0 ; See if there was some other error + JP NZ,FRERR ; If so, return code 0FFH (h/w error) LD A,0 ; Zero for success LD L,A ; Return code in L also RET ; Done -FRERR LD A,0FFH ; TODO: All errors are 0FFH for now +FREOF LD A,1 ; EOF return code + LD L,A ; Return code in L also + RET ; Done (EOF) +FRBFCB LD A,9 ; Invalid FCB return code + LD L,A ; Return code in L also + RET ; Done (EOF) +FRERR LD A,0FFH ; All other errors are 0FFH LD L,A ; Return code in L aslo RET ; Done (error) diff --git a/SOFTCARD80.BIN#041000 b/SOFTCARD80.BIN#041000 index f1f0d57a62ca786a588f20cffbe6adfc097dbb1b..6fc09d0a4daac549d387f644ad327056290c1977 100644 GIT binary patch delta 1456 zcmbVLe`p(Z6n}R~vt&uGxy6K;cG%0=jb+m64MooGDh@W#&VjD}+UAn`)yz4vu9Z|) zmq<_~pi&Pf!@m^-8H4__4YV_{!@F{@6s!B^{^+1Xbi)pv1#uVO{a8Ede+ItqB#1t(gE&*!8=xX)2hfLrN~1UbBI#FyRK|fu)FdXW zt8+czLAMU3!NdOB4n-j62t}f8{zCE_ma&cAz#V#@r*gZr73f6Kd|egVC3;iQlX=Mt z>NK%?dRO4ep{YlcnaA2C0k{BgLEx&u#fn_K$WcYEv#4#!?`NKoCZsQ<>(UMBSLt`@ z4{3`$m1pE$v{U(=Xve2N%o7Ar(>^X_AF7X-XXFI|%&n^3HkJz982h-6t68}C(HOXiBQh~vK}HV=ye=t5gx$gwKltGbaEhAxTpWzlr=zgd^B zT@)X#xQ#Q*qUjdDDV9*g?d!XhlX;?E7LO4WL{4*0Nx3w*BMnH*PRXGU8QUa#x3NRQ z-ufkHCV{{cS(PyOv3w8!s(9|{jIQdOl$fJZ#jC4$>0afz6KiP}<2Cq+TM-%`N#<9D zdo5l*JC@&2FE>%1zys!xh%bL$@{=rPZUoCFAadX^ejVl~Ut|8hVwIVOHI^sq<+*Zh zGw6H}^jj~cL1*f!9;)KwfE}5S$#aQa4O`+faGuM6PKBo&pi}0%5aZ$GV8ptxc|1l7svA(>)Nn9Q2A1J%3gWe zDucxe{jQ@(@fdsB?lD4&W3S2Kx9yF_&vF=}G1g+6GjbRMjq5Voye12M4s5X@@KVAP zcEIRRTyoH1-^Bd8Wzc`aZ%TmxqwD}CCl!2Tqg0OvL>sKurF2)GS2hLX%_kM-PA2_d zDBOJ3VK3ow;ZkPPVE!%Q8houdz^Chh)Y0{f`vC!(=MKPq8jn|oUj7{L1y zMoy1&JM4JluFu7_*~`a@7mPhBA4fN&@)WukRK644E2_}j))_b<5NO8*677T#KszY} V^-1%%I%$ro@0iD@UsFGO@L%9>5^?|l delta 1461 zcmbVLTWB0*6h1SvO?Q)alIbR)ZWEf>(P~z$b?{P#IEfEd#7c#>DyB8F|J)iHSl2{$ z)!1E$qAwz0L{WU{n?5LoyflI&?$+RJ7|4o&APllfd}#|2Et1=;XLhFD5PWiB&e{3S z_npf>=btLlQ$_kpgrc6b_E4V`US`;svj@0yz;>f|VhlGHVG};|W;4_khLH7t{(jcX z)DdPXLZgVpebbC_81tYa(%cGDew5~_Vd(eJj{zG}&LYJ+Lq9;RSntsNh1STOA=<P@qo@!=to!@ZF!TH_O4-P$C+E45-|VF90ATVos))K@62#; zAxJ$ML~ZVcnG~~dF7a?ZBZJ6*7y+>e;)W@1n&OrzZktxGa*98u8mgr(sXwbLs;k!2 zHf>sI*WzfW6&@{_`B0%KDrs$9?5eK7aqR#sv17DWzrWi<~;XSCp4p3+h;Y5mJ? z&3&DBCz3L_Ibp|1U3-2)Y0c;SA*?a&@xsTNUwUE4&4DY(4>cT1lZ(P7udnjA=Gz4= z`i9q9`9X_fbf4e~<*&6U21-ksP+rjFqdx2kEf7eed5@|56_6u7`xn%2=fJ*>Uy%hF zvcdq0DIH&hHnuMS+De@Dpx#p$&<{lRmyhWFt&E4imT397&tAoK!Zl2GgR?bJ zU}`tOjP7Ra1Y{_Gq099ea_qR@0t*Rmuri~cxLTUi3vpqe+%{YKQV&)dhx(%(SNT_c zb=g_hsx@?%^{T)4zhM>|S-A1I_fAQVQuj9Q2Lc0lL!!uG{rlkUFI^A0c0Q&u G4*UyA-3zz? diff --git a/zapple2.po b/zapple2.po index 54d9d588485b6191f6e51d477db3571fef949e79..2e83778e15ed641f253b6870366b5262a6dfc691 100644 GIT binary patch delta 2305 zcmbVOdu$VR9RFS0ZTIVID`S%k7O$&g>sYpND3J~hMp@-C7}JY*-)5F>GkN(>2R1tWqj7_WF{BMgbsKPCa6M2rs-Bc0#7D;wZ{Hu-+PzxzHu z-_P%L*La+c$LZtMd6PDww=Sags=UbvT|?U7peJvdMSm_*11J1>PZkhH>E@4k%HARC zOG8!y!~kLhF@fZPhOFe_5OMk-Vd(GQMFyq%Dzh}WoBYI3N-YXe(LgXl1$(IF zP0O0;l}#Os>k^;D$vTJR2%Fpq_W|--15qdC9U}XCpD^07l7}4Yki8VF@|VG}+GHit&kdCCyNJeknfj9gFPFmtr1mwH?(&& zb=cZxVm!DHU!6oWN>|^(m0(7X;8HMq_L0TXp0{xoj8`5VcO|wT#hWS;qi>K#d)dsf z5QAtVqD_d7Bib6EZ2{UIpbG<1`6b-yT*z(b-sQgIZg4+wzjD8G<^29mCtnGAf9EXF z(Znm4FhLM|rPoGq#lw9Ym41GNLCSP7JC?rXrwuHDig3l4-}$Fs*((i=;F4*UKt5{4 z9)gWAC?pTV%w-Cl`Qo1~oyIMrBit2PJ_dYN^W z1c(_3SGYu=Unve>S8fZVu(mI-sr4*_WM)hrsd0&(N>PgpL+E4Hah6rI`qK~8OQ$a5 zM|w5#&ReXawf}_;0g6WLv)kcLqA$j7BJ2q7rW?7MQlw35F6W%Zsp&20DlY3y&)|Su zJ*Q5KAwcjrMA{SSG$DlIAa`-LjN^nkXOQdF`wDuw-uc4jiL#7SCwM^Xh?1{z%6tC1 z6we-xbQbi*QUFhYAf<(c4YJi8_E}9T)m`q;p&cNcWo2KjW&#NTXToa)<``S z9{dJhv-I*8ismJ=oTm&Or^}FRC-v?(_Gz3w(t>yKF zc#5ximUoY2Ml)NTnP>%rGBKC7vij1TW22qszL+{$ZN};VA?Wu3^z%sFH(*Bxc$N0& z3oO+AU8-*OXSmj_x zW!d@Z^MdbWa#-jsc3BzAspQ9kenntbHwxiu{3cuE}1PzxnT+B|0#RSj;p&DW+g(+lS41xxOs^J@Z1wy-&f8O*fm zU{zH7$H3aA2-`5l+< zNfz!+7E&M<5G#lcBo8DXq#&9sq`QLzZ^GpcGKTmq8B3cQm$(sE+gCy zTTQg)0R5ANdW__~Pj_{$x3XBzL)=EhmVwo=mD^@xD-74GGf-&`0@nX|?4HTw%w>w8 zY!NT_^$f-VmPQG|!i`wt4_mmQ95j}*+YpOa_FhfN(n?Ob3YjB3{GS$*O!% zPRbYM5jiD~%64VHuSju$-tXf>3iZy?Gv z)s`d8YeU+C>rG`y})>U6Z{P=%`SEG?w1qGlDHq_hme0Cu`0z z#lH4n(19_2uCdu+aHnN&C2%W|RttQ-Rn=aD&fJPn1w}xNcAiwsD{EA0Ur=g>Q=_Su z`BZzgh*BZXtV=xeY`c#MlfVS7?>wX!9St<3LMY`CAIuuoB5n2TPR~#Ltr&VhpC`-Gh>dfBaFL;Wj>C&k1%5{vfa+OvwuStQuGI=k0lEQ>Y&pSC%#k6Trz!z zp~>5)m=bb)kZC4O157EIdyer(&kit;6r7l3PE$SSnI&ZVAX5{am|`lHlkR19N7NzN Vk5WB?z3#Kqvc3F`_MUbs|6itaiu?co