📄 rtfsinit.c
字号:
/* Install DRIVE A: Using a host driver */
/* Note: Turn off all other drivers and set NDRIVES to
1 if building the MKROM utility */
#if (0) // Set to one to include the hostdisk
logical_drive_number = 0;
pdr->register_file_address = (IOADDRESS) 0; // Not used
pdr->interrupt_number = 0; // Not used
pdr->drive_flags = 0;
pdr->partition_number = 0; // Not used
pdr->lock_unit = lock_unit;
pdr->pcmcia_slot_number = 0; // Not used
pdr->pcmcia_controller_number = 0; // Not used
pdr->controller_number = 0;
pdr->logical_unit_number = 0;
pdr->dev_table_drive_io = hostdisk_io;
pdr->dev_table_perform_device_ioctl = hostdisk_perform_device_ioctl;
drno_to_dr_map[logical_drive_number] = pdr; // MAPS DRIVE structure to A:
pdr->driveno = logical_drive_number;
SAVE_NAME(logical_drive_number,"HOST DISK")
pdr++;
#endif
/* 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 (0)
/* Install DRIVE C: As the primary controller, master IDE drive
first partition */
logical_drive_number = 2; /* C: for first IDE drive */
#if (JMRTX3904)
#error set IO address to JMRTX3904_ISA_ATA_PRIMARY_IO_ADDRESS;
#error set IRQ to JMRTX3904_ISA_ATA_PRIMARY_IRQ
#endif
pdr->register_file_address = (IOADDRESS) 0x4000000; // 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 (0) // 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 = 14; // 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 Partition")
pdr->driveno = logical_drive_number++;
pdr++;
#endif
#endif // ATA
#if (0) // This is a test case and a model for 2nd partition on pcmcia
#if(NDRIVES <= 5)
#error NDRIVES IS TOO SMALL
#endif
/* Install DRIVE F: As second IDE pcmcia drive */
logical_drive_number = 5; /* E: for PCMCIA IDE drive */
pdr->register_file_address = (IOADDRESS) 0x170; // Secondary IO address
// Note: Set interrupt number to -1 to use polled mode
pdr->interrupt_number = 15; // Secondary ATA interrupt
pdr->drive_flags = DRIVE_FLAGS_PARTITIONED|DRIVE_FLAGS_PCMCIA|DRIVE_FLAGS_PCMCIA_ATA;
pdr->partition_number = 1; //
pdr->lock_unit = lock_unit;
pdr->pcmcia_slot_number = 0;
pdr->pcmcia_controller_number = 0;
pdr->pcmcia_cfg_opt_value = 0x43; // access it at 0x170 on pcmcia bus
pdr->controller_number = 1;
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, "PCMCIA ATA Slot 0 partition 2")
pdr->driveno = logical_drive_number++;
pdr++;
#endif
#if (0) // This is PCMCIA SRAM - Enable to use
#if(NDRIVES <= 5)
#error NDRIVES IS TOO SMALL
#endif
lock_unit += 1;
/* Install DRIVE F: As pcmcia RAM DISK */
logical_drive_number = 5;
pdr->register_file_address = (IOADDRESS) 0; //
pdr->interrupt_number = 0; // Secondary ATA interrupt
pdr->drive_flags = 0;
pdr->partition_number = 0; //
pdr->lock_unit = lock_unit;
pdr->pcmcia_slot_number = 0;
pdr->pcmcia_controller_number = 0;
pdr->pcmcia_cfg_opt_value = 0x43; // access it at 0x170 on pcmcia bus
pdr->controller_number = 0;
pdr->logical_unit_number = 0;
pdr->dev_table_drive_io = pcmsram_io;
pdr->dev_table_perform_device_ioctl = pcmsram_perform_device_ioctl;
drno_to_dr_map[logical_drive_number] = pdr; // MAPS DRIVE structure to B:
SAVE_NAME(logical_drive_number, "PCMCIA RAM DISK Slot 0");
pdr->driveno = logical_drive_number;
pdr++;
#endif
#if (1) // This is Static RAM DISK - Enable to use
#if(NDRIVES <= 6)
#error NDRIVES IS TOO SMALL
#endif
/* Install DRIVE G: As first RAM DISK */
lock_unit += 1;
logical_drive_number = 6;
pdr->register_file_address = (IOADDRESS) 0; // Not used
pdr->interrupt_number = 0; // Not used
pdr->drive_flags = 0;
pdr->partition_number = 0; // Not used
pdr->lock_unit = lock_unit;
pdr->pcmcia_slot_number = 0; // Not used
pdr->pcmcia_controller_number = 0; // Not used
pdr->controller_number = 0;
pdr->logical_unit_number = 0;
pdr->dev_table_drive_io = ramdisk_io;
pdr->dev_table_perform_device_ioctl = ramdisk_perform_device_ioctl;
drno_to_dr_map[logical_drive_number] = pdr; // MAPS DRIVE structure to G:
pdr->driveno = logical_drive_number;
SAVE_NAME(logical_drive_number,"STATIC RAM DISK")
pdr++;
#endif
#if (1) // This is ROM DISK - Enable to use
#if(NDRIVES <= 7)
#error NDRIVES IS TOO SMALL
#endif
/* Install DRIVE H: As first ROM DISK same lock unit as */
logical_drive_number = 7;
pdr->register_file_address = (IOADDRESS) 0; //
pdr->interrupt_number = 0; //
pdr->drive_flags = 0;
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 = nand_io;
pdr->dev_table_perform_device_ioctl = nand_perform_device_ioctl;
drno_to_dr_map[logical_drive_number] = pdr; // MAPS DRIVE structure to B:
pdr->driveno = logical_drive_number;
SAVE_NAME(logical_drive_number, "STATIC ROM DISK")
pdr++;
#endif // 0
/* 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 + -