From 72f99ec28fe457acb75fe5ea8e88dbc900896e75 Mon Sep 17 00:00:00 2001 From: Bobbi Webber-Manners Date: Sat, 26 Oct 2019 01:31:15 -0400 Subject: [PATCH] No longer trashing buffer at 0080H on launch .COM --- SOFTCARD80.ASM#040000 | 25 +++++++++++-------------- SOFTCARD80.BIN#041000 | Bin 43011 -> 43011 bytes zapple2.po | Bin 819200 -> 819200 bytes 3 files changed, 11 insertions(+), 14 deletions(-) diff --git a/SOFTCARD80.ASM#040000 b/SOFTCARD80.ASM#040000 index 9df5281..e2d13cc 100644 --- a/SOFTCARD80.ASM#040000 +++ b/SOFTCARD80.ASM#040000 @@ -541,7 +541,8 @@ B_DRV_RESET EQU 25H ; Selectively reset disk drives ORG BDOSADDR -BDOSINIT LD SP,STCKTOP ; Initialize SP +BDOSINIT DI ; Make sure interrupts are off + LD SP,STCKTOP ; Initialize SP XOR A ; A=0 LD (IOBYTE),A ; Initialize IOBYTE LD (CURDRV),A ; Drive A:, User 0 @@ -807,7 +808,8 @@ F_OPEN PUSH DE ; Preserve pointer to FCB CALL F_SFIRST ; Find first matching directory entry POP DE ; Restore pointer to FCB -; Alternative entrypoint used for opening ProDOS directory file only +; Alternative entrypoint used for opening ProDOS directory files +; and used by the CCP to load .COM files. No directory lookup. _F_OPEN LD IX,PATHBUF ; Destination buffer CALL FCB2PATH ; Populate PATHLEN and PATH @@ -1888,6 +1890,7 @@ N2H2 OR 0F0H ; ; - FILENAME.COM - Load and run FILENAME.COM at 0100H ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; TODO: BUG-- F_OPEN is trashing FILEBUF with it's damn DIRENT! ; TODO: Implement the built-in commands using a table ; TODO: Built-in commands argument handling ; TODO: Parse * wildcard and generate FCB with ?s @@ -2082,9 +2085,7 @@ CSS2 CP 2 ; State 2 - eat the space CSS3 CP 3 ; State 3 JP NZ,CSS4 ; EX AF,AF' ; Get character back - LD (IX+0H),A ; Just emit the space - INC IX ; ... - INC D ; Character count + CALL EMTFILBUF ; Emit char to FILEBUF INC B ; Transition to state 4 RET ; CSS4 CP 4 ; State 4 - eat the space @@ -2093,17 +2094,13 @@ CSS4 CP 4 ; State 4 - eat the space CSS5 CP 5 ; State 5 JP NZ,CSS6 ; EX AF,AF' ; Get character back - LD (IX+0H),A ; Just emit the space - INC IX ; ... - INC D ; Character count + CALL EMTFILBUF ; Emit char to FILEBUF INC B ; Transition to state 6 RET CSS6 CP 6 ; State 6 JP NZ,CSS7 ; EX AF,AF' ; Get character back - LD (IX+0H),A ; Just emit the space - INC IX ; ... - INC D ; Character count + CALL EMTFILBUF ; Emit char to FILEBUF CSS7 RET ; Handle a non-space character in the command line @@ -2168,7 +2165,7 @@ CNS6 CP 6 ; State 6 CNS7 RET ; Write character at A to IX (which points into FILEBUF) -; Helper for CMDNSPC +; Helper for CMDSPC/CMDNSPC EMTFILBUF LD (IX+0H),A ; Emit char to FILEBUF INC IX ; ... INC D ; Character count for FILEBUF @@ -2183,9 +2180,9 @@ EMTPATHBUF LD (IY+0H),A ; Emit char to PATHBUF ; Load and run a .COM file to 0100H ; DE is the address of the FCB describing the file to run -RUNCOM LD HL,0080H ; Set DMAADDR to 0080H +RUNCOM LD HL,PATHBUF2 ; Set DMAADDR to PATHBUF2 (not FILEBUF!) LD (DMAADDR),HL ; ... - CALL F_OPEN ; + CALL _F_OPEN ; CP 0 ; JP NZ,RCOERR ; Open error LD HL,0100H ; Set DMAADDR to 0100H diff --git a/SOFTCARD80.BIN#041000 b/SOFTCARD80.BIN#041000 index 6c620b370cba1cb0c065a2e90f76d00475789d65..a43eda5ba3ffa91b735b650b5f710d554183bbe6 100644 GIT binary patch delta 2392 zcmZ`*eQXm)7JutF#tw;t2}E3yM&4{h6~m?K3OH`%m_T|31R*N4r<1t0zP6OMREMso zDnKDlicj*cKX&bj@6@W5+Jp-AgSshqQv1h2yKYj}?m!X*sVW&Yl@hh8B7yD?)H}Sn zH@gm{sI}#pH}C!4n|UAe#wRBoCnp^>ivW3u;jn(J#=&ucvvpj(BiJe5IJ_2oHCbAx zg%%I{YO}Oc_Py-HG2d0?d!7*se{F$4O9jNBh=`%!>>sM$jYj@+|KdM#Vikx^5C=hY zWyNJ#(VZ1NS$+`O8i5CBTLW!PxI1^$?3hl+_${#_?*h*r;pu0;dn5K{Y$BGnzSm;y za);b02jv6u3-VD}l~2pn%2p+!yoTFO4#;aG z?Sy`qG+r`SOpnUjB`3^Z{{WrI<=>JqBE}WERhcUB(P28Cyi%UcQKFiQ1x^uLfrAyE zw*O}M>lrj)g3c+@txUP!EA|rpcg$#@kIrWiw z+P&ZzFrgqRqCog&riZq=6iFcVUR?@bO*)n4$V0^U5TVry8{d=ZWD0S|6}~>ptpiV+ zrsl+qy0E_m=m8b&9aHj;C^_84SlEXN)Kn>>+LCt^Tlc-Ybn~)}M~~6PqEhji|J3&H zNxi7pr^Yar2E5`%B36^qfWP!$Ep=&an@CRFO!!}09`qJA$ITu#fF6to8tq`Y2w%30 z?JjJ%L(FV!@S8*W{bXIdbsySY^~-kOVv0C`e&)8_)r7CLwzVWX3UAxu+jd9DYw=%2 ztQ_+1SF-haoSv4gB-sAmj92_E@#Djomlfc7_)$zcU#uwHj8~EtSOW&DlX{G7BN%*? z7_LE!5i~v19f{(KF1eFZCAV1EPj)6cB6cMI z%$J^Sqc_yMBY7!-9^(M|<;2fKvdF|%pf4v%wv8WDJ1y+M9R55%$y+ZGw-T1URh2r8 zRMc*79oRz_c5Nc37q(3|CKr0P5&pLIJ3Riy;ynbuFT;H4eeqg@7Z()BU99iiCq2VaruT1KQxg5s%jh&vg% ze5)E-oJEMyfCm@6&}42YY*ZioNbgn~gxb*ZkM)3>W32$=Fkg>{536%mXfQQ3yB}vk zotj17lW4@q8Q3PUS3|F^4PE|RNf+{`980G_PM!-%sN5R~SGu@Rz2p!XW z9d!HZv&GVh_V^JEx0Bd zGrz|)`<@5ZXWIIW!w$qU=4AJe^wjRNkC69QrMun#2iTo182|tP delta 2452 zcmZ`)e{37|6@TZr#!h1=PTJ7LY39pSKpX z)3voziZtK(>^u7#!}tRMY51j9xKIfdX$*F5D(<>(mtdB-@0-*gvS+mdoDv z&MBp0iTu9r``+ih@Av)qzB@VXIXUfVTn4B@7D?~BjUJBcITz%bJp+BxzYgC5;np&3 z(h|#u!)wa4PYOThMOxk55Pq65i@)lGSZ5u?poqw#;@nRfPCuXd;qr?Wu>nLch+`mz z%3^a_Y$=Q3GCv00?Z5+cuY>LmJe)gX_snWpK9Rk|`yjAOIP~N{Udg_ioyuy?zm*lF z+oV3JUwTY>RvMKG(i@Uj9+cDaJMv|DOYUsW%>6rO=e$Zl2`cv}T6VLtwMBVCnNuFm z7xEK%=4OtN?8DrD$U^p3E=odDZ0%Hbrmfm19e7F*u2{8-mEz{FD!g@7K5o&CnZdXafJ@bGZwFm(+l}4OSK9usrIr7ve*S2v;?|6 zguhxs2R7&+$Gv1J6%zLnewaCp{g_ZwT}m}qmQvAp7x2Nd4@LrrN>vUU%=>|-xD6o) zq-`+ok;PuZ3(O9E4ao6c;+{1i^FeZ_9LYRN!jBT_l^H!P(LWUscU0zYE_1yQ=vLK= zSX3AHbpm}%MSn-+>K?g*rx=U7v3{x=FRHHQZP~RweS>W^>*6tD4AGS9QS*iy-$C7! z-CJWCt#nA-OvE6u(ot(i6J4csCrCvcB>W~Pf?@MVIeR-Jp!eru?QXI{gkR;TA2jc} zPR)F5jM^vkACTK~UAxh5=l}OR$qbQze&(9r^@LyJ_;oZp&9_|jHNUTsmvi6CI5p(o zuUG40j=mu|MR4Q&I#-X^;^{cnr3C_eeuhQo|6DitI#(}RY#kV^Pnt2a?O^Ztg0~KJ z)34MUGkICTh>?Ikt9(Z$O{R7dJ*!x*kE^O%7It9{e}Qk+Z7&h;BdmIz^*+ti&8{6C zdxR`LkRWd^Zkt`3U)+8_;kUB%UaRfCJRXSz^n>}88(mie)a*3(yXx<_5xb4Yy%Edr z=cPus=jD9tOL8>Nb2ajEep6;H@8i3?E->mZ_>b6)=1m1Z zYMTU0sQxqWM}^*65UTz{;tnRZ1RuC2{!zQZ+~k724Bd(LODQnEz%W8kc~%%e+ieBh zWrR@F*{{|gDtwV%XdYSI*AAntJ`mcD;QJ~TM(x!|)Ak+aSfSM$tR5;bL|gsO=dT`f z1S`+z^LihBScrXD>gl0Z@v*i8drQwWSt)ELcb5Pw)r5ph7yS6-@pym5A+_j!UhFqX`vZI z+po@Fq5XxK+CE&n)tMT~4xkgGV&D+LQ9`$=e(qLh=%8Q#=Z+sCc{XC~p#F0g3IId# zQ2D(1o*Hk)<-8hi!R7aAJdDc)@}4@<0osOpk1u2lT2ry{jbk*T9i!jZj?)NvJ%-bw4dgRa7+S3KQ7(vK0aM zvGsYdAI6pLE+K@T)xva~{-ucgE-dFKLNIOrdiIQFCqFx*%|%nymoz?;AD>^U@h4#3 zs_pVYJ9Gi7yrnU4)cjPV&lIawjrtf(L~+G$-Y*RS`!lZpSL;pB4Gtmk2tvx}?RC3( z$iN;1JybMoPVX-s6_xQWn8%UBzLhwk{-$B(6WhhP@x(|*{B%4qEdF)eTQe}&t!UGr zj}%#}Tf!QzVSDwxC|ji;yiVrR53lUpqmCE-lok=q>A!JU=Bw;*^dgft=&!Bp&|_tV z_Zk^={kxT|Vf*wc+*~Xg?)e73nm|mg>wNWvQX(iS zkk}yRA$$UuhbVmX@rM)1o0Q2aHX(;UK+zwjCz6~piJbn~MAD;7QpR6cm`FA%lMLek z8RNh|S)NEXIEpAd@R8YcD(OYVn5(=L`PTN2u~SKook8!aGnWTWB|V5`!s(sg@H2bP J4U>1){10%JLRbI* diff --git a/zapple2.po b/zapple2.po index 798f0bd478630d7f67e07cbb21acea19471798d7..f6412c9626e30b4d185fa35e12b37dc652b0b2e1 100644 GIT binary patch delta 2484 zcmZ`*eQX;=7N3pn%{qylxNf76gvgtXsN(i=$ExjdtHe#4LP2dBwLR_+dLKTx^3{r} zAe6SWu>(2PyZ+d7liL>V<;yWWhb-0bm9E^N>_p+Ab9f)@#K8koc%hzUkCd<3C zY!r1iBNm~~7S!2_@`yTWcF(3`?B-aBrIC9V_vjN}|2g(*Y&w><{;$Tm#BQ-i>=pNm zPm4!ISv)Peq%BfJ%1M``{`k3gDgK}Ma@>`uOL!APA{`4Qd|MMwB<2#2C*|a1l9-v( zGBIWk^}V(bW7blv<`J3Tn(5e#Ki?xhe1PMwl;?BhVQK-ts_hh+7HYe;Uu5ozbgB3+ zN#i-QX?9ZFE;!NRwX@(+F8`VcaWbypEz(Sx9UI4mN4y&@cT%;tv15v2S-TChf zdo2S7Or%qi@O`E-?Bxel_FiH%IHcl|Tp4c6RfYpX2Vz}W8V$JtHJm$S5bF;gpt`)s zJz}DwAn}~awh=wB)h7v@YM<37u`aDgV%j3RRo`wEyCgEdCF08|03Mgv#w@iCxjPj( z$7kfFeeDSEm%-pMDgU69gJX=Py^vQ$7BaFec~i1=-?~jVFWPu;8GI~BRkzuXYzH6F zOOkzUh-7)h%WqV9ms%bPl<#Z6w9>gr&GGlB>`yEg28;K^%>gnYy*D0gwxdO>Y{fFR zv$)|FF|n~BV2s(86fAI}leADoR_DY<& zBVwhIeY={lzsK=u(aMAE@r`)Z<1$+qhtxD7_b-0~d1p&ig&Xl|-hwU2Af?g>v28{M zJEj_R)ME6S?%D1{si{wIO9-v#EZ>R@FOw#W^@%k?8*ti?5d<##tO`}PT->KUkYKta zb}*k}%a3;A>+#-Jr^EQAq+< zS8Fv=Rl9j~aF@EYW0QJ%Y3pora%o_z%Km}`_-1;4orEJ{Li!()D>u3&3n00_7`DYf zawBq^8v8~hz;l^8yYA!3;G%Xc$*|Oy+AB$BV`MIAhjqHYJdDa*=%?1=t$_zUVg`yo zPm$T3Vvd@1MJC07w1F#g`D;lA1iC-P<=v@J4`G)%8rdq$5z|rJWP_aqeJAKwhLQ0N zIO0XQ!(1=u4y0iBd(IoM_VxOn)HfrGjYCWOn$eL}G~)b6;gMxhN6dPdN6en$Xlj+y zlYcBl5dP{P&E!v5jFq=ES1qOUso-L!yBmL}ol8Lz+O5JfhMtKpNf6O?8J;*R-_B@! z@pi(ep3uqa5KxU}5R&xPHFZ34%ASu#HOpkuRh9ZQv3v~9q;ybcX z3(Nbmz`$}r7TmBDv~w~u)JiE`+fFP-4E&`GtyO{EHXZ8-;pvz! zib6+L;a<|P@k@#@ir~DUV%F$SD#8oM6v+BK`h3gpuq@_5;LwwVVQwQU03IOg7&7<3 zig#oHg3l?w!Z`jU4fHO^*+tGXVji14qnP0@&M2P;hVw5gY~LTp7b^4YC|W4b@1jvN z>OdsDR}}&d6#t>%$J6YAdKX^uaWP&!?S+>D2cE!=?Xrg+c3& zS)>6ai}YuKE)X20M=X+26D?7ua^}oU9eA=)c(`o~1 zzrwW}_Ko4w0%xtsu!yqDjlAwC)Ic-I#Xr+-(e*x}}M6&<@ delta 2541 zcmZ`)Z*1Gf6+cR}LfMvV*@>H4jw_l$Q_FSRvB`$Yj^g}5oc?i)HA#my7$PJ^wyr_b zY#-z-iKMgxB2tt{iB`FNDAqb&o1sDF^~0PE>)KIqP%^tL_7-O-Kor7YZ$sg(`%(nk zOz#~jXKBz$xOeZ~``x>Hf9^4p;WHV2>eqBr03q}j)cV|}0D5(XJ~u;CFg!54Fvz-L zdWQDxYNz_98`t|h6xBN&xYyU>+14-o^Z5NJ)Kr4$7Kg-?_^x>MrmrGWI9q-3{B+gqjYO7qfp@`e0Fo|u`} z)GYHf^>1x4%WR?|T2Nr3>t?dE?bUwa@QWOG!>U!RB(;Fw&_)DiJ+)gqDlqq_A5`%# z^2RB$LlZ!Fg;xFp*vCKCB>M4?uHk4I&1 zmB4_FbR@=TbvYU252)-2F&h1ricNVr*-}|fMq=HF4U~Oo)DNg+<+wqtAAXVA7)1V* zjm*bHzE5R2vJY$xim^V`J!?>81KPtP6HY&?hMrY1EfV^Ufd5bc;3<*4r%d%Be~&Cz z_@caYunXbmWiWVBtnL>paE!6E57H{jv7+p1elEIu-??jVHS6NRW$@7y>u$4#>);XH z6y0k>B&}4C->UKf)k;OI-Oac`>4~cqen@4vI4+Es-^kfJ2|@ZmF52NnE2y#!j`}I{ z(L2<{#^#89R)0i$FvoQ71H)ba-|!^a2?XgEZyVmAvTGf~j%JT}!ByWj{HFGLj=4AO zq>=q)Jz-aJ_$|T7gX{4Zxw^*|i^m}~t;oOs+mLtmkM#{-v7VDG*TyZ`%?!CQ1;hWP)E!Xy$5oQRu6nJe z>)UQ09eqY!dNQuQy|iO)U4Cij6Dqr%1o(D(59Z-WAV@!wU%k;CSpdx*^N_3liW`yJ zc-$M20Dn?ybn9NsM?cd}mZC{v*$TLT@W@Ri+Ssh=?uDhukg9nC&&UxL}%~yI}uv5*eR@BSBO- z!41OR9R*mWxnRUuH|gIje41Kp8C^QqfyUZ=h-*IykE~c2vzvgX?1#)up^Xkyj}{1` zz5eqt)zgk(^(}o;FQxYj(a%b~z4#Wq*bYP<)XU9Q66(oa#gUb42BKXrFbq6=c;wJg z@ih_R9hRX1u-e^%dtSR6ai^eC-5|$TY5+0X!7na|I_+)dW_kA|eVg3QHOHHNrT5Ae z(k>uOi!I>WA$j2j9w^M#4#M0c&(=V87>pPd16m0*6ud)bs7+4m0l^@29|jczRuzbmUPmZ;~bV-i2!t`4?7J})r_MXg)b|Pitt}}~i1J`6Ie&aL_E2r^& z${8Hi!U}Z0nQV6)&tyXx6d!BD1EihfA1kr52+r$OY>)ne5_=WdF*3h`=C>ch1)&NG zuPzaRy^G8Mc$~~XLiW=z<9#K7;3*}9$MK(v!0&~Oe#8Y*_7CSSDt6-Ii^_Z?S^bH^ zrt{+q%Qf~aTCi$+eW(LfF4Q^7A6t5pU22#rTzhA-gv4Gu~)rvFFjOU(}r z1MzTN(&+1R3wqdqGDLc?XxNlKP&~y;!{IAL z?$zI1U4g~QDo-0}F#Vg=rD6N@8CYB?8t(Z9Je_5(%W%K?&{Dyz4J8&)ZatFbkbxrU zAj$e$5l-J&A|J8MCEPF6_aLe}0Qq%SMre?z3;?-;5Iqb6t-r)P1C1XAvqP}9Qa2o6A7=Qh@dAwFq_XOXi#Ka<<;<)mcNglPf+9x{AiuIHh4ba j0W1+--}66ycK`H<%DlVwoc96)!w;iz+IyjC`R0ECCxckD