Add Iomega Zip drive emulation.

This commit is contained in:
SarahW 2018-01-21 16:05:39 +00:00
commit 5fd2fd40aa
22 changed files with 2954 additions and 1809 deletions

View file

@ -19,7 +19,7 @@ dells200.c device.c disc.c disc_fdi.c disc_img.c disc_sector.c dma.c esdi_at.c f
hdd.c hdd_esdi.c hdd_file.c headland.c i430lx.c i430fx.c i430vx.c ide.c ide_atapi.c intel.c intel_flash.c io.c jim.c joystick_ch_flightstick_pro.c joystick_standard.c joystick_sw_pad.c \ hdd.c hdd_esdi.c hdd_file.c headland.c i430lx.c i430fx.c i430vx.c ide.c ide_atapi.c intel.c intel_flash.c io.c jim.c joystick_ch_flightstick_pro.c joystick_standard.c joystick_sw_pad.c \
joystick_tm_fcs.c keyboard.c keyboard_amstrad.c keyboard_at.c keyboard_olim24.c keyboard_pcjr.c keyboard_xt.c \ joystick_tm_fcs.c keyboard.c keyboard_amstrad.c keyboard_at.c keyboard_olim24.c keyboard_pcjr.c keyboard_xt.c \
laserxt.c lpt.c lpt_dac.c lpt_dss.c mca.c mcr.c mem.c mfm_at.c mfm_xebec.c model.c mouse.c mouse_msystems.c mouse_ps2.c mouse_serial.c neat.c nmi.c nvr.c olivetti_m24.c \ laserxt.c lpt.c lpt_dac.c lpt_dss.c mca.c mcr.c mem.c mfm_at.c mfm_xebec.c model.c mouse.c mouse_msystems.c mouse_ps2.c mouse_serial.c neat.c nmi.c nvr.c olivetti_m24.c \
opti495.c paths.c pc.c pci.c pic.c piix.c pit.c ppi.c ps1.c ps2.c ps2_mca.c ps2_nvr.c nvr_tc8521.c rom.c rtc.c rtc_tc8521.c scat.c scsi.c scsi_53c400.c scsi_aha1540.c scsi_cd.c scsi_hd.c \ opti495.c paths.c pc.c pci.c pic.c piix.c pit.c ppi.c ps1.c ps2.c ps2_mca.c ps2_nvr.c nvr_tc8521.c rom.c rtc.c rtc_tc8521.c scat.c scsi.c scsi_53c400.c scsi_aha1540.c scsi_cd.c scsi_hd.c scsi_zip.c \
serial.c sio.c sis496.c sound.c sound_ad1848.c sound_adlib.c sound_adlibgold.c sound_audiopci.c sound_cms.c sound_emu8k.c sound_gus.c \ serial.c sio.c sis496.c sound.c sound_ad1848.c sound_adlib.c sound_adlibgold.c sound_audiopci.c sound_cms.c sound_emu8k.c sound_gus.c \
sound_mpu401_uart.c sound_opl.c sound_pas16.c sound_ps1.c sound_pssj.c sound_sb.c sound_sb_dsp.c sound_sn76489.c \ sound_mpu401_uart.c sound_opl.c sound_pas16.c sound_ps1.c sound_pssj.c sound_sb.c sound_sb_dsp.c sound_sn76489.c \
sound_speaker.c sound_ssi2001.c sound_wss.c sound_ym7128.c soundopenal.c tandy_eeprom.c tandy_rom.c \ sound_speaker.c sound_ssi2001.c sound_wss.c sound_ym7128.c soundopenal.c tandy_eeprom.c tandy_rom.c \

View file

@ -10,7 +10,7 @@ dells200.o device.o disc.o disc_fdi.o disc_img.o disc_sector.o dma.o esdi_at.o f
hdd.o hdd_esdi.o hdd_file.o headland.o i430lx.o i430fx.o i430vx.o ide.o ide_atapi.o intel.o intel_flash.o io.o jim.o joystick_ch_flightstick_pro.o joystick_standard.o joystick_sw_pad.o \ hdd.o hdd_esdi.o hdd_file.o headland.o i430lx.o i430fx.o i430vx.o ide.o ide_atapi.o intel.o intel_flash.o io.o jim.o joystick_ch_flightstick_pro.o joystick_standard.o joystick_sw_pad.o \
joystick_tm_fcs.o keyboard.o keyboard_amstrad.o keyboard_at.o keyboard_olim24.o keyboard_pcjr.o keyboard_xt.o \ joystick_tm_fcs.o keyboard.o keyboard_amstrad.o keyboard_at.o keyboard_olim24.o keyboard_pcjr.o keyboard_xt.o \
laserxt.o lpt.o lpt_dac.o lpt_dss.o mca.o mcr.o mem.o mfm_at.o mfm_xebec.o model.o mouse.o mouse_msystems.o mouse_ps2.o mouse_serial.o neat.o nmi.o nvr.o nvr_tc8521.o olivetti_m24.o \ laserxt.o lpt.o lpt_dac.o lpt_dss.o mca.o mcr.o mem.o mfm_at.o mfm_xebec.o model.o mouse.o mouse_msystems.o mouse_ps2.o mouse_serial.o neat.o nmi.o nvr.o nvr_tc8521.o olivetti_m24.o \
opti495.o paths.o pc.o pci.o pic.o piix.o pit.o ppi.o ps1.o ps2.o ps2_mca.o ps2_nvr.o rom.o rtc.o rtc_tc8521.o scat.o scsi.o scsi_53c400.o scsi_aha1540.o scsi_cd.o scsi_hd.o \ opti495.o paths.o pc.o pci.o pic.o piix.o pit.o ppi.o ps1.o ps2.o ps2_mca.o ps2_nvr.o rom.o rtc.o rtc_tc8521.o scat.o scsi.o scsi_53c400.o scsi_aha1540.o scsi_cd.o scsi_hd.o scsi_zip.o \
serial.o sio.o sis496.o sound.o sound_ad1848.o sound_adlib.o sound_adlibgold.o sound_audiopci.o sound_cms.o sound_emu8k.o sound_gus.o \ serial.o sio.o sis496.o sound.o sound_ad1848.o sound_adlib.o sound_adlibgold.o sound_audiopci.o sound_cms.o sound_emu8k.o sound_gus.o \
sound_mpu401_uart.o sound_opl.o sound_pas16.o sound_ps1.o sound_pssj.o sound_sb.o sound_sb_dsp.o sound_sn76489.o \ sound_mpu401_uart.o sound_opl.o sound_pas16.o sound_ps1.o sound_pssj.o sound_sb.o sound_sb_dsp.o sound_sn76489.o \
sound_speaker.o sound_ssi2001.o sound_wss.o sound_ym7128.o soundopenal.o t1000.o t3100e.o tandy_eeprom.o tandy_rom.o \ sound_speaker.o sound_ssi2001.o sound_wss.o sound_ym7128.o soundopenal.o t1000.o t3100e.o tandy_eeprom.o tandy_rom.o \

View file

@ -10,7 +10,7 @@ dells200.o device.o disc.o disc_fdi.o disc_img.o disc_sector.o dma.o esdi_at.o f
hdd.o hdd_esdi.o hdd_file.o headland.o i430lx.o i430fx.o i430vx.o ide.o ide_atapi.o intel.o intel_flash.o io.o jim.o joystick_ch_flightstick_pro.o joystick_standard.o joystick_sw_pad.o \ hdd.o hdd_esdi.o hdd_file.o headland.o i430lx.o i430fx.o i430vx.o ide.o ide_atapi.o intel.o intel_flash.o io.o jim.o joystick_ch_flightstick_pro.o joystick_standard.o joystick_sw_pad.o \
joystick_tm_fcs.o keyboard.o keyboard_amstrad.o keyboard_at.o keyboard_olim24.o keyboard_pcjr.o keyboard_xt.o \ joystick_tm_fcs.o keyboard.o keyboard_amstrad.o keyboard_at.o keyboard_olim24.o keyboard_pcjr.o keyboard_xt.o \
laserxt.o lpt.o lpt_dac.o lpt_dss.o mca.o mcr.o mem.o mfm_at.o mfm_xebec.o model.o mouse.o mouse_msystems.o mouse_ps2.o mouse_serial.o neat.o nmi.o nvr.o nvr_tc8521.o olivetti_m24.o \ laserxt.o lpt.o lpt_dac.o lpt_dss.o mca.o mcr.o mem.o mfm_at.o mfm_xebec.o model.o mouse.o mouse_msystems.o mouse_ps2.o mouse_serial.o neat.o nmi.o nvr.o nvr_tc8521.o olivetti_m24.o \
opti495.o paths.o pc.o pci.o pic.o piix.o pit.o ppi.o ps1.o ps2.o ps2_mca.o ps2_nvr.o rom.o rtc.o rtc_tc8521.o scat.o scsi.o scsi_53c400.o scsi_aha1540.o scsi_cd.o scsi_hd.o \ opti495.o paths.o pc.o pci.o pic.o piix.o pit.o ppi.o ps1.o ps2.o ps2_mca.o ps2_nvr.o rom.o rtc.o rtc_tc8521.o scat.o scsi.o scsi_53c400.o scsi_aha1540.o scsi_cd.o scsi_hd.o scsi_zip.o \
serial.o sio.o sis496.o sound.o sound_ad1848.o sound_adlib.o sound_adlibgold.o sound_audiopci.o sound_cms.o sound_emu8k.o sound_gus.o \ serial.o sio.o sis496.o sound.o sound_ad1848.o sound_adlib.o sound_adlibgold.o sound_audiopci.o sound_cms.o sound_emu8k.o sound_gus.o \
sound_mpu401_uart.o sound_opl.o sound_pas16.o sound_ps1.o sound_pssj.o sound_sb.o sound_sb_dsp.o sound_sn76489.o \ sound_mpu401_uart.o sound_opl.o sound_pas16.o sound_ps1.o sound_pssj.o sound_sb.o sound_sb_dsp.o sound_sn76489.o \
sound_speaker.o sound_ssi2001.o sound_wss.o sound_ym7128.o soundopenal.o t1000.o t3100e.o tandy_eeprom.o tandy_rom.o \ sound_speaker.o sound_ssi2001.o sound_wss.o sound_ym7128.o soundopenal.o t1000.o t3100e.o tandy_eeprom.o tandy_rom.o \

View file

@ -9,7 +9,7 @@ OBJ = 386.o 386_dynarec.o 386_dynarec_ops.o 808x.o acer386sx.o ali1429.o amstrad
i430vx.o ide.o ide_atapi.o intel.o intel_flash.o io.o jim.o joystick_ch_flightstick_pro.o joystick_standard.o joystick_sw_pad.o joystick_tm_fcs.o keyboard.o keyboard_amstrad.o keyboard_at.o \ i430vx.o ide.o ide_atapi.o intel.o intel_flash.o io.o jim.o joystick_ch_flightstick_pro.o joystick_standard.o joystick_sw_pad.o joystick_tm_fcs.o keyboard.o keyboard_amstrad.o keyboard_at.o \
keyboard_olim24.o keyboard_pcjr.o keyboard_xt.o laserxt.o lpt.o lpt_dac.o lpt_dss.o mca.o mcr.o mem.o mfm_at.o mfm_xebec.o model.o mouse.o mouse_msystems.o mouse_ps2.o \ keyboard_olim24.o keyboard_pcjr.o keyboard_xt.o laserxt.o lpt.o lpt_dac.o lpt_dss.o mca.o mcr.o mem.o mfm_at.o mfm_xebec.o model.o mouse.o mouse_msystems.o mouse_ps2.o \
mouse_serial.o neat.o nmi.o nvr.o nvr_tc8521.o olivetti_m24.o opti495.o paths.o pc.o pci.o pic.o piix.o pit.o ppi.o ps1.o ps2.o ps2_mca.o ps2_nvr.o rom.o rtc.o rtc_tc8521.o \ mouse_serial.o neat.o nmi.o nvr.o nvr_tc8521.o olivetti_m24.o opti495.o paths.o pc.o pci.o pic.o piix.o pit.o ppi.o ps1.o ps2.o ps2_mca.o ps2_nvr.o rom.o rtc.o rtc_tc8521.o \
scat.o scsi.o scsi_53c400.o scsi_aha1540.o scsi_cd.o scsi_hd.o serial.o sio.o sis496.o sound.o sound_ad1848.o sound_adlib.o sound_adlibgold.o sound_audiopci.o sound_cms.o sound_dbopl.o \ scat.o scsi.o scsi_53c400.o scsi_aha1540.o scsi_cd.o scsi_hd.o scsi_zip.o serial.o sio.o sis496.o sound.o sound_ad1848.o sound_adlib.o sound_adlibgold.o sound_audiopci.o sound_cms.o sound_dbopl.o \
sound_emu8k.o sound_gus.o sound_mpu401_uart.o sound_opl.o sound_pas16.o sound_ps1.o sound_pssj.o sound_resid.o \ sound_emu8k.o sound_gus.o sound_mpu401_uart.o sound_opl.o sound_pas16.o sound_ps1.o sound_pssj.o sound_resid.o \
sound_sb.o sound_sb_dsp.o sound_sn76489.o sound_speaker.o sound_ssi2001.o sound_wss.o \ sound_sb.o sound_sb_dsp.o sound_sn76489.o sound_speaker.o sound_ssi2001.o sound_wss.o \
sound_ym7128.o soundopenal.o t1000.o t3100e.o tandy_eeprom.o tandy_rom.o timer.o um8881f.o um8669f.o vid_ati_eeprom.o vid_ati_mach64.o vid_ati18800.o \ sound_ym7128.o soundopenal.o t1000.o t3100e.o tandy_eeprom.o tandy_rom.o timer.o um8881f.o um8669f.o vid_ati_eeprom.o vid_ati_mach64.o vid_ati18800.o \

View file

@ -10,7 +10,7 @@ OBJ = 386.o 386_dynarec.o 386_dynarec_ops.o 808x.o acer386sx.o ali1429.o amstrad
i430vx.o ide.o ide_atapi.o intel.o intel_flash.o io.o jim.o joystick_ch_flightstick_pro.o joystick_standard.o joystick_sw_pad.o joystick_tm_fcs.o keyboard.o keyboard_amstrad.o keyboard_at.o \ i430vx.o ide.o ide_atapi.o intel.o intel_flash.o io.o jim.o joystick_ch_flightstick_pro.o joystick_standard.o joystick_sw_pad.o joystick_tm_fcs.o keyboard.o keyboard_amstrad.o keyboard_at.o \
keyboard_olim24.o keyboard_pcjr.o keyboard_xt.o laserxt.o lpt.o lpt_dac.o lpt_dss.o mca.o mcr.o mem.o mfm_at.o mfm_xebec.o model.o mouse.o mouse_msystems.o mouse_ps2.o \ keyboard_olim24.o keyboard_pcjr.o keyboard_xt.o laserxt.o lpt.o lpt_dac.o lpt_dss.o mca.o mcr.o mem.o mfm_at.o mfm_xebec.o model.o mouse.o mouse_msystems.o mouse_ps2.o \
mouse_serial.o neat.o nmi.o nvr.o nvr_tc8521.o olivetti_m24.o opti495.o paths.o pc.o pci.o pic.o piix.o pit.o ppi.o ps1.o ps2.o ps2_mca.o ps2_nvr.o rom.o rtc.o rtc_tc8521.o \ mouse_serial.o neat.o nmi.o nvr.o nvr_tc8521.o olivetti_m24.o opti495.o paths.o pc.o pci.o pic.o piix.o pit.o ppi.o ps1.o ps2.o ps2_mca.o ps2_nvr.o rom.o rtc.o rtc_tc8521.o \
scat.o scsi.o scsi_53c400.o scsi_aha1540.o scsi_cd.o scsi_hd.o serial.o sio.o sis496.o sound.o sound_ad1848.o sound_adlib.o sound_adlibgold.o sound_audiopci.o sound_cms.o sound_dbopl.o \ scat.o scsi.o scsi_53c400.o scsi_aha1540.o scsi_cd.o scsi_hd.o scsi_zip.o serial.o sio.o sis496.o sound.o sound_ad1848.o sound_adlib.o sound_adlibgold.o sound_audiopci.o sound_cms.o sound_dbopl.o \
sound_emu8k.o sound_gus.o sound_mpu401_uart.o sound_opl.o sound_pas16.o sound_ps1.o sound_pssj.o sound_resid.o \ sound_emu8k.o sound_gus.o sound_mpu401_uart.o sound_opl.o sound_pas16.o sound_ps1.o sound_pssj.o sound_resid.o \
sound_sb.o sound_sb_dsp.o sound_sn76489.o sound_speaker.o sound_ssi2001.o sound_wss.o \ sound_sb.o sound_sb_dsp.o sound_sn76489.o sound_speaker.o sound_ssi2001.o sound_wss.o \
sound_ym7128.o soundopenal.o t1000.o t3100e.o tandy_eeprom.o tandy_rom.o timer.o um8881f.o um8669f.o vid_ati_eeprom.o vid_ati_mach64.o vid_ati18800.o \ sound_ym7128.o soundopenal.o t1000.o t3100e.o tandy_eeprom.o tandy_rom.o timer.o um8881f.o um8669f.o vid_ati_eeprom.o vid_ati_mach64.o vid_ati18800.o \

View file

@ -12,7 +12,7 @@ OBJ = 386.o 386_dynarec.o 386_dynarec_ops.o 808x.o acer386sx.o ali1429.o amstrad
i430vx.o ide.o ide_atapi.o intel.o intel_flash.o io.o jim.o joystick_ch_flightstick_pro.o joystick_standard.o joystick_sw_pad.o joystick_tm_fcs.o keyboard.o keyboard_amstrad.o keyboard_at.o \ i430vx.o ide.o ide_atapi.o intel.o intel_flash.o io.o jim.o joystick_ch_flightstick_pro.o joystick_standard.o joystick_sw_pad.o joystick_tm_fcs.o keyboard.o keyboard_amstrad.o keyboard_at.o \
keyboard_olim24.o keyboard_pcjr.o keyboard_xt.o laserxt.o lpt.o lpt_dac.o lpt_dss.o mca.o mcr.o mem.o mfm_at.o mfm_xebec.o model.o mouse.o mouse_msystems.o mouse_ps2.o \ keyboard_olim24.o keyboard_pcjr.o keyboard_xt.o laserxt.o lpt.o lpt_dac.o lpt_dss.o mca.o mcr.o mem.o mfm_at.o mfm_xebec.o model.o mouse.o mouse_msystems.o mouse_ps2.o \
mouse_serial.o neat.o nmi.o nvr.o nvr_tc8521.o olivetti_m24.o opti495.o paths.o pc.o pci.o pic.o piix.o pit.o ppi.o ps1.o ps2.o ps2_mca.o ps2_nvr.o rom.o rtc.o rtc_tc8521.o \ mouse_serial.o neat.o nmi.o nvr.o nvr_tc8521.o olivetti_m24.o opti495.o paths.o pc.o pci.o pic.o piix.o pit.o ppi.o ps1.o ps2.o ps2_mca.o ps2_nvr.o rom.o rtc.o rtc_tc8521.o \
scat.o scsi.o scsi_53c400.o scsi_aha1540.o scsi_cd.o scsi_hd.o serial.o sio.o sis496.o sound.o sound_ad1848.o sound_adlib.o sound_adlibgold.o sound_audiopci.o sound_cms.o sound_dbopl.o \ scat.o scsi.o scsi_53c400.o scsi_aha1540.o scsi_cd.o scsi_hd.o scsi_zip.o serial.o sio.o sis496.o sound.o sound_ad1848.o sound_adlib.o sound_adlibgold.o sound_audiopci.o sound_cms.o sound_dbopl.o \
sound_emu8k.o sound_gus.o sound_mpu401_uart.o sound_opl.o sound_pas16.o sound_ps1.o sound_pssj.o sound_resid.o \ sound_emu8k.o sound_gus.o sound_mpu401_uart.o sound_opl.o sound_pas16.o sound_ps1.o sound_pssj.o sound_resid.o \
sound_sb.o sound_sb_dsp.o sound_sn76489.o sound_speaker.o sound_ssi2001.o sound_wss.o \ sound_sb.o sound_sb_dsp.o sound_sn76489.o sound_speaker.o sound_ssi2001.o sound_wss.o \
sound_ym7128.o soundopenal.o t1000.o t3100e.o tandy_eeprom.o tandy_rom.o timer.o um8881f.o um8669f.o vid_ati_eeprom.o vid_ati_mach64.o vid_ati18800.o \ sound_ym7128.o soundopenal.o t1000.o t3100e.o tandy_eeprom.o tandy_rom.o timer.o um8881f.o um8669f.o vid_ati_eeprom.o vid_ati_mach64.o vid_ati18800.o \

View file

@ -12,7 +12,7 @@ OBJ = 386.o 386_dynarec.o 386_dynarec_ops.o 808x.o acer386sx.o ali1429.o amstrad
i430vx.o ide.o ide_atapi.o intel.o intel_flash.o io.o jim.o joystick_ch_flightstick_pro.o joystick_standard.o joystick_sw_pad.o joystick_tm_fcs.o keyboard.o keyboard_amstrad.o keyboard_at.o \ i430vx.o ide.o ide_atapi.o intel.o intel_flash.o io.o jim.o joystick_ch_flightstick_pro.o joystick_standard.o joystick_sw_pad.o joystick_tm_fcs.o keyboard.o keyboard_amstrad.o keyboard_at.o \
keyboard_olim24.o keyboard_pcjr.o keyboard_xt.o laserxt.o lpt.o lpt_dac.o lpt_dss.o mca.o mcr.o mem.o mfm_at.o mfm_xebec.o model.o mouse.o mouse_msystems.o mouse_ps2.o \ keyboard_olim24.o keyboard_pcjr.o keyboard_xt.o laserxt.o lpt.o lpt_dac.o lpt_dss.o mca.o mcr.o mem.o mfm_at.o mfm_xebec.o model.o mouse.o mouse_msystems.o mouse_ps2.o \
mouse_serial.o neat.o nmi.o nvr.o nvr_tc8521.o olivetti_m24.o opti495.o paths.o pc.o pci.o pic.o piix.o pit.o ppi.o ps1.o ps2.o ps2_mca.o ps2_nvr.o rom.o rtc.o rtc_tc8521.o \ mouse_serial.o neat.o nmi.o nvr.o nvr_tc8521.o olivetti_m24.o opti495.o paths.o pc.o pci.o pic.o piix.o pit.o ppi.o ps1.o ps2.o ps2_mca.o ps2_nvr.o rom.o rtc.o rtc_tc8521.o \
scat.o scsi.o scsi_53c400.o scsi_aha1540.o scsi_cd.o scsi_hd.o serial.o sio.o sis496.o sound.o sound_ad1848.o sound_adlib.o sound_adlibgold.o sound_audiopci.o sound_cms.o sound_dbopl.o \ scat.o scsi.o scsi_53c400.o scsi_aha1540.o scsi_cd.o scsi_hd.o scsi_zip.o serial.o sio.o sis496.o sound.o sound_ad1848.o sound_adlib.o sound_adlibgold.o sound_audiopci.o sound_cms.o sound_dbopl.o \
sound_emu8k.o sound_gus.o sound_mpu401_uart.o sound_opl.o sound_pas16.o sound_ps1.o sound_pssj.o sound_resid.o \ sound_emu8k.o sound_gus.o sound_mpu401_uart.o sound_opl.o sound_pas16.o sound_ps1.o sound_pssj.o sound_resid.o \
sound_sb.o sound_sb_dsp.o sound_sn76489.o sound_speaker.o sound_ssi2001.o sound_wss.o \ sound_sb.o sound_sb_dsp.o sound_sn76489.o sound_speaker.o sound_ssi2001.o sound_wss.o \
sound_ym7128.o soundopenal.o t1000.o t3100e.o tandy_eeprom.o tandy_rom.o timer.o um8881f.o um8669f.o vid_ati_eeprom.o vid_ati_mach64.o vid_ati18800.o \ sound_ym7128.o soundopenal.o t1000.o t3100e.o tandy_eeprom.o tandy_rom.o timer.o um8881f.o um8669f.o vid_ati_eeprom.o vid_ati_mach64.o vid_ati18800.o \

View file

@ -9,7 +9,7 @@ OBJ = 386.o 386_dynarec.o 386_dynarec_ops.o 808x.o acer386sx.o ali1429.o amstrad
i430vx.o ide.o ide_atapi.o intel.o intel_flash.o io.o jim.o joystick_ch_flightstick_pro.o joystick_standard.o joystick_sw_pad.o joystick_tm_fcs.o keyboard.o keyboard_amstrad.o keyboard_at.o \ i430vx.o ide.o ide_atapi.o intel.o intel_flash.o io.o jim.o joystick_ch_flightstick_pro.o joystick_standard.o joystick_sw_pad.o joystick_tm_fcs.o keyboard.o keyboard_amstrad.o keyboard_at.o \
keyboard_olim24.o keyboard_pcjr.o keyboard_xt.o laserxt.o lpt.o lpt_dac.o lpt_dss.o mca.o mcr.o mem.o mfm_at.o mfm_xebec.o model.o mouse.o mouse_msystems.o mouse_ps2.o \ keyboard_olim24.o keyboard_pcjr.o keyboard_xt.o laserxt.o lpt.o lpt_dac.o lpt_dss.o mca.o mcr.o mem.o mfm_at.o mfm_xebec.o model.o mouse.o mouse_msystems.o mouse_ps2.o \
mouse_serial.o neat.o nmi.o nvr.o nvr_tc8521.o olivetti_m24.o opti495.o paths.o pc.o pci.o pic.o piix.o pit.o ppi.o ps1.o ps2.o ps2_mca.o ps2_nvr.o rom.o rtc.o rtc_tc8521.o \ mouse_serial.o neat.o nmi.o nvr.o nvr_tc8521.o olivetti_m24.o opti495.o paths.o pc.o pci.o pic.o piix.o pit.o ppi.o ps1.o ps2.o ps2_mca.o ps2_nvr.o rom.o rtc.o rtc_tc8521.o \
scat.o scsi.o scsi_53c400.o scsi_aha1540.o scsi_cd.o scsi_hd.o serial.o sio.o sis496.o sound.o sound_ad1848.o sound_adlib.o sound_adlibgold.o sound_audiopci.o sound_cms.o sound_dbopl.o \ scat.o scsi.o scsi_53c400.o scsi_aha1540.o scsi_cd.o scsi_hd.o scsi_zip.o serial.o sio.o sis496.o sound.o sound_ad1848.o sound_adlib.o sound_adlibgold.o sound_audiopci.o sound_cms.o sound_dbopl.o \
sound_emu8k.o sound_gus.o sound_mpu401_uart.o sound_opl.o sound_pas16.o sound_ps1.o sound_pssj.o sound_resid.o \ sound_emu8k.o sound_gus.o sound_mpu401_uart.o sound_opl.o sound_pas16.o sound_ps1.o sound_pssj.o sound_resid.o \
sound_sb.o sound_sb_dsp.o sound_sn76489.o sound_speaker.o sound_ssi2001.o sound_wss.o sound_ym7128.o \ sound_sb.o sound_sb_dsp.o sound_sn76489.o sound_speaker.o sound_ssi2001.o sound_wss.o sound_ym7128.o \
soundopenal.o t1000.o t3100e.o tandy_eeprom.o tandy_rom.o timer.o um8881f.o um8669f.o vid_ati_eeprom.o vid_ati_mach64.o vid_ati18800.o \ soundopenal.o t1000.o t3100e.o tandy_eeprom.o tandy_rom.o timer.o um8881f.o um8669f.o vid_ati_eeprom.o vid_ati_mach64.o vid_ati18800.o \

View file

@ -9,7 +9,7 @@ device.o dells200.o disc.o disc_fdi.o disc_img.o disc_sector.o dma.o esdi_at.o f
hdd.o hdd_esdi.o hdd_file.o headland.o i430lx.o i430fx.o i430vx.o ide.o ide_atapi.o intel.o intel_flash.o io.o jim.o joystick_ch_flightstick_pro.o joystick_standard.o joystick_sw_pad.o \ hdd.o hdd_esdi.o hdd_file.o headland.o i430lx.o i430fx.o i430vx.o ide.o ide_atapi.o intel.o intel_flash.o io.o jim.o joystick_ch_flightstick_pro.o joystick_standard.o joystick_sw_pad.o \
joystick_tm_fcs.o keyboard.o keyboard_amstrad.o keyboard_at.o keyboard_olim24.o keyboard_pcjr.o keyboard_xt.o \ joystick_tm_fcs.o keyboard.o keyboard_amstrad.o keyboard_at.o keyboard_olim24.o keyboard_pcjr.o keyboard_xt.o \
laserxt.o lpt.o lpt_dac.o lpt_dss.o mca.o mcr.o mem.o mfm_at.o mfm_xebec.o model.o mouse.o mouse_msystems.o mouse_ps2.o mouse_serial.o neat.o nmi.o nvr.o nvr_tc8521.o olivetti_m24.o \ laserxt.o lpt.o lpt_dac.o lpt_dss.o mca.o mcr.o mem.o mfm_at.o mfm_xebec.o model.o mouse.o mouse_msystems.o mouse_ps2.o mouse_serial.o neat.o nmi.o nvr.o nvr_tc8521.o olivetti_m24.o \
opti495.o paths.o pc.o pci.o pic.o piix.o pit.o ppi.o ps1.o ps2.o ps2_mca.o ps2_nvr.o rom.o rtc.o rtc_tc8521.o scat.o scsi.o scsi_53c400.o scsi_aha1540.o scsi_cd.o scsi_hd.o \ opti495.o paths.o pc.o pci.o pic.o piix.o pit.o ppi.o ps1.o ps2.o ps2_mca.o ps2_nvr.o rom.o rtc.o rtc_tc8521.o scat.o scsi.o scsi_53c400.o scsi_aha1540.o scsi_cd.o scsi_hd.o scsi_zip.o \
serial.o sio.o sis496.o sound.o sound_ad1848.o sound_adlib.o sound_adlibgold.o sound_audiopci.o sound_cms.o sound_emu8k.o sound_gus.o \ serial.o sio.o sis496.o sound.o sound_ad1848.o sound_adlib.o sound_adlibgold.o sound_audiopci.o sound_cms.o sound_emu8k.o sound_gus.o \
sound_mpu401_uart.o sound_opl.o sound_pas16.o sound_ps1.o sound_pssj.o sound_sb.o sound_sb_dsp.o sound_sn76489.o \ sound_mpu401_uart.o sound_opl.o sound_pas16.o sound_ps1.o sound_pssj.o sound_sb.o sound_sb_dsp.o sound_sn76489.o \
sound_speaker.o sound_ssi2001.o sound_wss.o sound_ym7128.o soundopenal.o t1000.o t3100e.o tandy_eeprom.o tandy_rom.o \ sound_speaker.o sound_ssi2001.o sound_wss.o sound_ym7128.o soundopenal.o t1000.o t3100e.o tandy_eeprom.o tandy_rom.o \

View file

@ -6,16 +6,19 @@
#include "ibm.h" #include "ibm.h"
#include "hdd_file.h" #include "hdd_file.h"
void hdd_load(hdd_file_t *hdd, int d, const char *fn) void hdd_load_ext(hdd_file_t *hdd, const char *fn, int spt, int hpc, int tracks, int read_only)
{ {
if (hdd->f == NULL) if (hdd->f == NULL)
{ {
/* Try to open existing hard disk image */ /* Try to open existing hard disk image */
hdd->f = fopen64(fn, "rb+"); if (read_only)
hdd->f = fopen64(fn, "rb");
else
hdd->f = fopen64(fn, "rb+");
if (hdd->f == NULL) if (hdd->f == NULL)
{ {
/* Failed to open existing hard disk image */ /* Failed to open existing hard disk image */
if (errno == ENOENT) if (errno == ENOENT && !read_only)
{ {
/* Failed because it does not exist, /* Failed because it does not exist,
so try to create new file */ so try to create new file */
@ -37,10 +40,16 @@ void hdd_load(hdd_file_t *hdd, int d, const char *fn)
} }
} }
hdd->spt = hdc[d].spt; hdd->spt = spt;
hdd->hpc = hdc[d].hpc; hdd->hpc = hpc;
hdd->tracks = hdc[d].tracks; hdd->tracks = tracks;
hdd->sectors = hdc[d].spt * hdc[d].hpc * hdc[d].tracks; hdd->sectors = spt * hpc * tracks;
hdd->read_only = read_only;
}
void hdd_load(hdd_file_t *hdd, int d, const char *fn)
{
hdd_load_ext(hdd, fn, hdc[d].spt, hdc[d].hpc, hdc[d].tracks, 0);
} }
void hdd_close(hdd_file_t *hdd) void hdd_close(hdd_file_t *hdd)
@ -73,6 +82,9 @@ int hdd_write_sectors(hdd_file_t *hdd, int offset, int nr_sectors, void *buffer)
{ {
off64_t addr; off64_t addr;
int transfer_sectors = nr_sectors; int transfer_sectors = nr_sectors;
if (hdd->read_only)
return 1;
if ((hdd->sectors - offset) < transfer_sectors) if ((hdd->sectors - offset) < transfer_sectors)
transfer_sectors = hdd->sectors - offset; transfer_sectors = hdd->sectors - offset;
@ -93,6 +105,9 @@ int hdd_format_sectors(hdd_file_t *hdd, int offset, int nr_sectors)
uint8_t zero_buffer[512]; uint8_t zero_buffer[512];
int transfer_sectors = nr_sectors; int transfer_sectors = nr_sectors;
if (hdd->read_only)
return 1;
memset(zero_buffer, 0, 512); memset(zero_buffer, 0, 512);
if ((hdd->sectors - offset) < transfer_sectors) if ((hdd->sectors - offset) < transfer_sectors)

View file

@ -5,9 +5,11 @@ typedef struct hdd_file_t
int hpc; int hpc;
int tracks; int tracks;
int sectors; int sectors;
int read_only;
} hdd_file_t; } hdd_file_t;
void hdd_load(hdd_file_t *hdd, int d, const char *fn); void hdd_load(hdd_file_t *hdd, int d, const char *fn);
void hdd_load_ext(hdd_file_t *hdd, const char *fn, int spt, int hpc, int tracks, int read_only);
void hdd_close(hdd_file_t *hdd); void hdd_close(hdd_file_t *hdd);
int hdd_read_sectors(hdd_file_t *hdd, int offset, int nr_sectors, void *buffer); int hdd_read_sectors(hdd_file_t *hdd, int offset, int nr_sectors, void *buffer);
int hdd_write_sectors(hdd_file_t *hdd, int offset, int nr_sectors, void *buffer); int hdd_write_sectors(hdd_file_t *hdd, int offset, int nr_sectors, void *buffer);

View file

@ -27,6 +27,7 @@
#include "hdd_file.h" #include "hdd_file.h"
#include "scsi.h" #include "scsi.h"
#include "scsi_cd.h" #include "scsi_cd.h"
#include "scsi_zip.h"
#endif #endif
#include "ide.h" #include "ide.h"
@ -100,6 +101,7 @@ typedef struct IDE
} IDE; } IDE;
int cdrom_channel = 2; int cdrom_channel = 2;
int zip_channel = -1;
IDE ide_drives[4]; IDE ide_drives[4];
@ -404,7 +406,12 @@ void resetide(void)
ide_drives[d].type = IDE_CDROM; ide_drives[d].type = IDE_CDROM;
scsi_bus_atapi_init(&ide_drives[d].atapi.bus, &scsi_cd, d); scsi_bus_atapi_init(&ide_drives[d].atapi.bus, &scsi_cd, d);
} }
else else if (zip_channel == d)
{
ide_drives[d].type = IDE_CDROM;
scsi_bus_atapi_init(&ide_drives[d].atapi.bus, &scsi_zip, d);
}
else
{ {
loadhd(&ide_drives[d], d, ide_fn[d]); loadhd(&ide_drives[d], d, ide_fn[d]);
} }
@ -732,10 +739,6 @@ void writeide(int ide_board, uint16_t addr, uint8_t val)
timer_update_outstanding(); timer_update_outstanding();
ide->atapi.bus_state = 0; ide->atapi.bus_state = 0;
/* timer_process();
idecallback[ide_board]=1;//30*IDE_TIME;
timer_update_outstanding();
ide->pos=0;*/
return; return;
case 0xF0: case 0xF0:

View file

@ -26,7 +26,7 @@ extern int idecallback[2];
extern char ide_fn[4][512]; extern char ide_fn[4][512];
extern int cdrom_channel; extern int cdrom_channel, zip_channel;
uint32_t atapi_get_cd_channel(int channel); uint32_t atapi_get_cd_channel(int channel);
uint32_t atapi_get_cd_volume(int channel); uint32_t atapi_get_cd_volume(int channel);

View file

@ -35,6 +35,7 @@
#include "plat-keyboard.h" #include "plat-keyboard.h"
#include "plat-midi.h" #include "plat-midi.h"
#include "plat-mouse.h" #include "plat-mouse.h"
#include "scsi_zip.h"
#include "serial.h" #include "serial.h"
#include "sound.h" #include "sound.h"
#include "sound_cms.h" #include "sound_cms.h"
@ -609,6 +610,7 @@ void closepc()
lpt1_device_close(); lpt1_device_close();
mouse_emu_close(); mouse_emu_close();
device_close_all(); device_close_all();
zip_eject();
} }
/*int main() /*int main()
@ -727,6 +729,8 @@ void loadconfig(char *fn)
cdrom_enabled = config_get_int(CFG_MACHINE, NULL, "cdrom_enabled", 0); cdrom_enabled = config_get_int(CFG_MACHINE, NULL, "cdrom_enabled", 0);
cdrom_channel = config_get_int(CFG_MACHINE, NULL, "cdrom_channel", 2); cdrom_channel = config_get_int(CFG_MACHINE, NULL, "cdrom_channel", 2);
zip_channel = config_get_int(CFG_MACHINE, NULL, "zip_channel", -1);
p = (char *)config_get_string(CFG_MACHINE, NULL, "cdrom_path", ""); p = (char *)config_get_string(CFG_MACHINE, NULL, "cdrom_path", "");
if (p) strcpy(image_path, p); if (p) strcpy(image_path, p);
else strcpy(image_path, ""); else strcpy(image_path, "");
@ -870,7 +874,9 @@ void saveconfig(char *fn)
config_set_int(CFG_MACHINE, NULL, "cdrom_enabled", cdrom_enabled); config_set_int(CFG_MACHINE, NULL, "cdrom_enabled", cdrom_enabled);
config_set_int(CFG_MACHINE, NULL, "cdrom_channel", cdrom_channel); config_set_int(CFG_MACHINE, NULL, "cdrom_channel", cdrom_channel);
config_set_string(CFG_MACHINE, NULL, "cdrom_path", image_path); config_set_string(CFG_MACHINE, NULL, "cdrom_path", image_path);
config_set_int(CFG_MACHINE, NULL, "zip_channel", zip_channel);
config_set_int(CFG_MACHINE, NULL, "hdc_sectors", hdc[0].spt); config_set_int(CFG_MACHINE, NULL, "hdc_sectors", hdc[0].spt);
config_set_int(CFG_MACHINE, NULL, "hdc_heads", hdc[0].hpc); config_set_int(CFG_MACHINE, NULL, "hdc_heads", hdc[0].hpc);
config_set_int(CFG_MACHINE, NULL, "hdc_cylinders", hdc[0].tracks); config_set_int(CFG_MACHINE, NULL, "hdc_cylinders", hdc[0].tracks);

View file

@ -110,6 +110,13 @@
<label>Disable BPB checking</label> <label>Disable BPB checking</label>
<checkable>1</checkable> <checkable>1</checkable>
</object> </object>
<object class="separator"/>
<object class="wxMenuItem" name="IDM_DISC_ZIP">
<label>Load _ZIP drive...</label>
</object>
<object class="wxMenuItem" name="IDM_EJECT_ZIP">
<label>Eject ZIP drive</label>
</object>
</object> </object>
<object class="wxMenu" name="IDM_CDROM"> <object class="wxMenu" name="IDM_CDROM">
<label>_CD-ROM</label> <label>_CD-ROM</label>
@ -477,8 +484,7 @@
</object> </object>
<ids-range name="IDC_PANEL" start="10" /> <ids-range name="IDC_PANEL" start="10" />
<ids-range name="IDC_HDD" start="100" /> <ids-range name="IDC_COMBODRIVETYPE" start="100" />
<ids-range name="IDC_CDROM" start="200" />
<ids-range name="IDC_EDIT_FN" start="300" /> <ids-range name="IDC_EDIT_FN" start="300" />
<ids-range name="IDC_FILE" start="400" /> <ids-range name="IDC_FILE" start="400" />
<ids-range name="IDC_EJECT" start="500" /> <ids-range name="IDC_EJECT" start="500" />
@ -1164,24 +1170,16 @@
<flag>wxEXPAND</flag> <flag>wxEXPAND</flag>
<border>5</border> <border>5</border>
<object class="wxBoxSizer"> <object class="wxBoxSizer">
<orient>wxHORIZONTAL</orient> <orient>wxHORIZONTAL</orient>
<object class="sizeritem"> <object class="sizeritem">
<option>0</option> <option>0</option>
<flag>wxALL | wxALIGN_CENTER_VERTICAL</flag> <flag>wxALL</flag>
<border>5</border> <border>5</border>
<object class="wxRadioButton" name="IDC_HDD[0]"> <object class="wxComboBox" name="IDC_COMBODRIVETYPE[0]">
<style>wxRB_GROUP</style> <style>wxCB_DROPDOWN|wxCB_READONLY</style>
<label>Hard drive</label> <size>350,-1</size>
<value>0</value> <value></value>
</object> <content />
</object>
<object class="sizeritem">
<option>0</option>
<flag>wxALL | wxALIGN_CENTER_VERTICAL</flag>
<border>5</border>
<object class="wxRadioButton" name="IDC_CDROM[0]">
<label>CD-ROM</label>
<value>0</value>
</object> </object>
</object> </object>
<object class="spacer"> <object class="spacer">
@ -1367,21 +1365,13 @@
<orient>wxHORIZONTAL</orient> <orient>wxHORIZONTAL</orient>
<object class="sizeritem"> <object class="sizeritem">
<option>0</option> <option>0</option>
<flag>wxALL | wxALIGN_CENTER_VERTICAL</flag> <flag>wxALL</flag>
<border>5</border> <border>5</border>
<object class="wxRadioButton" name="IDC_HDD[1]"> <object class="wxComboBox" name="IDC_COMBODRIVETYPE[1]">
<style>wxRB_GROUP</style> <style>wxCB_DROPDOWN|wxCB_READONLY</style>
<label>Hard drive</label> <size>350,-1</size>
<value>0</value> <value></value>
</object> <content />
</object>
<object class="sizeritem">
<option>0</option>
<flag>wxALL | wxALIGN_CENTER_VERTICAL</flag>
<border>5</border>
<object class="wxRadioButton" name="IDC_CDROM[1]">
<label>CD-ROM</label>
<value>0</value>
</object> </object>
</object> </object>
<object class="spacer"> <object class="spacer">
@ -1567,21 +1557,13 @@
<orient>wxHORIZONTAL</orient> <orient>wxHORIZONTAL</orient>
<object class="sizeritem"> <object class="sizeritem">
<option>0</option> <option>0</option>
<flag>wxALL | wxALIGN_CENTER_VERTICAL</flag> <flag>wxALL</flag>
<border>5</border> <border>5</border>
<object class="wxRadioButton" name="IDC_HDD[2]"> <object class="wxComboBox" name="IDC_COMBODRIVETYPE[2]">
<style>wxRB_GROUP</style> <style>wxCB_DROPDOWN|wxCB_READONLY</style>
<label>Hard drive</label> <size>350,-1</size>
<value>0</value> <value></value>
</object> <content />
</object>
<object class="sizeritem">
<option>0</option>
<flag>wxALL | wxALIGN_CENTER_VERTICAL</flag>
<border>5</border>
<object class="wxRadioButton" name="IDC_CDROM[2]">
<label>CD-ROM</label>
<value>0</value>
</object> </object>
</object> </object>
<object class="spacer"> <object class="spacer">
@ -1767,21 +1749,13 @@
<orient>wxHORIZONTAL</orient> <orient>wxHORIZONTAL</orient>
<object class="sizeritem"> <object class="sizeritem">
<option>0</option> <option>0</option>
<flag>wxALL | wxALIGN_CENTER_VERTICAL</flag> <flag>wxALL</flag>
<border>5</border> <border>5</border>
<object class="wxRadioButton" name="IDC_HDD[3]"> <object class="wxComboBox" name="IDC_COMBODRIVETYPE[3]">
<style>wxRB_GROUP</style> <style>wxCB_DROPDOWN|wxCB_READONLY</style>
<label>Hard drive</label> <size>350,-1</size>
<value>0</value> <value></value>
</object> <content />
</object>
<object class="sizeritem">
<option>0</option>
<flag>wxALL | wxALIGN_CENTER_VERTICAL</flag>
<border>5</border>
<object class="wxRadioButton" name="IDC_CDROM[3]">
<label>CD-ROM</label>
<value>0</value>
</object> </object>
</object> </object>
<object class="spacer"> <object class="spacer">

View file

@ -3,6 +3,7 @@
#include "scsi.h" #include "scsi.h"
#include "scsi_cd.h" #include "scsi_cd.h"
#include "scsi_hd.h" #include "scsi_hd.h"
#include "scsi_zip.h"
#define STATE_IDLE 0 #define STATE_IDLE 0
#define STATE_COMMAND 1 #define STATE_COMMAND 1
@ -346,6 +347,8 @@ void scsi_bus_init(scsi_bus_t *bus)
{ {
if (cdrom_channel == c) if (cdrom_channel == c)
bus->devices[c] = &scsi_cd; bus->devices[c] = &scsi_cd;
else if (zip_channel == c)
bus->devices[c] = &scsi_zip;
else else
bus->devices[c] = &scsi_hd; bus->devices[c] = &scsi_hd;

1099
src/scsi_zip.c Normal file

File diff suppressed because it is too large Load diff

7
src/scsi_zip.h Normal file
View file

@ -0,0 +1,7 @@
#include "scsi.h"
extern scsi_device_t scsi_zip;
void zip_load(char *fn);
void zip_eject();
int zip_loaded();

View file

@ -39,6 +39,7 @@ static char hd_new_name[512];
static int hd_new_spt, hd_new_hpc, hd_new_cyl; static int hd_new_spt, hd_new_hpc, hd_new_cyl;
static int hd_new_type; static int hd_new_type;
static int new_cdrom_channel; static int new_cdrom_channel;
static int new_zip_channel;
extern int pause; extern int pause;
@ -365,7 +366,7 @@ int config_dlgsave(void* hdlg)
temp_voodoo != voodoo_enabled || temp_dynarec != cpu_use_dynarec || temp_voodoo != voodoo_enabled || temp_dynarec != cpu_use_dynarec ||
temp_fda_type != fdd_get_type(0) || temp_fdb_type != fdd_get_type(1) || temp_fda_type != fdd_get_type(0) || temp_fdb_type != fdd_get_type(1) ||
temp_mouse_type != mouse_type || hdd_changed || hd_changed || cdrom_channel != new_cdrom_channel || temp_mouse_type != mouse_type || hdd_changed || hd_changed || cdrom_channel != new_cdrom_channel ||
strcmp(lpt1_device_name, lpt_device_get_internal_name(temp_lpt1_device)) zip_channel != new_zip_channel || strcmp(lpt1_device_name, lpt_device_get_internal_name(temp_lpt1_device))
#ifdef USE_NETWORKING #ifdef USE_NETWORKING
|| temp_network_card != network_card_current || temp_network_card != network_card_current
#endif #endif
@ -454,6 +455,7 @@ int config_dlgsave(void* hdlg)
hdc[3] = hd[3]; hdc[3] = hd[3];
cdrom_channel = new_cdrom_channel; cdrom_channel = new_cdrom_channel;
zip_channel = new_zip_channel;
if (has_been_inited) if (has_been_inited)
{ {
@ -737,9 +739,51 @@ int config_dlgproc(void* hdlg, int message, INT_PARAM wParam, LONG_PARAM lParam)
hd_changed = 0; hd_changed = 0;
new_cdrom_channel = cdrom_channel; new_cdrom_channel = cdrom_channel;
new_zip_channel = zip_channel;
hdconf_init(hdlg); hdconf_init(hdlg);
h = wx_getdlgitem(hdlg, WX_ID("IDC_COMBODRIVETYPE[0]"));
wx_sendmessage(h, WX_CB_ADDSTRING, 0, (LONG_PARAM)"Hard drive");
wx_sendmessage(h, WX_CB_ADDSTRING, 0, (LONG_PARAM)"CD-ROM");
wx_sendmessage(h, WX_CB_ADDSTRING, 0, (LONG_PARAM)"Iomega Zip");
if (cdrom_channel == 0)
wx_sendmessage(h, WX_CB_SETCURSEL, 1, 0);
else if (zip_channel == 0)
wx_sendmessage(h, WX_CB_SETCURSEL, 2, 0);
else
wx_sendmessage(h, WX_CB_SETCURSEL, 0, 0);
h = wx_getdlgitem(hdlg, WX_ID("IDC_COMBODRIVETYPE[1]"));
wx_sendmessage(h, WX_CB_ADDSTRING, 0, (LONG_PARAM)"Hard drive");
wx_sendmessage(h, WX_CB_ADDSTRING, 0, (LONG_PARAM)"CD-ROM");
wx_sendmessage(h, WX_CB_ADDSTRING, 0, (LONG_PARAM)"Iomega Zip");
if (cdrom_channel == 1)
wx_sendmessage(h, WX_CB_SETCURSEL, 1, 0);
else if (zip_channel == 1)
wx_sendmessage(h, WX_CB_SETCURSEL, 2, 0);
else
wx_sendmessage(h, WX_CB_SETCURSEL, 0, 0);
h = wx_getdlgitem(hdlg, WX_ID("IDC_COMBODRIVETYPE[2]"));
wx_sendmessage(h, WX_CB_ADDSTRING, 0, (LONG_PARAM)"Hard drive");
wx_sendmessage(h, WX_CB_ADDSTRING, 0, (LONG_PARAM)"CD-ROM");
wx_sendmessage(h, WX_CB_ADDSTRING, 0, (LONG_PARAM)"Iomega Zip");
if (cdrom_channel == 2)
wx_sendmessage(h, WX_CB_SETCURSEL, 1, 0);
else if (zip_channel == 2)
wx_sendmessage(h, WX_CB_SETCURSEL, 2, 0);
else
wx_sendmessage(h, WX_CB_SETCURSEL, 0, 0);
h = wx_getdlgitem(hdlg, WX_ID("IDC_COMBODRIVETYPE[3]"));
wx_sendmessage(h, WX_CB_ADDSTRING, 0, (LONG_PARAM)"Hard drive");
wx_sendmessage(h, WX_CB_ADDSTRING, 0, (LONG_PARAM)"CD-ROM");
wx_sendmessage(h, WX_CB_ADDSTRING, 0, (LONG_PARAM)"Iomega Zip");
if (cdrom_channel == 3)
wx_sendmessage(h, WX_CB_SETCURSEL, 1, 0);
else if (zip_channel == 3)
wx_sendmessage(h, WX_CB_SETCURSEL, 2, 0);
else
wx_sendmessage(h, WX_CB_SETCURSEL, 0, 0);
#ifdef USE_NETWORKING #ifdef USE_NETWORKING
recalc_net_list(hdlg, romstomodel[romset]); recalc_net_list(hdlg, romstomodel[romset]);
@ -1237,13 +1281,16 @@ static void update_hdd_cdrom(void* hdlg)
for (i = 0; i < 4; ++i) for (i = 0; i < 4; ++i)
{ {
b = !is_mfm && (new_cdrom_channel == i); b = !is_mfm && ((new_cdrom_channel == i) || (new_zip_channel == i));
sprintf(s, "IDC_HDD[%d]", i); pclog("update_hdd_cdrom: i=%i b=%i new_cdrom_channel=%i new_zip_channel=%i\n", i, b, new_cdrom_channel, new_zip_channel);
sprintf(s, "IDC_COMBODRIVETYPE[%d]", i);
h = wx_getdlgitem(hdlg, WX_ID(s)); h = wx_getdlgitem(hdlg, WX_ID(s));
wx_sendmessage(h, WX_BM_SETCHECK, b ? 0 : 1, 0); if (i == new_cdrom_channel)
sprintf(s, "IDC_CDROM[%d]", i); wx_sendmessage(h, WX_CB_SETCURSEL, 1, 0);
h = wx_getdlgitem(hdlg, WX_ID(s)); else if (i == new_zip_channel)
wx_sendmessage(h, WX_BM_SETCHECK, b ? 1 : 0, 0); wx_sendmessage(h, WX_CB_SETCURSEL, 2, 0);
else
wx_sendmessage(h, WX_CB_SETCURSEL, 0, 0);
sprintf(s, "IDC_EDIT_FN[%d]", i); sprintf(s, "IDC_EDIT_FN[%d]", i);
wx_enablewindow(wx_getdlgitem(hdlg, WX_ID(s)), !b); wx_enablewindow(wx_getdlgitem(hdlg, WX_ID(s)), !b);
sprintf(s, "IDC_FILE[%d]", i); sprintf(s, "IDC_FILE[%d]", i);
@ -1612,39 +1659,14 @@ int hdconf_update(void* hdlg)
update_hdd_cdrom(hdlg); update_hdd_cdrom(hdlg);
int i, j; int i;
for (i = 0; i < 4; ++i) for (i = 0; i < 4; ++i)
{ {
sprintf(s, "IDC_HDD_LABEL[%d]", i*10); sprintf(s, "IDC_HDD_LABEL[%d]", i*10);
wx_enablewindow(wx_getdlgitem(hdlg, WX_ID(s)), !is_mfm); wx_enablewindow(wx_getdlgitem(hdlg, WX_ID(s)), !is_mfm);
sprintf(s, "IDC_HDD[%d]", i); sprintf(s, "IDC_COMBODRIVETYPE[%d]", i);
h = wx_getdlgitem(hdlg, WX_ID(s));
wx_enablewindow(wx_getdlgitem(hdlg, WX_ID(s)), !is_mfm); wx_enablewindow(wx_getdlgitem(hdlg, WX_ID(s)), !is_mfm);
sprintf(s, "IDC_CDROM[%d]", i);
wx_enablewindow(wx_getdlgitem(hdlg, WX_ID(s)), !is_mfm);
if (i >= 2)
{
sprintf(s, "IDC_EDIT_FN[%d]", i);
wx_enablewindow(wx_getdlgitem(hdlg, WX_ID(s)), !is_mfm);
sprintf(s, "IDC_FILE[%d]", i);
wx_enablewindow(wx_getdlgitem(hdlg, WX_ID(s)), !is_mfm);
sprintf(s, "IDC_EJECT[%d]", i);
wx_enablewindow(wx_getdlgitem(hdlg, WX_ID(s)), !is_mfm);
sprintf(s, "IDC_NEW[%d]", i);
wx_enablewindow(wx_getdlgitem(hdlg, WX_ID(s)), !is_mfm);
sprintf(s, "IDC_EDIT_SPT[%d]", i);
wx_enablewindow(wx_getdlgitem(hdlg, WX_ID(s)), !is_mfm);
sprintf(s, "IDC_EDIT_HPC[%d]", i);
wx_enablewindow(wx_getdlgitem(hdlg, WX_ID(s)), !is_mfm);
sprintf(s, "IDC_EDIT_CYL[%d]", i);
wx_enablewindow(wx_getdlgitem(hdlg, WX_ID(s)), !is_mfm);
sprintf(s, "IDC_TEXT_SIZE[%d]", i);
wx_enablewindow(wx_getdlgitem(hdlg, WX_ID(s)), !is_mfm);
for (j = 1; j < 6; ++j)
{
sprintf(s, "IDC_HDD_LABEL[%d]", i*10+j);
wx_enablewindow(wx_getdlgitem(hdlg, WX_ID(s)), !is_mfm);
}
}
} }
h = wx_getdlgitem(hdlg, WX_ID("IDC_CONFIGUREHDD")); h = wx_getdlgitem(hdlg, WX_ID("IDC_CONFIGUREHDD"));
@ -2036,60 +2058,122 @@ int hdconf_dlgproc(void* hdlg, int message, INT_PARAM wParam, LONG_PARAM lParam)
wx_sendmessage(h, WX_WM_SETTEXT, 0, (LONG_PARAM)s); wx_sendmessage(h, WX_WM_SETTEXT, 0, (LONG_PARAM)s);
return TRUE; return TRUE;
} }
else if (ID_IS("IDC_HDD[0]")) else if (ID_IS("IDC_COMBODRIVETYPE[0]"))
{ {
if (new_cdrom_channel == 0) int type;
new_cdrom_channel = -1;
h = wx_getdlgitem(hdlg, WX_ID("IDC_COMBODRIVETYPE[0]"));
type = wx_sendmessage(h, WX_CB_GETCURSEL, 0, 0);
switch (type)
{
case 0: /*Hard drive*/
if (new_cdrom_channel == 0)
new_cdrom_channel = -1;
if (new_zip_channel == 0)
new_zip_channel = -1;
break;
case 1: /*CD-ROM*/
new_cdrom_channel = 0;
if (new_zip_channel == 0)
new_zip_channel = -1;
break;
case 2: /*Zip*/
new_zip_channel = 0;
if (new_cdrom_channel == 0)
new_cdrom_channel = -1;
break;
}
update_hdd_cdrom(hdlg); update_hdd_cdrom(hdlg);
return TRUE; return TRUE;
} }
else if (ID_IS("IDC_HDD[1]")) else if (ID_IS("IDC_COMBODRIVETYPE[1]"))
{ {
if (new_cdrom_channel == 1) int type;
new_cdrom_channel = -1;
h = wx_getdlgitem(hdlg, WX_ID("IDC_COMBODRIVETYPE[1]"));
type = wx_sendmessage(h, WX_CB_GETCURSEL, 0, 0);
switch (type)
{
case 0: /*Hard drive*/
if (new_cdrom_channel == 1)
new_cdrom_channel = -1;
if (new_zip_channel == 1)
new_zip_channel = -1;
break;
case 1: /*CD-ROM*/
new_cdrom_channel = 1;
if (new_zip_channel == 1)
new_zip_channel = -1;
break;
case 2: /*Zip*/
new_zip_channel = 1;
if (new_cdrom_channel == 1)
new_cdrom_channel = -1;
break;
}
update_hdd_cdrom(hdlg); update_hdd_cdrom(hdlg);
return TRUE; return TRUE;
} }
else if (ID_IS("IDC_HDD[2]")) else if (ID_IS("IDC_COMBODRIVETYPE[2]"))
{ {
if (new_cdrom_channel == 2) int type;
new_cdrom_channel = -1;
h = wx_getdlgitem(hdlg, WX_ID("IDC_COMBODRIVETYPE[2]"));
type = wx_sendmessage(h, WX_CB_GETCURSEL, 0, 0);
switch (type)
{
case 0: /*Hard drive*/
if (new_cdrom_channel == 2)
new_cdrom_channel = -1;
if (new_zip_channel == 2)
new_zip_channel = -1;
break;
case 1: /*CD-ROM*/
new_cdrom_channel = 2;
if (new_zip_channel == 2)
new_zip_channel = -1;
break;
case 2: /*Zip*/
new_zip_channel = 2;
if (new_cdrom_channel == 2)
new_cdrom_channel = -1;
break;
}
update_hdd_cdrom(hdlg); update_hdd_cdrom(hdlg);
return TRUE; return TRUE;
} }
else if (ID_IS("IDC_HDD[3]")) else if (ID_IS("IDC_COMBODRIVETYPE[3]"))
{ {
if (new_cdrom_channel == 3) int type;
new_cdrom_channel = -1;
update_hdd_cdrom(hdlg); h = wx_getdlgitem(hdlg, WX_ID("IDC_COMBODRIVETYPE[3]"));
return TRUE; type = wx_sendmessage(h, WX_CB_GETCURSEL, 0, 0);
} switch (type)
else if (ID_IS("IDC_CDROM[0]")) {
{ case 0: /*Hard drive*/
new_cdrom_channel = 0; if (new_cdrom_channel == 3)
new_cdrom_channel = -1;
if (new_zip_channel == 3)
new_zip_channel = -1;
break;
case 1: /*CD-ROM*/
new_cdrom_channel = 3;
if (new_zip_channel == 3)
new_zip_channel = -1;
break;
case 2: /*Zip*/
new_zip_channel = 3;
if (new_cdrom_channel == 3)
new_cdrom_channel = -1;
break;
}
update_hdd_cdrom(hdlg); update_hdd_cdrom(hdlg);
return TRUE; return TRUE;
} }
else if (ID_IS("IDC_CDROM[1]"))
{
new_cdrom_channel = 1;
update_hdd_cdrom(hdlg);
return TRUE;
}
else if (ID_IS("IDC_CDROM[2]"))
{
new_cdrom_channel = 2;
update_hdd_cdrom(hdlg);
return TRUE;
}
else if (ID_IS("IDC_CDROM[3]"))
{
new_cdrom_channel = 3;
update_hdd_cdrom(hdlg);
return TRUE;
}
} }
return FALSE; return FALSE;
} }

File diff suppressed because it is too large Load diff

View file

@ -13,6 +13,7 @@
#include "hdd.h" #include "hdd.h"
#include "ide.h" #include "ide.h"
#include "cdrom-image.h" #include "cdrom-image.h"
#include "scsi_zip.h"
#include "wx-common.h" #include "wx-common.h"
drive_info_t drive_info[10]; drive_info_t drive_info[10];
@ -79,7 +80,19 @@ drive_info_t* get_machine_info(char* s, int* num_drive_info) {
drive_info[pos].readflash = readflash_get(READFLASH_HDC, i); drive_info[pos].readflash = readflash_get(READFLASH_HDC, i);
readflash_clear(READFLASH_HDC, i); readflash_clear(READFLASH_HDC, i);
pos++; pos++;
} else if (strlen(ide_fn[i]) > 0) }
else if (!hdd_controller_current_is_mfm() && i == zip_channel)
{
strcpy(drive_info[pos].fn, "");
drive_info[pos].enabled = zip_loaded();
drive_info[pos].drive = i;
drive_info[pos].drive_letter = drive;
drive_info[pos].type = DRIVE_TYPE_FDD;
drive_info[pos].readflash = readflash_get(READFLASH_HDC, i);
readflash_clear(READFLASH_HDC, i);
pos++;
}
else if (strlen(ide_fn[i]) > 0)
{ {
strcpy(drive_info[pos].fn, ide_fn[i]); strcpy(drive_info[pos].fn, ide_fn[i]);
drive_info[pos].enabled = 1; drive_info[pos].enabled = 1;

View file

@ -29,6 +29,7 @@
#include "nvr.h" #include "nvr.h"
#include "plat-joystick.h" #include "plat-joystick.h"
#include "plat-midi.h" #include "plat-midi.h"
#include "scsi_zip.h"
#include "sound.h" #include "sound.h"
#include "thread.h" #include "thread.h"
#include "disc.h" #include "disc.h"
@ -855,6 +856,21 @@ int wx_handle_command(void* hwnd, int wParam, int checked)
wx_checkmenuitem(hmenu, wParam, bpb_disable); wx_checkmenuitem(hmenu, wParam, bpb_disable);
saveconfig(NULL); saveconfig(NULL);
} }
else if (ID_IS("IDM_DISC_ZIP"))
{
char zip_fn[256] = "";
if (!getfile(hwnd,
"Disc image (*.img)|*.img|All files (*.*)|*.*",
zip_fn))
{
zip_load(openfilestring);
}
}
else if (ID_IS("IDM_EJECT_ZIP"))
{
zip_eject();
}
else if (ID_IS("IDM_MACHINE_TOGGLE")) else if (ID_IS("IDM_MACHINE_TOGGLE"))
{ {
if (emulation_state != EMULATION_STOPPED) if (emulation_state != EMULATION_STOPPED)