📄 ram_dsk.c
字号:
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x52, 0x61, 0x6d, 0x20, 0x64, 0x72,
0x69, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x20, 0x54, 0x68, 0x69,
0x73, 0x20, 0x69, 0x73, 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x20, 0x0d, 0x0a, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x49, 0x41, 0x52,
0x20, 0x4c, 0x50, 0x43, 0x2d, 0x32, 0x31, 0x34, 0x78, 0x20, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x20,
0x77, 0x69, 0x74, 0x68, 0x20, 0x4c, 0x50, 0x43, 0x32, 0x31, 0x34, 0x38, 0x2e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
#pragma data_alignment=4
__no_init Int8U RamDisk[RAM_DSK_BLOCK_SIZE * RAM_DSK_BLOCK_NUMB];
DiskStatus_t RamDskStatus;
/*************************************************************************
* Function Name: RamDiskInit
* Parameters: none
*
* Return: none
*
* Description: Init RAM disk
*
*************************************************************************/
void RamDiskInit (void)
{
RamDskStatus.BlockNumb = RAM_DSK_BLOCK_NUMB;
RamDskStatus.BlockSize = RAM_DSK_BLOCK_SIZE;
RamDskStatus.DiskStatus = DiskCommandPass;
RamDskStatus.DiskType = DiskUnknow;
RamDskStatus.WriteProtect = FALSE;
RamDskStatus.MediaChanged = TRUE;
memcpy(RamDisk,RamDiskInitData, sizeof(RamDiskInitData));
}
/*************************************************************************
* Function Name: RamDiskInfo
* Parameters: pInt8U pData, DiskInfoType_t DiskInfoType
*
* Return: Int32U
*
* Description: Return pointer to Info stucture of the disk
* (Inquiry or Format capacity)
*
*************************************************************************/
Int32U RamDiskInfo (pInt8U pData, DiskInfoType_t DiskInfoType)
{
switch (DiskInfoType)
{
case DiskInquiry:
memcpy(pData,RamDskInquiry,SizeOfInquiryDescRamDsk);
return(SizeOfInquiryDescRamDsk);
case DiskFormatCapacity:
memcpy(pData,RamDskFormatCapacity,SizeOfFormatCapacityRamDsk);
return(SizeOfFormatCapacityRamDsk);
}
return(0);
}
/*************************************************************************
* Function Name: RamDiskStatus
* Parameters: void
*
* Return: pDiskStatus_t
*
* Description: Return pointer to status stucture of the disk
*
*************************************************************************/
pDiskStatus_t RamDiskStatus (void)
{
return(&RamDskStatus);
}
/*************************************************************************
* Function Name: RamDiskIO
* Parameters: pInt8U pData,Int32U BlockStart,
* Int32U BlockNum, DiskIoRequest_t IoRequest
*
* Return: DiskStatusCode_t
*
* Description: Ram disk I/O
*
*************************************************************************/
DiskStatusCode_t RamDiskIO (pInt8U pData,Int32U BlockStart,
Int32U BlockNum, DiskIoRequest_t IoRequest)
{
if((pData == NULL) || (BlockStart+BlockNum > RAM_DSK_BLOCK_NUMB))
{
return(DiskParametersError);
}
switch (IoRequest)
{
case DiskWrite:
memcpy(RamDisk+(BlockStart*RAM_DSK_BLOCK_SIZE),pData,BlockNum*RAM_DSK_BLOCK_SIZE);
break;
case DiskRead:
memcpy(pData,RamDisk+(BlockStart*RAM_DSK_BLOCK_SIZE),BlockNum*RAM_DSK_BLOCK_SIZE);
break;
case DiskVerify:
if(memcmp(RamDisk+(BlockStart*RAM_DSK_BLOCK_SIZE),pData,BlockNum*RAM_DSK_BLOCK_SIZE))
{
return(DiskMiscompareError);
}
break;
default:
return(DiskParametersError);
}
return(DiskCommandPass);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -