Support for four IDE devices possible...?

Discussion of development and patch submission.
Post Reply
User avatar
ppgrainbow
Posts: 479
Joined: Thu 04 Sep, 2014 7:03 am
Contact:

Support for four IDE devices possible...?

Post by ppgrainbow »

Hey there! Currently, PCem only supports up to two hard disks (drive C, primary master and drive D, primary slave) and limited support for physical CD-ROMs.

I'm wondering if it is possible to add support for up to four hard disks or ISO CD-ROMs or not?

Looking at the pc.rc, win-hdconf.c and resources.h, it is possible to add support for secondary master (drive E) and secondary slave (drive F) hard drives or ISO CD-ROMs.

Award SiS 496/497, Intel Premiere/PCI, Intel Advanced/EV and Award 430VX PCI (the BIOSes that are all supported by PCem) all have support for up to four IDE devices.

What do you think? I don't have the patch where a future revision of PCem can support up to four IDE devices, but I'm new to adding patches, sadly.

Here's what I have so far in the pc.rc file and it's only preliminary. I don't know if I'll have the the time to do the rest...

Code: Select all

                MENUITEM "&Configure IDE devices...",IDM_HDCONF

Code: Select all

HdConfDlg DIALOGEX 0, 0, 210, 172
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Configure IDE devices"
FONT 8, "MS Sans Serif"
BEGIN
    DEFPUSHBUTTON   "OK",IDOK,31+12,152,50,14
    PUSHBUTTON      "Cancel",IDCANCEL,101+12,152,50,14
    
    LTEXT           "Primary Master (Drive C)",IDC_STATIC,7,6,27,10
    EDITTEXT        IDC_EDIT_C_FN, 7, 22, 136, 12, WS_DISABLED
    PUSHBUTTON      "...",IDC_CFILE,7 + 136,      22, 16, 14
    PUSHBUTTON      "New",IDC_CNEW,7 + 136 + 16, 22, 24, 14
    PUSHBUTTON      "Eject", IDC_EJECTC, 7 + 136 + 16 + 24, 22, 24, 14
        
    EDITTEXT        IDC_EDIT_C_SPT,36,38,16,12, WS_DISABLED
    EDITTEXT        IDC_EDIT_C_HPC,94,38,16,12, WS_DISABLED
    EDITTEXT        IDC_EDIT_C_CYL,152,38,28,12, WS_DISABLED
    LTEXT           "Sectors:",IDC_STATIC,7,38,27,10
    LTEXT           "Heads:",IDC_STATIC,63,38,29,8
    LTEXT           "Cylinders:",IDC_STATIC,120,38,32,12
    LTEXT           "", IDC_TEXT_C_SIZE, 7, 54, 136, 12
    
    LTEXT           "Primary Slave (Drive D)",IDC_STATIC,7,76,27,10
    EDITTEXT        IDC_EDIT_D_FN, 7, 92, 136, 12, WS_DISABLED
    PUSHBUTTON      "...",IDC_DFILE,7 + 136,     92, 16, 14
    PUSHBUTTON      "New",IDC_DNEW,7 + 136 + 16, 92, 24, 14
    PUSHBUTTON      "Eject", IDC_EJECTD, 7 + 136 + 16 + 24, 92, 24, 14
    
    EDITTEXT        IDC_EDIT_D_SPT,36,108,16,12, WS_DISABLED
    EDITTEXT        IDC_EDIT_D_HPC,94,108,16,12, WS_DISABLED
    EDITTEXT        IDC_EDIT_D_CYL,152,108,28,12, WS_DISABLED
    LTEXT           "Sectors:",IDC_STATIC,7,108,27,10
    LTEXT           "Heads:",IDC_STATIC,63,108,29,8
    LTEXT           "Cylinders:",IDC_STATIC,120,108,32,12
    LTEXT           "", IDC_TEXT_D_SIZE, 7, 124, 136, 12    

    LTEXT           "Secondary Master (Drive E)",IDC_STATIC,7,6,27,10
    EDITTEXT        IDC_EDIT_E_FN, 7, 162, 136, 12, WS_DISABLED
    PUSHBUTTON      "...",IDC_EFILE,7 + 136,      162, 16, 14
    PUSHBUTTON      "New",IDC_ENEW,7 + 136 + 16, 162, 24, 14
    PUSHBUTTON      "Eject", IDC_EJECTE, 7 + 136 + 16 + 24, 162, 24, 14
        
    EDITTEXT        IDC_EDIT_E_SPT,36,178,16,12, WS_DISABLED
    EDITTEXT        IDC_EDIT_E_HPC,94,178,16,12, WS_DISABLED
    EDITTEXT        IDC_EDIT_E_CYL,152,178,28,12, WS_DISABLED
    LTEXT           "Sectors:",IDC_STATIC,7,178,27,10
    LTEXT           "Heads:",IDC_STATIC,63,178,29,8
    LTEXT           "Cylinders:",IDC_STATIC,120,178,32,12
    LTEXT           "", IDC_TEXT_E_SIZE, 7, 194, 136, 12
    
    LTEXT           "Secondary Slave (Drive F)",IDC_STATIC,7,76,27,10
    EDITTEXT        IDC_EDIT_F_FN, 7, 232, 136, 12, WS_DISABLED
    PUSHBUTTON      "...",IDC_FFILE,7 + 136,     232, 16, 14
    PUSHBUTTON      "New",IDC_FNEW,7 + 136 + 16, 232, 24, 14
    PUSHBUTTON      "Eject", IDF_EJECTF, 7 + 136 + 16 + 24, 232, 24, 14
    
    EDITTEXT        IDC_EDIT_F_SPT,36,248,16,12, WS_DISABLED
    EDITTEXT        IDC_EDIT_F_HPC,94,248,16,12, WS_DISABLED
    EDITTEXT        IDC_EDIT_F_CYL,152,248,28,12, WS_DISABLED
    LTEXT           "Sectors:",IDC_STATIC,7,248,27,10
    LTEXT           "Heads:",IDC_STATIC,63,248,29,8
    LTEXT           "Cylinders:",IDC_STATIC,120,248,32,12
    LTEXT           "", IDC_TEXT_F_SIZE, 7, 264, 136, 12    
    
END
The code mentioned above adds drive E (secondary master) and drive F (secondary slave) support and renames "C:" and "D:" in the text field to "Primary Master" and "Primary Slave" respectively.

If this does go through, we would also have to modify support for four hard disks or CD-ROMs in the win-hdconf.c and resources.h files. If I'm totally missing anything, please let me know.
Post Reply