/* cpu >= 68020: another "too fast" memory/CPU hack */
if (cdp->state == 0 || currprefs.cpu_model >= 68020) {
cdp->state = 2;
+ cdp->wlen = cdp->len;
+ cdp->pt = cdp->lc;
if (currprefs.cpu_model >= 68020)
INTREQ (0x80 << nr);
audio_handler (nr);
while (dma_finished)
sleep_millis (2);
+ if (!cdtv_sectorsize)
+ return;
cnt = dmac_wtc;
write_log ("DMAC DMA: sector=%d, addr=%08.8X, words=%d (of %d)\n",
cdrom_offset / cdtv_sectorsize, dmac_acr, cnt, cdrom_length / 2);
b &= 0xff;
if (addr == 0x48) {
map_banks (&dmac_bank, b, 0x10000 >> 16, 0x10000);
- write_log ("CDTV DMAC autoconfigured at %02.2X0000\n", b & 0xff);
+ write_log ("CDTV DMAC autoconfigured at %02X0000\n", b);
configured = 1;
expamem_next();
return;
b = get_word (ts->addr);
}
if (mode)
- console_out("%08.8X=%4.4X ", ts->addr, b);
+ console_out("%08X=%04X ", ts->addr, b);
else
- console_out("%08.8X ", ts->addr);
+ console_out("%08X ", ts->addr);
if ((i % skip) == skip)
console_out("\n");
}
if (doublescan)
visible_left_border = (max_diwlastword - 48) / 2 - gfxvidinfo.width;
}
- visible_left_border += currprefs.gfx_xcenter_adjust;
+ if (currprefs.gfx_xcenter_adjust > 0)
+ visible_left_border = currprefs.gfx_xcenter_adjust + (DIW_DDF_OFFSET << currprefs.gfx_resolution);
visible_left_border &= ~((xshift (1, lores_shift)) - 1);
if (visible_left_border > max_diwlastword - 32)
thisframe_y_adjust = prev_y_adjust;
}
}
- thisframe_y_adjust += currprefs.gfx_ycenter_adjust;
- /* Make sure the value makes sense */
- if (thisframe_y_adjust + max_drawn_amiga_line > maxvpos_max)
- thisframe_y_adjust = maxvpos_max - max_drawn_amiga_line;
- if (thisframe_y_adjust < minfirstline)
- thisframe_y_adjust = minfirstline;
-
+ if (currprefs.gfx_ycenter_adjust > 0) {
+ thisframe_y_adjust = currprefs.gfx_ycenter_adjust;
+ if (thisframe_y_adjust + max_drawn_amiga_line > 2 * maxvpos_max)
+ thisframe_y_adjust = 2 * maxvpos_max - max_drawn_amiga_line;
+ if (thisframe_y_adjust < 0)
+ thisframe_y_adjust = 0;
+ } else {
+ /* Make sure the value makes sense */
+ if (thisframe_y_adjust + max_drawn_amiga_line > maxvpos_max)
+ thisframe_y_adjust = maxvpos_max - max_drawn_amiga_line;
+ if (thisframe_y_adjust < minfirstline)
+ thisframe_y_adjust = minfirstline;
+ }
thisframe_y_adjust_real = thisframe_y_adjust << (linedbl ? 1 : 0);
tmp = (maxvpos_max - thisframe_y_adjust) << (linedbl ? 1 : 0);
if (tmp != max_ypos_thisframe) {
extendedkickmem_size = 0x80000;
if (currprefs.cs_cdtvcd || currprefs.cs_cdtvram) {
extendedkickmem_type = EXTENDED_ROM_CDTV;
+ extendedkickmem_size *= 2;
extendedkickmemory = mapped_malloc (extendedkickmem_size, "rom_f0");
} else {
extendedkickmem_type = EXTENDED_ROM_KS;
}
extendedkickmem_bank.baseaddr = extendedkickmemory;
zfile_fseek (f, extpos, SEEK_SET);
- read_kickstart (f, extendedkickmemory, 0x80000, 0, 0, 1);
+ read_kickstart (f, extendedkickmemory, extendedkickmem_size, 0, 0, 1);
extendedkickmem_mask = extendedkickmem_size - 1;
}
if (filesize > 524288 * 2) {
map_banks (&kickmem_bank, addr, 8, 0);
}
-#ifdef AUTOCONFIG
- if (need_uae_boot_rom ())
- map_banks (&rtarea_bank, rtarea_base >> 16, 1, 0);
-#endif
-
if (a1000_bootrom)
a1000_handle_kickstart (1);
#ifdef AUTOCONFIG
break;
#ifdef CDTV
case EXTENDED_ROM_CDTV:
- map_banks (&extendedkickmem_bank, 0xF0, 8, 0);
+ map_banks (&extendedkickmem_bank, 0xF0, extendedkickmem_size == 2 * 524288 ? 16 : 8, 0);
break;
#endif
#ifdef CD32
#endif
}
+#ifdef AUTOCONFIG
+ if (need_uae_boot_rom ())
+ map_banks (&rtarea_bank, rtarea_base >> 16, 1, 0);
+#endif
+
if ((cloanto_rom || currprefs.cs_ksmirror_e0) && !currprefs.maprom && !extendedkickmem_type)
map_banks (&kickmem_bank, 0xE0, 8, 0);
if (currprefs.cs_ksmirror_a8) {
put_word (m68k_areg (regs, 7) + 8, regs->sr);
put_long (m68k_areg (regs, 7) + 10, last_addr_for_exception_3);
write_log ("Exception %d (%x) at %x -> %x!\n", nr, oldpc, currpc, get_long (regs->vbr + 4*nr));
- activate_debugger();
goto kludge_me_do;
}
m68k_areg (regs, 7) -= 4;
#endif
extern int harddrive_dangerous, do_rdbdump, aspi_allow_all, no_rawinput;
-int log_scsi, log_net = 1;
+int log_scsi, log_net = 0;
extern FILE *debugfile;
extern int console_logging;
#define GETBDM(x) (((x) - ((x / 10000) * 10000)) / 100)
#define GETBDD(x) ((x) % 100)
-#define WINUAEBETA 6
+#define WINUAEBETA 7
#define WINUAEPUBLICBETA 1
-#define WINUAEDATE MAKEBD(2008, 1, 16)
+#define WINUAEDATE MAKEBD(2008, 1, 21)
#define WINUAEEXTRA ""
#define WINUAEREV ""
1.4.6 will be the last Windows 98/ME compatible version. 1.5.0
will require Windows 2000 or newer.
+Beta 7:
+
+- debugger activating when address error happened (debug code..)
+- 1M CDTV ROM (0xf00000-0xffffff) confused CPU emulator if m68k
+ instruction crossed extended and ks rom memory banks, 1M CDTV ROM is
+ now single 1M extended rom bank (I am still doing 1M real CDTV EPROM
+ tests..)
+- audio emulation update, copy AUDLEN and AUDLC to backup registers
+ when AUDxDAT starts interrupt-driven audio mode (Dungeon Master II)
+
Beta 6:
- binary support added to debugger, '%10101'
{
put_long (ioreq + 20, -1);
put_byte (ioreq + 31, error);
+ put_long (ioreq + 32, 0); /* io_device */
return (uae_u32)-1;
}
write_log ("opening %s:%d ioreq=%08.8X\n", SANA2NAME, unit, ioreq);
if (!dev)
return openfail (ioreq, 32); /* badunitnum */
+ if (get_word (ioreq + 0x12) < 32 + 4 + 4 + SANA2_MAX_ADDR_BYTES * 2 + 4 + 4 + 4 + 4)
+ return openfail (ioreq, -1); /* too small iorequest */
+
if (!buffermgmt)
return openfail (ioreq, S2ERR_BAD_ARGUMENT);
if ((flags & SANA2OPF_PROM) && dev->opencnt > 0)