From 4d63f31a5b76dcfe85aad3e0028131d369189ef9 Mon Sep 17 00:00:00 2001 From: Bobbi Webber-Manners Date: Sun, 27 Oct 2019 03:07:13 -0400 Subject: [PATCH] Minor improvements to DIR command --- SOFTCARD80.ASM#040000 | 66 ++++++++++++++++-------------------------- SOFTCARD80.BIN#041000 | Bin 43011 -> 43011 bytes zapple2.po | Bin 819200 -> 819200 bytes 3 files changed, 25 insertions(+), 41 deletions(-) diff --git a/SOFTCARD80.ASM#040000 b/SOFTCARD80.ASM#040000 index 208adb2..c216caa 100644 --- a/SOFTCARD80.ASM#040000 +++ b/SOFTCARD80.ASM#040000 @@ -1896,10 +1896,11 @@ N2H2 OR 0F0H ; ; - FILENAME.COM - Load and run FILENAME.COM at 0100H ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; TODO: Implement support for ^C in C_READ -; TODO: Implement the built-in commands using a table -; TODO: Built-in commands argument handling +; TODO: Make unadorned drives expand to x:????????.??? or something so +; DIR A: works. Or just special case it in DIRECT ... ; TODO: Parse * wildcard and generate FCB with ?s +; TODO: Implement TYPE, REN, ERA, SAVE commands +; TODO: Implement support for ^C in C_READ ; Get a line of text from the console & handle it CCP @@ -1936,25 +1937,25 @@ CCPL1 LD A,(CURDRV) ; Get current drive & user number CALL DRV_SET ; ... JP CCPL1 ; Go again - ; DIR command - ; TODO Handle arguments -CCPS1 -; CP 3 ; Check if three chars -; JP NZ,CCPS2 ; If not, skip -; LD A,(FILEBUF+2) ; Check for 'D','I','R' -; CP 'D' ; -; JP NZ,CCPS2 ; -; LD A,(FILEBUF+3) ; -; CP 'I' ; -; JP NZ,CCPS2 ; -; LD A,(FILEBUF+4) ; -; CP 'R' ; -; JP NZ,CCPS2 ; -; CALL DIRECT ; -; JP CCPL1 ; Go again +CCPS1 ; Create FCB1 'x:????????.???' + LD A,(CURDRV) ; Get current drive + AND 0FH ; Mask out user number + INC A ; 1-based for FCB + LD (FCB1DRV),A ; + LD A,'?' ; Filename + LD (FCB1NAM),A ; + LD (FCB1NAM+1),A ; + LD (FCB1NAM+2),A ; + LD (FCB1NAM+3),A ; + LD (FCB1NAM+4),A ; + LD (FCB1NAM+5),A ; + LD (FCB1NAM+6),A ; + LD (FCB1NAM+7),A ; + LD (FCB1NAM+8),A ; + LD (FCB1NAM+9),A ; + LD (FCB1NAM+10),A ; - ; Attempt to load .COM file from disk -CCPS2 CALL PARSE ; Parse the command line + CALL PARSE ; Parse the command line CALL BUILTIN ; Check for built-in commands CP 0 ; If zero, was a built-in command JP Z,CCP ; Go again @@ -2347,37 +2348,20 @@ REMSG DEFM 'Read error' DEFB 13,'$' ; Show disk directory +; Use FCB1 for directory search DIRECT LD HL,0080H ; Reset DMAADDR to 0080H LD (DMAADDR),HL ; ... - ; Create FCB2 'x:????????.???' - LD A,(CURDRV) ; Get current drive - AND 0FH ; Mask out user number - INC A ; 1-based for FCB - LD (FCB2DRV),A ; - LD A,'?' ; Filename - LD (FCB2NAM),A ; - LD (FCB2NAM+1),A ; - LD (FCB2NAM+2),A ; - LD (FCB2NAM+3),A ; - LD (FCB2NAM+4),A ; - LD (FCB2NAM+5),A ; - LD (FCB2NAM+6),A ; - LD (FCB2NAM+7),A ; - LD (FCB2NAM+8),A ; - LD (FCB2NAM+9),A ; - LD (FCB2NAM+10),A ; - LD E,13 ; Carriage return CALL C_WRITE ; - LD DE,FCB2 ; Default FCB address 2 + LD DE,FCB1 ; Default FCB address 2 CALL F_SFIRST ; Find first dir entry CP 0 ; RET NZ ; If not found, we're done CALL PRDIRENT ; Print entry -DIRL1 LD DE,FCB2 ; Default FCB address 2 +DIRL1 LD DE,FCB1 ; Default FCB address 2 CALL F_SNEXT ; Find next dir entry CP 0 ; RET NZ ; If not found, we're done diff --git a/SOFTCARD80.BIN#041000 b/SOFTCARD80.BIN#041000 index 662b8a51266e89be538c7386b6f36477ed53c5ad..cd78701416286878b64a58d028c7879be043e1f3 100644 GIT binary patch delta 596 zcmZvZ&1+LZ6vgjLlNga8&qx+gYhHpN6=NNwi&7$Pq;C8NjN1CSaV3JEO)A~ADcCzR zzO~@4ASejxLZQyX>I4QGK?Ol2i_{`WbyEa!;(f2lrnni-k8|eUxp$_PVpB`8N4wFv zCG%LQ4aZ@5>jP>=dxmz{Y@$13LrkEU>`-EX!Z#Ujn168B7)A` z@#_}e6w_6E;~kIpuvxwepXn$^HAqioq@f^cgzVQT&;K6+~KatLIK1afv zgv+|^rTq5aR;wR$u~@akYFR$SUEXih)=?#%GAsNh+vHQ__N({as9(r}N7$43N_6Q!L|eKvD8oXd{`#uSgBcoNL3rTMO3d5(Ko*=y*j#Y4 zKuu-^&GcHBMBV);t0L!q6{a+!iRo|Xg8N<0i-Amk+AL1H6);EY78cA-=~fH)Fug8#LhhByS0 zM@XP$ye3hT)SV&f4Z&E>;Atc_e9&csSU?Z;aqjYdSL8Xp};(n_FJ&UN3<&Ur1QK_Ti z49YQ4*)LcBBge({P?L#S4dN!|F2x>(xD%#Qn_>yGvo6K!VId+`!vYcxTI=OliHWB@ zk~%J4AZ+lTbok01JvZ=7{Gm=N>HeT)kmZiFF0^cqDnHo0#{$~y(kUL$c9#kveeO~* zq;CQ7DR$(oI@C2CQ|a3il*3ehn(tOTNQ$ k@lq7N9~$8`<78?msopJGRZwG14X@NOZdKP0^WXjd00|usCIA2c diff --git a/zapple2.po b/zapple2.po index ab93e3133dc5ce75733e5175e5e4cf15d580a142..36e8545e8313ff6785c05024679b0894a0395a33 100644 GIT binary patch delta 664 zcmZvZ&ubGw6vy8-J85bNx((zIwPX`SsTg$-52ZxBNWJ(6*r=^PFP=nb{gteEXdA)I zPO{yj;H@C&$%rV_38`*ikO(RWDnU|%p!HM)apK!FxfBoI;rrS5oi{sgEQ?weef&%h zYXN|-ux)a;7PwQ>=W4o!8bAe5dZnh5lSS>On<$fHeoTket>ZKcnIrTR(9=NA0G$Fl z4fHI~b3o4ny#Vwg&`Ti8Oz!0h>Ybvz%B!8?iE9d8ry@CZ{Vii^>LX+C6EoFYOs+8V zHncu9V-N&CRDaI=Sfc)fNp4pkF!_t&nn}dbm=;{|T4u;;{cSc!z)PiaYD}!UkIH1H z`I~u46KOjn+x87Q=wRzs?VUN{Bx7JAHryX&vORyu_EbPjZjNQ4A7gU-UgKp`_mnQC zF-*k#=J4hJgoDEF#=Ow10&ySxnvFd)vDCGm8W0t9hu3WUKP&`9wOc^KgBpF06(T@E`BWjRP5oYXrvnD8SpY4&p7Uw>$WufX|Hpi{`6>H$tU0&wRD$A zkM?&d+@k{}ztM!VF)aCT0dKI(P0(;A@=akh2ATy!Nh1b$$X$+?dc`Fv7$4l+B8eMc zxJ)m2_yOMscNpK@rA0Ct9f`=5c_Rz*XhFfU+)*;JbHgq{1yO^j5NZgur84Y>f42Vt DM&m3w delta 604 zcmZvZPiPZC6o=m?JL%R?a3e%)MY3H%FxX;14@H8fS}&ppFIvz;D;^4h1zTH8S3DFW zn3-+Y0X_HRMf6aqMR3-Dvp5u`78IleS=5Vn!A|;iNiN01Z}xrjKIY$gUd8h&FV@U_ z0RVo${;S6d@StffHcbPQ!DKP!YSScF8pcIlS|)=F>LyifrXgxK)R-T(8yD_s_~7={ z^xWqOs;_^Wpj)Mx@Df!|sdFFV@2w)_AdwYR9ku+D!6ec?}5 z1zBxN`+VR;OvTCbM}9&Z9Xhd;&}N5*Qu^AV;gq%$;