|
|
1.1 ! root 1: /* ! 2: Hatari ! 3: ! 4: This file is distributed under the GNU Public License, version 2 or at ! 5: your option any later version. Read the file gpl.txt for details. ! 6: ! 7: Reset emulation state. ! 8: */ ! 9: const char Reset_fileid[] = "Hatari reset.c : " __DATE__ " " __TIME__; ! 10: ! 11: #include "main.h" ! 12: #include "configuration.h" ! 13: #include "cycInt.h" ! 14: #include "m68000.h" ! 15: #include "reset.h" ! 16: #include "screen.h" ! 17: #include "nextMemory.h" ! 18: #include "tmc.h" ! 19: #include "video.h" ! 20: #include "debugcpu.h" ! 21: #include "scsi.h" ! 22: #include "mo.h" ! 23: #include "sysReg.h" ! 24: #include "rtcnvram.h" ! 25: #include "scc.h" ! 26: #include "ethernet.h" ! 27: #include "floppy.h" ! 28: #include "snd.h" ! 29: #include "printer.h" ! 30: #include "dsp.h" ! 31: #include "kms.h" ! 32: #include "NextBus.hpp" ! 33: ! 34: /*-----------------------------------------------------------------------*/ ! 35: /** ! 36: * Reset NEXT emulator states, chips, interrupts and registers. ! 37: */ ! 38: static const char* Reset_NeXT(bool bCold) ! 39: { ! 40: if (bCold) { ! 41: const char* error_str; ! 42: error_str=memory_init(ConfigureParams.Memory.nMemoryBankSize); ! 43: if (error_str!=NULL) { ! 44: return error_str; ! 45: } ! 46: } ! 47: ! 48: host_reset(); /* Reset host related timing vars */ ! 49: ! 50: CycInt_Reset(); /* Reset interrupts */ ! 51: Main_SpeedReset(); /* Reset speed reporting system */ ! 52: Video_Reset(); /* Reset video */ ! 53: TMC_Reset(); /* Reset TMC Registers */ ! 54: SCR_Reset(); /* Reset System Control Registers */ ! 55: nvram_init(); /* Reset NVRAM */ ! 56: SCSI_Reset(); /* Reset SCSI disks */ ! 57: MO_Reset(); /* Reset MO disks */ ! 58: Floppy_Reset(); /* Reset Floppy disks */ ! 59: SCC_Reset(2); /* Reset SCC */ ! 60: Ethernet_Reset(true); /* Reset Ethernet */ ! 61: KMS_Reset(); /* Reset KMS */ ! 62: Sound_Reset(); /* Reset Sound */ ! 63: Printer_Reset(); /* Reset Printer */ ! 64: DSP_Reset(); /* Reset DSP */ ! 65: NextBus_Reset(); /* Reset NextBus */ ! 66: M68000_Reset(bCold); /* Reset CPU */ ! 67: DebugCpu_SetDebugging(); /* Re-set debugging flag if needed */ ! 68: ! 69: return NULL; ! 70: } ! 71: ! 72: ! 73: /*-----------------------------------------------------------------------*/ ! 74: /** ! 75: * Cold reset ST (reset memory, all registers and reboot) ! 76: */ ! 77: const char* Reset_Cold(void) ! 78: { ! 79: Main_WarpMouse(sdlscrn->w/2, sdlscrn->h/2); /* Set mouse pointer to the middle of the screen */ ! 80: ! 81: return Reset_NeXT(true); ! 82: } ! 83: ! 84: ! 85: /*-----------------------------------------------------------------------*/ ! 86: /** ! 87: * Warm reset ST (reset registers, leave in same state and reboot) ! 88: */ ! 89: const char* Reset_Warm(void) ! 90: { ! 91: return Reset_NeXT(false); ! 92: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.