// Copyright (C) 2016 Michael McMaster // // This file is part of SCSI2SD. // // SCSI2SD is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // SCSI2SD is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with SCSI2SD. If not, see . #include "scsi.h" #include "vendor.h" // Callback after the DATA OUT phase is complete. static void doAssignDiskParameters(void) { scsiDev.phase = STATUS; } int scsiVendorCommand() { int commandHandled = 1; uint8_t command = scsiDev.cdb[0]; if (command == 0xC0) { // Define flexible disk format // OMTI-5204 controller // http://bitsavers.informatik.uni-stuttgart.de/pdf/sms/OMTI_5x00.pdf // Stub. Sectors-per-track should be configured by scsi2sd-util } else if (command == 0xC2) { // Assign Disk Parameters command // OMTI-5204 controller // http://bitsavers.informatik.uni-stuttgart.de/pdf/sms/OMTI_5x00.pdf // Stub to read and discard 10 bytes. scsiDev.dataLen = 10; scsiDev.phase = DATA_OUT; scsiDev.postDataOutHook = doAssignDiskParameters; } else { commandHandled = 0; } return commandHandled; }