Re: [hatari-devel] bugreport: ACSI-diskimage access - bogus/bouncing command byte |
[ Thread Index | Date Index | More lists.tuxfamily.org/hatari-devel Archives ]
Hi, I attach diff -u and second the complete (changed) hdc.c Martin Am 17.07.20 um 17:58 schrieb Eero Tamminen: > The preferred diff format is unified one which > gives context for the changes, so that there's > a bit larger chance that it will get applied to > correct place. > > You can get that either with: > > * "diff -u <old file> <new file>", or >
--- hdc.c.original 2019-02-08 09:30:11.000000000 +0100 +++ hdc.c.bugfix 2020-07-17 16:05:37.595296685 +0200 @@ -26,6 +26,7 @@ #include "tos.h" #include "statusbar.h" +#define FIX_BYTECOUNT_BUG 1 // 2020-07-17 Martin van der Koelen /* ACSI emulation: @@ -960,9 +961,19 @@ ctr->command[ctr->byteCount] = b; ++ctr->byteCount; + // vdk: 2020-07-15: + // encountered bogus/superfluous command byte, but A1 still 1 + // -> so reset byteCount only if A1 is cleared to 0 (not here!) and + // drain the garbage ... + /* have we received a complete 6-byte class 0 or 10-byte class 1 packet yet? */ + #if FIX_BYTECOUNT_BUG + if ((ctr->byteCount == 6 && ctr->opcode < 0x20) || + (ctr->byteCount == 10 && ctr->opcode >= 0x20 && ctr->opcode < 0x60)) + #else // original: if ((ctr->opcode < 0x20 && ctr->byteCount >= 6) || (ctr->opcode < 0x60 && ctr->byteCount >= 10)) + #endif { /* We currently only support LUN 0, however INQUIRY must * always be handled, see SCSI standard */ @@ -987,8 +998,12 @@ ctr->status = HD_STATUS_ERROR; } } - - ctr->byteCount = 0; + #if FIX_BYTECOUNT_BUG + // Dont reset byteCount here! + // => only in Acsi_WriteCommandByte() if A1 is set to zero + #else + ctr->byteCount = 0; + #endif } else if (ctr->opcode >= 0x60) {
Attachment:
hdc.c.bugfix.gz
Description: application/gzip
Mail converted by MHonArc 2.6.19+ | http://listengine.tuxfamily.org/ |