--- previous/src/reset.c 2018/04/24 19:25:10 1.1 +++ previous/src/reset.c 2018/04/24 19:33:16 1.1.1.6 @@ -10,35 +10,63 @@ const char Reset_fileid[] = "Hatari rese #include "main.h" #include "configuration.h" -#include "cart.h" #include "cycInt.h" #include "m68000.h" #include "reset.h" #include "screen.h" #include "nextMemory.h" +#include "tmc.h" #include "video.h" - +#include "debugcpu.h" +#include "scsi.h" +#include "mo.h" +#include "sysReg.h" +#include "rtcnvram.h" +#include "scc.h" +#include "ethernet.h" +#include "floppy.h" +#include "snd.h" +#include "printer.h" +#include "dsp.h" +#include "kms.h" +#include "NextBus.hpp" /*-----------------------------------------------------------------------*/ /** - * Reset ST emulator states, chips, interrupts and registers. - * Return zero or negative TOS image load error code. + * Reset NEXT emulator states, chips, interrupts and registers. */ -static int Reset_ST(bool bCold) +static const char* Reset_NeXT(bool bCold) { - if (bCold) - { - int ret; - memory_init(8*1024*1024); - + if (bCold) { + const char* error_str; + error_str=memory_init(ConfigureParams.Memory.nMemoryBankSize); + if (error_str!=NULL) { + return error_str; + } } + + host_reset(); /* Reset host related timing vars */ + CycInt_Reset(); /* Reset interrupts */ + Main_SpeedReset(); /* Reset speed reporting system */ Video_Reset(); /* Reset video */ - - Screen_Reset(); /* Reset screen */ + TMC_Reset(); /* Reset TMC Registers */ + SCR_Reset(); /* Reset System Control Registers */ + nvram_init(); /* Reset NVRAM */ + SCSI_Reset(); /* Reset SCSI disks */ + MO_Reset(); /* Reset MO disks */ + Floppy_Reset(); /* Reset Floppy disks */ + SCC_Reset(2); /* Reset SCC */ + Ethernet_Reset(true); /* Reset Ethernet */ + KMS_Reset(); /* Reset KMS */ + Sound_Reset(); /* Reset Sound */ + Printer_Reset(); /* Reset Printer */ + DSP_Reset(); /* Reset DSP */ + NextBus_Reset(); /* Reset NextBus */ M68000_Reset(bCold); /* Reset CPU */ - - return 0; + DebugCpu_SetDebugging(); /* Re-set debugging flag if needed */ + + return NULL; } @@ -46,11 +74,11 @@ static int Reset_ST(bool bCold) /** * Cold reset ST (reset memory, all registers and reboot) */ -int Reset_Cold(void) +const char* Reset_Cold(void) { Main_WarpMouse(sdlscrn->w/2, sdlscrn->h/2); /* Set mouse pointer to the middle of the screen */ - return Reset_ST(true); + return Reset_NeXT(true); } @@ -58,7 +86,7 @@ int Reset_Cold(void) /** * Warm reset ST (reset registers, leave in same state and reboot) */ -int Reset_Warm(void) +const char* Reset_Warm(void) { - return Reset_ST(false); + return Reset_NeXT(false); }