📄 rtfsinit.c
字号:
/*
* EBS - RTFS (Real Time File Manager)
*
* Copyright EBS inc, 1996
* All rights reserved.
* This code may not be redistributed in source or linkable object form
* without the consent of its author.
*/
#include "pcdisk.h"
/* This is used only in this file set it to 0 if you don't want to
print the names of the drivers as they are mounted */
#define PRINT_DEVNAMES 1
#define SUPPORTS_CONSOLE 1
#if (PRINT_DEVNAMES)
char *dev_name[NDRIVES];
#define SAVE_NAME(LOGIGAL_DRIVE_NUMBER,STRING) dev_name[LOGIGAL_DRIVE_NUMBER] = STRING;
#endif
BOOLEAN pc_ertfs_init(void)
{
int j;
DDRIVE *pdr;
int lock_unit = 0;
word logical_drive_number;
if (!pc_memory_init())
return(FALSE);
#if (PRINT_DEVNAMES)
for (j = 0; j < NDRIVES; j++, pdr++)
dev_name[j] = 0;
#endif
pdr = mem_drives_structures;
/* Increment the lock unit to the first IDE controller */
lock_unit += 1;
/* IO addresses and interrupts used for ATA devices */
/* Primary Secondary Tertiary Quaternary
* 0x01f0 0x0170 0x01e8 0x0168
* 0x03f6 0x0376 0x03ee 0x036e
* 14 15 11 10
* Note: -1 for interrupts means used polled
*/
/* Note: We automatically set IDE to C: if USE_ATA is defined.
This is just just a convenience the order of processing and device
ID assignment is completely user configurable */
#if (USE_ATA)
#if(NDRIVES <= 2)
#error NDRIVES IS TOO SMALL
#endif
#if (1)
/* Install DRIVE C: As the primary controller, master IDE drive
first partition */
logical_drive_number = 2; /* C: for first IDE drive */
pdr->register_file_address = (IOADDRESS) 0x4000002; // Primary IO address
// Note: Set interrupt number to -1 to use polled mode
pdr->interrupt_number = -1; // Primary ATA interrupt
pdr->drive_flags = DRIVE_FLAGS_PARTITIONED;
pdr->partition_number = 0; //
pdr->lock_unit = lock_unit;
pdr->pcmcia_slot_number = 0;
pdr->pcmcia_controller_number = 0;
pdr->controller_number = 0;
pdr->logical_unit_number = 0;
pdr->dev_table_drive_io = ide_io;
pdr->dev_table_perform_device_ioctl = ide_perform_device_ioctl;
drno_to_dr_map[logical_drive_number] = pdr; // MAPS DRIVE structure to B:
SAVE_NAME(logical_drive_number, "Primary Fixed IDE Master");
pdr->driveno = logical_drive_number++;
pdr++;
#endif
/* Install DRIVE D: As first IDE drive second partition */
#if(NDRIVES <= 3)
#error NDRIVES IS TOO SMALL
#endif
#if (1) // BUGBUG - change to if (1) Set to zero to turn off 2nd partition support
logical_drive_number = 3; /* D: for first IDE drive 2nd partition */
pdr->register_file_address = (IOADDRESS) 0x1f0; // Primary IO address
// Note: Set interrupt number to -1 to use polled mode
pdr->interrupt_number = -1; // Primary ATA interrupt
pdr->drive_flags = DRIVE_FLAGS_PARTITIONED;
pdr->partition_number = 1; //
pdr->lock_unit = lock_unit;
pdr->pcmcia_slot_number = 0;
pdr->pcmcia_controller_number = 0;
pdr->controller_number = 0;
pdr->logical_unit_number = 0;
pdr->dev_table_drive_io = ide_io;
pdr->dev_table_perform_device_ioctl = ide_perform_device_ioctl;
drno_to_dr_map[logical_drive_number] = pdr; // MAPS DRIVE structure to B:
SAVE_NAME(logical_drive_number,"Primary Fixed IDE Master 2nd")
pdr->driveno = logical_drive_number++;
pdr++;
#endif
#endif // ATA
/* End User initialization section */
pdr= mem_drives_structures;
for (j = 0; j < NDRIVES; j++, pdr++)
{
if (pdr->dev_table_drive_io)
{
#if (PRINT_DEVNAMES)
if (dev_name[pdr->driveno])
#if (SUPPORTS_CONSOLE)
tm_printf_3("Drive: %c Device: %s\n", (char) ('A' + pdr->driveno), dev_name[pdr->driveno]);
#endif
#endif
drno_to_dr_map[pdr->driveno] = pdr; // MAPS DRIVE structure to DRIVE:
if (pdr->dev_table_perform_device_ioctl(pdr->driveno, DEVCTL_WARMSTART, (PFVOID) 0) != 0)
drno_to_dr_map[pdr->driveno] = 0; // It's not there.
// so forget it
}
}
return(TRUE);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -