From e16aa4c1c58a30553d22a970b2eb262d4438c7e6 Mon Sep 17 00:00:00 2001 From: Matthieu Bucchianeri Date: Sun, 16 Feb 2025 14:43:42 -0800 Subject: [PATCH] Update XTSD to use MOVSW. --- XTMax/Drivers/SDPP/DRIVER.C | 10 ++----- XTMax/Drivers/SDPP/MAKEFILE | 9 +----- XTMax/Drivers/SDPP/SDMM.C | 57 ++++++++++-------------------------- XTMax/Drivers/XTSD.SYS | Bin 7624 -> 7610 bytes XTMax/Drivers/XTSD186.SYS | Bin 7457 -> 0 bytes 5 files changed, 19 insertions(+), 57 deletions(-) delete mode 100644 XTMax/Drivers/XTSD186.SYS diff --git a/XTMax/Drivers/SDPP/DRIVER.C b/XTMax/Drivers/SDPP/DRIVER.C index 8413779..e7dda43 100644 --- a/XTMax/Drivers/SDPP/DRIVER.C +++ b/XTMax/Drivers/SDPP/DRIVER.C @@ -365,14 +365,8 @@ PUBLIC void Initialize (rh_init_t far *rh) WORD brkadr, reboot[2]; int status, i; /* The version number is sneakily stored in the device header! */ - cdprintf("SD Card driver V%c.%c for XTMax (%s)\n based on SD pport device driver (C) 2014 by Dan Marks\n based on TU58 by Robert Armstrong\n", - header.name[6], header.name[7], -#ifdef USE186 - "80186+" -#else - "8086" -#endif - ); + cdprintf("SD Card driver V%c.%c for XTMax\n based on SD pport device driver (C) 2014 by Dan Marks\n based on TU58 by Robert Armstrong\n", + header.name[6], header.name[7]); /* Parse the options from the CONFIG.SYS file, if any... */ if (!parse_options((char far *) rh->bpbtbl)) { diff --git a/XTMax/Drivers/SDPP/MAKEFILE b/XTMax/Drivers/SDPP/MAKEFILE index cca5661..5a88135 100644 --- a/XTMax/Drivers/SDPP/MAKEFILE +++ b/XTMax/Drivers/SDPP/MAKEFILE @@ -5,7 +5,7 @@ ASM=tasm -mx DEPS=cprint.c driver.c sd.c sdmm.c cprint.h diskio.h driver.h integer.h sd.h standard.h -all: xtsd.sys xtsd186.sys +all: xtsd.sys .asm.obj: $(ASM) $* @@ -17,13 +17,6 @@ xtsd.sys: header.obj $(DEPS) $(CC) driver.c tlink -t -m -s -n header cprint sd sdmm driver, $@ -xtsd186.sys: header.obj $(DEPS) - $(CC) -1 -DUSE186 cprint.c - $(CC) -1 -DUSE186 sd.c - $(CC) -1 -DUSE186 sdmm.c - $(CC) -1 -DUSE186 driver.c - tlink -t -m -s -n header cprint sd sdmm driver, $@ - clean: del *.obj del *.map diff --git a/XTMax/Drivers/SDPP/SDMM.C b/XTMax/Drivers/SDPP/SDMM.C index c63309f..83ff06c 100644 --- a/XTMax/Drivers/SDPP/SDMM.C +++ b/XTMax/Drivers/SDPP/SDMM.C @@ -27,8 +27,9 @@ /* Platform dependent macros and functions needed to be modified */ /*-------------------------------------------------------------------------*/ +DWORD VIRT_BUFFER=0xCE000000+2048; WORD DATAPORT=0x280; -WORD CONTROLPORT=0x282; +WORD CONTROLPORT=0x280+1; #if 1 #define TOUTCHR(x) @@ -177,30 +178,17 @@ void xmit_mmc ( // NOTE: Callers always use buffer sizes multiple of two. bc >>= 1; -#ifndef USE186 _asm { mov cx,bc - mov dx,DATAPORT push ds + push es + les di,VIRT_BUFFER lds si,dword ptr buff - } - repeat: - _asm { - lodsw - out dx, ax - loop repeat + cld + rep movsw + pop es pop ds } -#else - _asm { - mov cx,bc - mov dx,DATAPORT - push ds - lds si,dword ptr buff - rep outsw - pop ds - } -#endif } @@ -218,30 +206,17 @@ void rcvr_mmc ( // NOTE: Callers always use buffer sizes multiple of two. bc >>= 1; -#ifndef USE186 _asm { mov cx,bc - mov dx,DATAPORT + push ds push es les di,dword ptr buff - } - repeat: - _asm { - in ax, dx - stosw - loop repeat + lds si,VIRT_BUFFER + cld + rep movsw pop es + pop ds } -#else - _asm { - mov cx,bc - mov dx,DATAPORT - push es - les di,dword ptr buff - rep insw - pop es - } -#endif } /*-----------------------------------------------------------------------*/ @@ -254,11 +229,11 @@ int wait_ready (void) /* 1:OK, 0:Timeout */ BYTE d; UINT tmr; - outp(DATAPORT+15, 50); + outp(DATAPORT+7, 50); do { /* Wait for ready in timeout of 500ms */ d = inp(DATAPORT); if (d == 0xFF) break; - } while(!inp(DATAPORT+15)); + } while(!inp(DATAPORT+7)); return d == 0xFF; } @@ -309,11 +284,11 @@ int rcvr_datablock ( /* 1:OK, 0:Failed */ UINT tmr; - outp(DATAPORT+15, 10); + outp(DATAPORT+7, 10); do { /* Wait for data packet in timeout of 100ms */ d = inp(DATAPORT); if (d != 0xFF) break; - } while(!inp(DATAPORT+15)); + } while(!inp(DATAPORT+7)); if (d != 0xFE) { return 0; /* If not valid data token, return with error */ } diff --git a/XTMax/Drivers/XTSD.SYS b/XTMax/Drivers/XTSD.SYS index 3333084d73f169e4de9c96bf58551243d71b2c52..f8ac3d2992cb42e7eb1bc72ebb99dbcaf95a5d32 100644 GIT binary patch delta 1851 zcmaJ>4Qx|Y6u$4Z@9nL9>(91!e{Er6HxN^oF>Be}vW>0-8Te#l;}JG6F_@sDkhLVb zjBdq9+hvJd#TXN8F$NS9t6SoYQ8L{hvP@izIwb@H!IZpFH2gZop69&|T-4Z`dwaj{ zeD~aQ&$;)Vs`|VtQ-nE#s(fBz1%z#<*DAQKUd01E2 zQO3CX*m7pV!3xb!ZE9=XJnQPSx*1ovq=M<2=>I-iQqSFq*K$+IbkhvKSA+V`&befF zIRir(BRd{Pv#x$+QM9CD;25W&y&hJG__RXuRW>xj>xVkE35`_QQ{(0~e+YA0a>ZX_ zoieI!L4I9N&2H9L=clEdc;7ve@2QF4l+JGH){2qu2GIu;@@p=?La9#s@lyRp%7b6j zAKJf$4g2PMy5|wyNlVsoEuv!$>_IOb_pxEGCe)=teumtYr59prfo6hT4DxHoybK** z2Ld*}9!4(I#UZ~jzLkwyw*bxyw^$^7)XR-~^AHMqEwK%-Ru|t0Hho-xF)O|aM&q~_ z2l)o-M?A(qLe=A&d@1!4c4QrCZJXN7MK^K|cBG~pjRv%H*WS-qvc02ycyn}Sk+EAl z>Mlo%jZv!`g}%;6l&6&0Ok_HENA5H%u$VU#dOavXrBp{zE6hyiU8ry(QS^T`Ql&ZvU7%MDlV8m1^B%in|p41_UQ|#xAwNwH-Ocm5=+-!1D zO}N*zm8!+(OpoPwxF8e`?gNtO1a;7N>u4n|H9IXH4hjwxv64&#q407*mmI@Sn~(pe zB@;WcYbnpb_UvAYYQPtAc0N#xP-o6ahqffrNDU%^)FUBTenS)&C?VN|cjYd%{8P3K zWWVEgbNBAQ#jhHYmP@l^Y#ovbjU-!o#vv)2Xpxj9kWLV{UKd5eqxRu%_@DVn{tSPS zhXTjy&>+$e!G&%j*+__0a>D(MSKfjos#aUDM%kYuN5E0mbv3r}Mh)Ks*;s2;wnO(6 zCqXfDO-#sYWkWN%*0!|iLB+4U&j8&7JsW!Ny)*v+i$25CmR{T5oA3t1zS&UsEb3gH zUa1p^krI*xIACpeDslXutCgU93*WZ-ZLi%}D=Yy&W@ftOzK32eb_Yy=t0(4Y06(jN`fHzg(M6!DsB9lNIxB}^r-7A18MdSi7 qd(%uAFfK%H1G8gbm2DXXH?+-OW;8HDGGj&*B|hSthtJMod--1$W55Og delta 1790 zcmZuxdu$VR9RJ<*?zpwb+HQUA&BJc+PaTgOWo*qRWn}U?#$IP+TNY!CQ9`sWB;p>_ zn5~^e`2|UgVv8m!hGekC{DP58Hkf9jEc-)5^bZp7$aP)N0db6--@9%=)c(@n{XU=X z>-T-!o!j)?rYsG9!>EC8doOGCl5YAiO`&UNs$QnqWvjfeug0IzFEIXczc^?%i7c*W z&CL=Y;Cy|>BJ1nt{Oou!C+*o?-`vzV>+5$_vcA633budz$Yi{u^-L)j_5}5(u%?3yonA5I4M@kNJc4Y{CL7}ke_8XMpv=`ef zJE;I}vmEWJ;#(aKE$Fh zb1BHu$z7npC3nNlM-TBRY)!UvaaSu~cVB~3wZwz`SkR47U(lJ@1GeU51IR4NCfJuI zTVS`21@V4i3v~s5B|J@4;#)!)HG#92p6Hs`$H#Z_ao1W@d@;hDp1v_x(z9uZSoR)N7XEFtcu0^~YL`>&HgY z-JSfyke47@(juG|VU)k;GluxR#+jCScp0sVq4e;I2PM8u%bAalty?;`~MRu<< zz{40opIjsh!Bqq;Vpe{@&Gyg#S7ODEoN6jC*qC#eqPF3yxi7A$L@1Oy+RBv1wo*e# zA^{{R{=2fgKuJnHZg(tm{#&gD)b8P9j@P>G2vC_->g*-13TcE!YGLNYBQ=LGNL?zC z{h<8(j4TrYDmo%e3S+|e!fyg}K2e4ACc>C+Cpkz;RP)lKz-#V95e;c!cR-KNlMldA z?u>D_v8^Vd2deRuOAm(@HO_&?pMS{%n$fyw%G}fpB7DkO!cKtb8~mg5aN)sw@c#AH z&PF?DQD|ev)GQGTB`GEN71v&vTHT-w@JBf93Kza}_X&g2M+P0BAmA?d7BINz_Oe}o zKg84S0%{$$cv{#Iz$@`fo)R~0)7Omk7pwk+#G@%%zt;&*5eqYyT$$;+eO#2fP>4V9qv^E6asw3RD`&HL@-GSJM=_K*z}#e1$xyGme<>&9dN)uM~Tt0 zY&6C~>?TQBHZ9-&mLdw?mtQF9jj~D&uHtM`4zj5@-Ub znAG>-eS)`&d<^QR@wNQrn``)fZZkiSH{>n8*fe)}c}d2jM-yv!P29|DkvT0gPtJfr zI|MXmX2>;!*c!;;CeU>_P*BtbmxB-H4MbS@3KyqkP0T^W0q2~wEGHaB#$^Ca05#Ex zNF{)KQy_C2vONI*0H}!`L^=RmGeABf2LN2w6$=f;7{K#}tO$`LfHOMSCYB&_7SN}L zXgMMy0FE2Li!^a1B9lP8Jq6{^#MQu*A)){i$}r`?_z;-~ren}sxRQdot1BwEI#@}` SO3AV+#A@eHR^#5Hwf_JL4yKd< diff --git a/XTMax/Drivers/XTSD186.SYS b/XTMax/Drivers/XTSD186.SYS deleted file mode 100644 index 60470681505aab723a79fdd056bb80f987e05699..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7457 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