From e57a7f8de8d8aeb0a3dac424e7cd5294b99518c3 Mon Sep 17 00:00:00 2001 From: Matt Harlum Date: Thu, 17 Jul 2025 05:13:30 +0000 Subject: [PATCH] scsi direct: * Fixup inquiry size check - we only use 36 bytes * Support Test Unit Ready (needed for HDToolbox in 3.2) --- examples/spisd/bootrom/sfsd.rom | Bin 32768 -> 32768 bytes examples/spisd/scsidirect.c | 6 +++++- examples/spisd/scsidirect.h | 1 + examples/spisd/sfsd.device | Bin 10796 -> 10800 bytes examples/spisd/spisd.device | Bin 11396 -> 11400 bytes 5 files changed, 6 insertions(+), 1 deletion(-) diff --git a/examples/spisd/bootrom/sfsd.rom b/examples/spisd/bootrom/sfsd.rom index 87acc717db5f4c5853ab073d63f0bde27c41eb2e..eaee0bb0382d07f93bceee7b6193665065124908 100755 GIT binary patch delta 898 zcmaJ=&ubGw6n?W!<2G#Cq-}m|sO;)ycR~}pK_uj`l_XXvX-Ps6QK*nw$(CB|Dyar3 zbPXaZ(#!e>c<`X&p}0~MyeW86L`n@F6a}LeC6|KIrp3vRqG;)1-uK?T@4asxGo$O2 zu2TyateR%wruMD_6?1OZwpoFnm%& zsV4w}z9<8uw%2^NWZZO#Lj$Rqdgj2`our<#Xpp7r@qo5TGUraD2fu{*%(F(t_Wg2O z{i?1#c0FDJyGGS}=ti#__lFo6HlQQdPBPTiIkE~r4K%L+P*CHFq4?WI74iP!8T0NJ zLTFI|CdZI{?^b;t$Xwn(a~TDXjCA9!X9!IgtDbSTbYcIpE?ec+G1yFI(n%QS8#5T1 z_c|&WYhI36ANvwbm|xj(3i-|9o=enRR4H@^rh)fQK|q=WM(RBD9k_&ZXa!sem!nIK zE+{~&3b8g7;32_I6;K~RAHfJgkzhN)fSM(?m$2Ss0fiFxflfGy7tp{F1j~8o3IH^u3u_+-7&>FtI8V=HxbL}p~$7_85-G2k-ktkjIF z&Dhc*&h*(2uFp2Fz*lfZ~5PeQSpknDk;)c?7(i!<1mim e7#_qUcoZMUIh@D0@ndOOTEkO#!SsbcrGEo{Veg9o delta 898 zcmah{T}TvB6h3!cr%`8hU3c9bk!Ess=MIB4i%9e^#=0iND!cn2Q4htMvLhNe$yOo@ zPD?>aL@=*C^bk?tgD@flJ_JGaP!O`%TaolDl|4ksrqbQnT?&$VxZiiqJ>NO!o_nup zQl?2QT%ena0N^3(FhI>mfV!f6g}#W;pk2>=u0>DnP4`KJ#_VHF0h%vlxq{ih0jv-= zP~tv-m|IeT)f-DTSFo=6!voR8IVTbsz8yC+E(6kx<427h5;=P!dGvimNIfiP>|QTZ zt+(ah=g#$RfZL#)8aYd8#XT~s!ZtKz8cBqzo+GUZlfVcX00kv&SnhpM&LY+yI_rAt zV^LnxfX%REKUmGr0+}oLdoF7_prV|0H!y%kt#5%5u5i9<)l_MMEVKWjaY-kGxAgo&XmxX@ECvmkGW!Aff=%5f#RPQtSSq zU*!6MCmHkqZS8cPt(NjdDy^AH>v5;h=w-;?o?LBY%aDcLJ}|LZ4?DsKHm7R{Du{T4>&b6803scsi_Length < sizeof(struct SCSI_Inquiry)) { + if (cmd->scsi_Length < 36) { return IOERR_BADLENGTH; } @@ -180,6 +180,10 @@ void process_scsi_direct(struct IOStdReq *ior) cmd->scsi_Status = 0; switch (cdb[0]) { + case SCSI_CMD_TEST_UNIT_READY: + cmd->scsi_Actual = 0; + ior->io_Error = 0; + break; case SCSI_CMD_READ_6: { struct SCSI_CDB_6 *cdb6 = (struct SCSI_CDB_6 *)cdb; diff --git a/examples/spisd/scsidirect.h b/examples/spisd/scsidirect.h index 206318b..dd3a879 100644 --- a/examples/spisd/scsidirect.h +++ b/examples/spisd/scsidirect.h @@ -1,6 +1,7 @@ #ifndef SCSIDIRECT_H_ #define SCSIDIRECT_H_ +#define SCSI_CMD_TEST_UNIT_READY 0x00 #define SCSI_CMD_READ_6 0x08 #define SCSI_CMD_WRITE_6 0x0A #define SCSI_CMD_READ_10 0x28 diff --git a/examples/spisd/sfsd.device b/examples/spisd/sfsd.device index 8af2642d6df7be3f3306264c4beb749187b8dc60..3f0769941c21ab0e9f04c66f0dde04bf97e2eec7 100755 GIT binary patch delta 893 zcmaJ=O=uHA6n?W!({0%%yJ^#Qi?UlcyA#dQ4I(9nt+cU9NhJxT2L*-HNVdd6V@V}Q zp=*$$J&3S9h_pf5U6&Kw!O7covQHxk4iBCNLwKx%jn=rBh-e+Jk9IL5&f0F-4v z-_JsG0H{wh`FwV&>2jmP=DnL8;VJmD(03n*;@m9_IVroA{NOq;V$?vf zy8u#lSp`OKuh@Lq^gF!6q1b6F5*WQ6&8KY!q-e_z89O9$>S%oEQ$S2StY++9FI}%U z@91gEhS#CZpsX5M^Qi;(D~t-;;7GTV2vt8vN)xAn7Bv70Dq61+epSsP)*m`^Kl@lx zmNj6~4B2 zEVrlutp^FV=m0keb2^}2!rg>@guR3*!it_G=p(8}DL|qDtPgB6!1(}W*bg@|(CGu} zZLv_WtcF6aAcj>?Y1LLaZO7R-c|GzjEqDrSK&JrScV8g*+JJx$=-!Yx36$FW5B(B9 z2m;Ai_-|{gbFN;hGf-x?LP#SAZIMqiL0&c&FRhgkmMGN4L8k0Ki9Si(r|oFBJ>FFfZfv zwkPf%e1tc|cQ}fVn?>b&e^81@2`M8LJ&I?}v+C{h=DpwKgK_~gn8SOqANOGmAI33! Y1SjzcY~XpkB)^n5@C05k@9&%W1?#%%WB>pF diff --git a/examples/spisd/spisd.device b/examples/spisd/spisd.device index b320e3a5046eadffaac41a49e8835a69ac04d3b8..2dd2e4f90dfe30b3151db63a82e605aaa0a98022 100755 GIT binary patch delta 1015 zcmaJ>ehkL$r?)|>=-NU_?T8CPP zi(MuF6!EnWAmbxIj(JDDh|ofO3VqH*L-En~hFNjrRel ze?|j)*pbSmgjJD88YUWhQk7!1O@;=g(Z0$E6{^6?8SApmp8VE+u-aUkqqjT4o#k3N<%{pk3aW!E(B< zpoDe9?d5US{R{=;L;39j!tvF@^FqI0j~1xiAmc7jX(!mJ`@kxA1FnWoP#7q5=7;^a zbr8ckk2zt0yBytNK$RRzIM#3^9333hu)$+FXFWFnRRpF$47hlvn&9+-?Hss$fFjQ2 zn-M7Rf$;WfEEefcr5Ul9T&IC1Y8k0J=SQ3P8}ir5A)R0Y(EwPH4uY5Cq6t+#5X)-i z(;#R&wo%+mE2g(G=idGQnio{1&Be5N=X#@)TO0q!*4NoJnqA9jgP(m;EqI%o44ST! z>AGm6UUN#jHV9c#AOADnPz89ywvq=R9DbwkZ0w0AC090Ti91TenMk&JDMQ27IK9mO zJ!ZQz`sXE(LQ+&-p-I|Edm#V_+)yNrLp_)xc8W#WARA$mY?>{wMK!3lSntZ0_l(n7I!BinFp)W#%v4s-TG&Ij!oIK{ bs!i3^qv{E@OO4WDI?ak$4LfcneM7$iA#)C} delta 1009 zcmah{O=uHA6n?W!+cl;p*`_gDirKoeGiwNLi9tkGv9U@?CFwzgN|cnAL~0>xi6TKv z4Hcqzkgf-jA|fIx9<-5wA|6y!3PKN|iie7#_(R2uNI@-5{!mc#uVHtp_rx7MNeAGdqK$Pwt7XN0*O_Y_ zkL6fV2V26%_C59dG_bxrzxpygP7MXkUS}WbG0!-M#L}U_+_=`HH4eg3xIY?(A*tGf z=@3q!l6g+>vUo>$ih2t9)*%l03kz)-F01Pqmzn}hMnT2AhPLp8aRMITc=iUX1iaQMJ727(Vz+VS>k z8eBf$UY*S4DyxQEHYas!pz)feeB0K;QTBT5U95CJSb&cMylFqq;=BP}KHyhxkw$>i zmiR))nV$y_Bn~X3f{EM=FJe|8D$;TCb?rYc_59Abgt;w}7`l8Yfl$ z-BRQ3D*xfB@g`9`!e+%A_JcRsByDxv1#ZVnT`y1Kbi1<|MG8V^vJrKd8A8!1^CCIU zMqZ_B8nRD3i(*JLq}ODTgvl6$0D%B*{yc041I{;d@_IQU8*)a@$&>O0`I