cfgfile_dwrite_strarr(f, _T("unmapped_address_space"), unmapped, p->cs_unmapped_space);
cfgfile_dwrite_bool(f, _T("memory_pattern"), p->cs_memorypatternfill);
cfgfile_dwrite_bool(f, _T("ipl_delay"), p->cs_ipldelay);
+ cfgfile_dwrite_bool(f, _T("floppydata_pullup"), p->cs_floppydatapullup);
cfgfile_dwrite(f, _T("keyboard_handshake"), _T("%d"), currprefs.cs_kbhandshake);
cfgfile_dwrite(f, _T("chipset_hacks"), _T("0x%x"), p->cs_hacks);
cfgfile_dwrite(f, _T("eclockphase"), _T("%d"), p->cs_eclockphase);
|| cfgfile_strval(option, value, _T("unmapped_address_space"), &p->cs_unmapped_space, unmapped, 0)
|| cfgfile_yesno(option, value, _T("memory_pattern"), &p->cs_memorypatternfill)
|| cfgfile_yesno(option, value, _T("ipl_delay"), &p->cs_ipldelay)
+ || cfgfile_yesno(option, value, _T("floppydata_pullup"), &p->cs_floppydatapullup)
|| cfgfile_strval(option, value, _T("ciaa_type"), &p->cs_ciatype[0], ciatype, 0)
|| cfgfile_strval(option, value, _T("ciab_type"), &p->cs_ciatype[1], ciatype, 0)
|| cfgfile_strboolval(option, value, _T("comp_flushmode"), &p->comp_hardflush, flushmode, 0)
p->cs_ciatype[1] = 0;
p->cs_memorypatternfill = true;
p->cs_ipldelay = false;
+ p->cs_floppydatapullup = false;
for (int i = 0; i < MAX_FILTERDATA; i++) {
struct gfx_filterdata *f = &p->gf[i];
p->genlock_image = 6;
p->floppyslots[0].dfxtype = DRV_NONE;
p->floppyslots[1].dfxtype = DRV_NONE;
+ p->cs_floppydatapullup = true;
set_68000_compa(p, compa);
p->cs_compatible = CP_A500;
built_in_chipset_prefs(p);
}
}
-static void disk_doupdate_read_reallynothing(int floppybits, bool state)
+static void disk_doupdate_read_reallynothing(int floppybits)
{
int speed = get_floppy_speed();
+ bool state = currprefs.cs_floppydatapullup;
+
while (floppybits >= speed) {
bool skipbit = false;
bool waszero = word == 0;
static void disk_doupdate_read_nothing(int floppybits)
{
int speed = get_floppy_speed();
+ bool state = currprefs.cs_floppydatapullup;
while (floppybits >= speed) {
bool skipbit = false;
word <<= 1;
- word |= (uaerand() & 0x1000) ? 1 : 0;
+ if (state) {
+ word |= 1;
+ } else {
+ word |= (uaerand() & 0x1000) ? 1 : 0;
+ }
doreaddma();
// MSBSYNC
if (adkcon & 0x200) {
/* no floppy selected and no DMA */
if ((selected | disabled) == 15) {
if (dskdmaen < DSKDMA_WRITE) {
- disk_doupdate_read_reallynothing(cycles, false);
+ disk_doupdate_read_reallynothing(cycles);
} else if (dskdmaen == DSKDMA_WRITE) {
disk_doupdate_write(cycles, get_floppy_speed());
}