From 0d41e4f7870e7c974ffb5e89430ff08de7a26793 Mon Sep 17 00:00:00 2001 From: Bobbi Webber-Manners Date: Fri, 1 Nov 2019 20:50:44 -0400 Subject: [PATCH] Fixed drive num bug in F_SFIRST/F_SNEXT --- SOFTCARD80.ASM#040000 | 22 ++++++++++++++-------- SOFTCARD80.BIN#041000 | Bin 43011 -> 43011 bytes zapple2.po | Bin 819200 -> 819200 bytes 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/SOFTCARD80.ASM#040000 b/SOFTCARD80.ASM#040000 index 012bf1b..f92e8fd 100644 --- a/SOFTCARD80.ASM#040000 +++ b/SOFTCARD80.ASM#040000 @@ -19,7 +19,10 @@ ; ; BDOS TODOs ; ---------- -; TODO: Size information from NAME2FCB seems to be a bit fishy! +; TODO: Size information from NAME2FCB seems to be a bit fishy! I think the +; issue here is that STAT needs to see all the extents, whereas NSWEEP +; uses the highest extent number it sees, and doesn't really care about +; the others. ; TODO: PIP has issues with multi file copy, and I think it is because it only ; closes the destination files, but not the source files. Maybe the ; solution is to close files after each read/write. The FCB keeps track @@ -995,7 +998,11 @@ FSFL1 CALL RDDIRBLK ; Read first 512 byte block JP Z,FSFS1 ; If so, return JP FSFL1 ; Loop -FSFS1 XOR A ; Match +FSFS1 LD DE,(TEMPWORD) ; Get ptr to search FCB back + LD A,(DE) ; Obtain drive number + LD HL,(DMAADDR) ; Pointer to FCB we are returning + LD (HL),A ; Copy drive number to FCB + XOR A ; Match RET ; FSFS2 LD A,0FFH ; No match RET @@ -1025,7 +1032,11 @@ FSNL1 LD DE,(TEMPWORD) ; Get ptr to search FCB back JP FSNL1 ; Loop -FSNS1 XOR A ; Match +FSNS1 LD DE,(TEMPWORD) ; Get ptr to search FCB back + LD A,(DE) ; Obtain drive number + LD HL,(DMAADDR) ; Pointer to FCB we are returning + LD (HL),A ; Copy drive number to FCB + XOR A ; Match RET ; FSNS2 LD A,0FFH ; No match RET @@ -1722,8 +1733,6 @@ N2FL4 LD A,(HL) ; Get character JP N2FL4 ; Loop ; Handle file size info -; TODO This is commented out because it causes problems when called from PARSE -; We need a mode switch to turn this part of the function on and off N2FS6 POP BC ; Get C back LD A,C ; Check value of C CP 0 ; See if zero (meaning do not check size) @@ -2046,7 +2055,6 @@ PRHEX PUSH AF ; - FILENAME.COM - Load and run FILENAME.COM at 0100H ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; TODO: For some reason ERA B:????????.??? doesn't work ; TODO: Implement REN, SAVE commands ; TODO: Sanity check / validate number of command args for builtins ??? @@ -2476,8 +2484,6 @@ RCL1 CALL F_READ ; Read records until done CP 1 ; Check return code from F_READ JP NZ,RCLERR ; If not EOF (1), then error CALL F_CLOSE ; Close the file - LD DE,LMSG ; Print 'Loaded' - CALL C_WRITESTR ; ... LD HL,FILEBUF ; Reset DMAADDR to 0080H LD (DMAADDR),HL ; ... CALL PROGSTRT ; Run user program at 0100H diff --git a/SOFTCARD80.BIN#041000 b/SOFTCARD80.BIN#041000 index 3150fc818b96bf06574483f72abf4426a5d08f02..a4219553aa8c55cc3ae05ac80a229d9f43916375 100644 GIT binary patch delta 2701 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 J!)|%A>wkO$+yDRo diff --git a/zapple2.po b/zapple2.po index cc022001be3bd27570711ad2974c74921e40d749..645fc9f7d99af7f1e1ae6dfd13f05e09d55d5119 100644 GIT binary patch delta 2797 zcmZ`*e{2)i9e;LwiJc!Nj+uv?HqFJM9f?42rBdc4E|e;Cq%7;yb<{2*NFz)4gLc}F=Cbd* zv!gWCEWLa0eZQag{l4$#ec$&v5@8|{=FQ*P>Nc-M=r(Hn?gN|GzLK+@$k{B=tk9~U z*`%C}+Gz<)Hc*tuTAR<{B|fn9tZQ1@SVJ|}7;{&CvcHD9bbS3Ck^WG`eH?=`%#{rD zUWU1vp(CixgJ^`>)}b~pQUX#JOLc9Wi{2MI5c?pui+zSovnSb8>^S>6JI#&_UuSQ! z){%oF7Vb-2H#assHhggMr!2MGVw(rs(nli{9q!BEyh^(Adzlxaa0)aYot zDAJQ;2Rf4XMg5An7<4jg({z0rWF4L~{sX@lT$5c4w)$HTJ(a0O{SH6{v(Ks!l={6N zSe(ca(vfyD%2a{@Q)5y89no|(7KLRJ&r#m+y0mLu8t;#iZ*3G`hy(I=l%C00I+3I8 zIG<&H#4ilogYdU_u=vNQ^6My>dOJKQm<4}o$8p}j65@)PM(&Ay)`;?#RSOIFXHh-8 zr0tKnBB)3kY|zni-1}qs0-lQ!T4F>85Fl%XTIq@9A>cfTxKJz=Lr&&Xk(m;Uq1Iw= zJ^mNpwkT$qC6WHvu((^pF@1-Yk3o2a7;N4k8jJVSmkj;mpV1Q|TU+&GvKGr0gD{q! z5U4MP!NJY{?;yZ}1Nb1hm#sLsCDPM|eM9q@_K2xow*M8@v|mro&H>G8o?(TK7t3@E zvY3i)G>(_BwxlK4GNedz894DqJzeEV~(J~IMA z9~gn4hej$vV{w^OLv4^gG*UEe%u9U&b#HiWnz5(Jk=+!{#4f9sU37dQz0kKPzP|9t zwd}~k4o8|sB>$Js^AqA3K1g0%_Pl~_&^)I7+f-LP^Ja1ou6tIHO=vq+rmdap_@%gE z1Ieft>Ea7*a6CSOuVk5#T<=Tm3F;xsLFqdQswI4#3+b)eY0iFFuhm}T?8P9e_Z59g zjI)D6KEwHx(_CN^5f^>ch=8widb_M}fiC+Yy-J%g*VxFS--4ONARL4TIZ^gGU$@>U ze+ZWz`JAoBv`+pzr{?DIEp9$Ex2At#AnZYhnyQh{eHiZN(fA>~4!$9MllJAf-l6S^ zH|bsSRuJ27Y>fxnn`{kAeSBfSgWTm`wOx70Q16Wg9&U2mOasc-D>J(`6j%0^E&3Wv zFUnB-B8=VzL*C`PTjB7HxWOTwml8?peyA`|2%vi61LX46^H6E%r$$!^W>yQHl2#zH ziWBN}2_&l9-~xH|hqd*5?^$^>@AlOP>dwhtK1<3G5InaAnD_=iTX0(Nf4DvQ(rf{{ z`Fsha-vl#iR)vBEWeY#Z+bs_mRSpE*Q0VLciI8%pH^_TTC_-qbA7{>L6TJTlbid&J z??Lw~-hUOkNhy`0`kU|a?T;Rv3#<5j9`1;G1UrQzxJft)z4U2{YAL@k(-JLGo#EF6 z|1kuf0)lRpLxTSmr29#K9L;RshZjyL0fBy+yf<*j^iX+#&k1;M(pZJxNdn|+gnwT{ zNPp?tTY^4#<1JyPHK?2x@LhpEhGvT;52{84q?H5$Yt?QFIG0e~2@CjM=!8Hk^e^ca z`6B_Iwg`G&ouwbo%r2HnElBnGLa-@!qBAtJZ6|!JK3`Dn>@+LMP8ISN$?Fp;tlpEb zDp7ts;A{Ec;1v$|06eeh!x6}856Q7VB_U{UiahWg(tL*Ux|kI1IiZ5U{7>WRkvyYRhb1U&AEi87 zaw*r-h&;UL0?wtB11Ug3E*bwOQb5hgR54TqnL&E%%r@ne6dk3uh38U%`g8K-R7(Rc z442fFO|zs|J|N3sBgE!?{EzbB%74KHfQj&G&Ci#|dH1CCB=uLf^!BTi{Y2dv3R*R^8fawh OfL1$Mcc$)>>Hh&z`3`~r delta 2759 zcmZ`*e{2)i9eXE_-iF!C0L|N6mh4BCwwly+L(Q@8 zyR#vqnx%K|`##^#`+nc|``-ILClYKT!Jazns#)Vl=sIfn-nupZW3#T~vn~o+1++?N zE_K#LKS*^<*3ooxMfH?|mxRd8ry8f#d#dQwRra`XYO=SAo;muJD>8FY#$7ynPGR3s z*mo87J%vf2wr0d2)V2z>wIIDi?d0grdkV?A)UMR~sZQ<@?kG3N@tnjd+%z{jILjH_ zC)~cFkB6H15I;INI=FB0WscrKxvqk3^`jx0iFYZuhtDq;v-rn?b<^xivaN_h4c@k_ z%#4#2SV-$jhToKzqdvA`gtZOlX2FdSdRhpt)Ob?P-0IZ-&eg9w{5*ao2|?~mH6~Dju|sEm zD&x2v<<3+tj|)V^zEv@Ob6 zc1dPFw5RMa&!w!*=2QxT(Nm#jC#~mX<}F*@b6Xt;Ju$K|U>(s;r?Q18$h9Ps6g01s z(c2!4|L?Jb1CQ`Q+D5MI(Uh5K+oP@7W`504-*UK~`|b*l#9M{qv7DhNN*Q>V!*tT# zT_=q(uEZ!X0}5<-1M)t)m!vFFnh;Y(fnL?!HDb6EVHaAc@3y>`PH`VJ+^4&;u$_jTfF6YMY=(=&HRg_E_)W7(?T{^{f|i3)cf0w1Az-cHzMR& z-dd}@$wxXp&svq{j5EhYCcOq`mZOm7X5>TJ9|gOu2JIpbqo6Nf4{NkP^2Y2UHu=Ta zLVfSj9@Q(+wekJwXRR7@e>!GuFxRE6klC4TvO2XkfIZjR(vh`It~&h&zqF?r`Aa{y zM-STSo^<5?Ccn!uphwChkGVUo_mnIK>kh)*-k;WYr>8->Kn#^nASB3VU&5Etp;3AL zdVE!VRif{Px&ikbY9ii6F4>JV)DLFMi93LqJAp0g3Px7{JRP}N1jO*$NkA>u{ia{o zdRl80{K48t%^A%jWJ$Gw%r4Z!8aD~^c^`%U%J0n;=ku5naz#KlLoqk92Gk>{N|+Hm z)H=I%0niQQ%L9}rNwu=-wCxTRA@pGQoO0Tfh44Gjy�&h3*w0{2p}U>T4OgcXd%% zyXEjg+`yUuN8fl3e=aN+th-;t|BLV0KEK2*m2oF{QJ!8x>VP$@~SZqZ` zFc^bHQL1MIuAqO|0NVCp5B5rjSg6QFaeg)r^#s;P3iLljAA(FrHnYc+NH6;{C9;G4 zxssbMx(tYLC(N$Y2JW0~N4R3PLw9KjpwrqfR?y?NH#-qu;JdZAY^DKM2x;d*Zjit$ zrJ1%!{9mypSUTX9+MmlK%ccFZEQ5yDZk9)e<<>kB3D$tyS_rB^g$~8HN?Th_YY$05 zf1SQjiXd{>8V@PVmn6)>zG(dt{#HhxkO;P>g#ARqe<)*22}??IpOvw@OV~@&+`r3M zM+rM6%{?xIJ^R2m4&19a`G%(#oKYDDQO*S+#WVqjxS1TOISE4dWXLPMN?lgymc~E^ z-*?;q!1-g+*sgx{1RdJ;{fskit;6}j#>WtOEYNv8ks&g?uePl3A}lyc&WH*Bx95oWB}%@ z0G=z*+$+N<(h?<9yG{gT{D7=`Wr(Mfh!BBoy=;Jl*lx#`pO3>_A5_#9vrq1W%bp+1 z6@#@0t%UZFT+A6p08O3$;aGoF*SHSXnSzD@nm#<%Pj!uhq#YmYujm>dAo7en)?eK< zPB=D^2sZt~$+7-QTLCQd%viq*@Pw`Fp8DXz%JJ0P@4z(if&Wwze)TtS0b~MR{Peb* qqbBcqp8nXcZgSC0>ctmm&+(d*G&DD~DrjWvg;qUTbF${s-~1Qz+4UI!