diff --git a/software/SCSI2SD/src/config.c b/software/SCSI2SD/src/config.c index ddc146a..2d4c628 100755 --- a/software/SCSI2SD/src/config.c +++ b/software/SCSI2SD/src/config.c @@ -67,7 +67,7 @@ static int usbReady; static void initBoardConfig(S2S_BoardConfig* config) { memcpy( config, - ( + (const void*)( CY_FLASH_BASE + (CY_FLASH_SIZEOF_ARRAY * (size_t) SCSI_CONFIG_ARRAY) + (CY_FLASH_SIZEOF_ROW * SCSI_CONFIG_BOARD_ROW) @@ -472,7 +472,7 @@ void debugPoll() dbgHidBuffer[61] = sdCard.capacity; dbgHidBuffer[62] = FIRMWARE_VERSION >> 8; - dbgHidBuffer[63] = FIRMWARE_VERSION; + dbgHidBuffer[63] = FIRMWARE_VERSION & 0xFF; USBFS_LoadInEP(USB_EP_DEBUG, (uint8 *)&dbgHidBuffer, sizeof(dbgHidBuffer)); usbDebugEpState = USB_DATA_SENT; diff --git a/software/SCSI2SD/src/disk.c b/software/SCSI2SD/src/disk.c index 48f5890..9fbeeba 100755 --- a/software/SCSI2SD/src/disk.c +++ b/software/SCSI2SD/src/disk.c @@ -576,8 +576,14 @@ void scsiDiskPoll() // Wait for the next DMA interrupt. It's beneficial to halt the // processor to give the DMA controller more memory bandwidth to // work with. - int scsiBusy = 1; - int sdBusy = 1; + int scsiBusy; + int sdBusy; + { + uint8_t intr = CyEnterCriticalSection(); + scsiBusy = scsiDMABusy(); + sdBusy = isSDDevice && sdDMABusy(); + CyExitCriticalSection(intr); + } while (scsiBusy && sdBusy && isSDDevice) { uint8_t intr = CyEnterCriticalSection(); diff --git a/software/SCSI2SD/src/flash.c b/software/SCSI2SD/src/flash.c index 0e6ba95..44b0280 100644 --- a/software/SCSI2SD/src/flash.c +++ b/software/SCSI2SD/src/flash.c @@ -47,7 +47,7 @@ static void spiFlash_erase(S2S_Device* dev, uint32_t sectorNumber, uint32_t coun static void spiFlash_read(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, uint8_t* buffer); static void spiFlash_readAsync(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, uint8_t* buffer); static int spiFlash_readAsyncPoll(S2S_Device* dev); -static void spiFlash_write(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, uint8_t* buffer); +static void spiFlash_write(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, const uint8_t* buffer); SpiFlash spiFlash = { { @@ -298,7 +298,7 @@ static void spiFlash_erase(S2S_Device* dev, uint32_t sectorNumber, uint32_t coun nNOR_CS_Write(1); // Deselect } -static void spiFlash_write(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, uint8_t* buffer) +static void spiFlash_write(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, const uint8_t* buffer) { // SpiFlash* spiFlash = (SpiFlash*)dev; diff --git a/software/SCSI2SD/src/main.c b/software/SCSI2SD/src/main.c index b9a6215..cead0c7 100755 --- a/software/SCSI2SD/src/main.c +++ b/software/SCSI2SD/src/main.c @@ -24,7 +24,7 @@ #include "time.h" #include "trace.h" -const char* Notice = "Copyright (C) 2015-2018 Michael McMaster "; +const char* Notice = "Copyright (C) 2015-2021 Michael McMaster "; int main() { diff --git a/software/SCSI2SD/src/scsiPhy.c b/software/SCSI2SD/src/scsiPhy.c index 46f6653..0ba494a 100755 --- a/software/SCSI2SD/src/scsiPhy.c +++ b/software/SCSI2SD/src/scsiPhy.c @@ -309,11 +309,11 @@ doTxSingleDMA(const uint8* data, uint32 count) } void -scsiWriteDMA(const uint8* data, uint32 count) +scsiWriteDMA(const uint8_t* data, uint32 count) { dmaSentCount = 0; dmaTotalCount = count; - dmaBuffer = data; + dmaBuffer = (uint8_t*) data; uint32_t singleCount = (count > MAX_DMA_BYTES) ? MAX_DMA_BYTES : count; doTxSingleDMA(data, singleCount); diff --git a/software/SCSI2SD/src/sd.c b/software/SCSI2SD/src/sd.c index 7bf25fc..279499b 100755 --- a/software/SCSI2SD/src/sd.c +++ b/software/SCSI2SD/src/sd.c @@ -38,7 +38,7 @@ static void sd_erase(S2S_Device* dev, uint32_t sectorNumber, uint32_t count); static void sd_read(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, uint8_t* buffer); static void sd_readAsync(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, uint8_t* buffer); static int sd_readAsyncPoll(S2S_Device* dev); -static void sd_write(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, uint8_t* buffer); +static void sd_write(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, const uint8_t* buffer); // Global @@ -1139,7 +1139,7 @@ static int sd_readAsyncPoll(S2S_Device* dev) } -static void sd_write(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, uint8_t* buffer) +static void sd_write(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, const uint8_t* buffer) { // TODO } diff --git a/software/SCSI2SD/src/storedevice.h b/software/SCSI2SD/src/storedevice.h index e66c640..90ad86d 100644 --- a/software/SCSI2SD/src/storedevice.h +++ b/software/SCSI2SD/src/storedevice.h @@ -80,7 +80,7 @@ struct S2S_DeviceStruct void (*read)(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, uint8_t* buffer); void (*readAsync)(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, uint8_t* buffer); int (*readAsyncPoll)(S2S_Device* dev); - void (*write)(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, uint8_t* buffer); + void (*write)(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, const uint8_t* buffer); MEDIA_STATE mediaState; CONFIG_STOREDEVICE deviceType; diff --git a/software/SCSI2SD/v5.2/SCSI2SD.cydsn/SCSI2SD.cyfit b/software/SCSI2SD/v5.2/SCSI2SD.cydsn/SCSI2SD.cyfit index 944974d..9765968 100644 Binary files a/software/SCSI2SD/v5.2/SCSI2SD.cydsn/SCSI2SD.cyfit and b/software/SCSI2SD/v5.2/SCSI2SD.cydsn/SCSI2SD.cyfit differ