Annotation of hatari/src/reset.c, revision 1.1

1.1     ! root        1: /*
        !             2:   Hatari
        !             3: 
        !             4:   Reset emulation state
        !             5: */
        !             6: 
        !             7: #include "main.h"
        !             8: #include "cart.h"
        !             9: #include "decode.h"
        !            10: #include "fdc.h"
        !            11: #include "floppy.h"
        !            12: #include "gemdos.h"
        !            13: #include "ikbd.h"
        !            14: #include "int.h"
        !            15: #include "m68000.h"
        !            16: #include "misc.h"
        !            17: #include "mfp.h"
        !            18: #include "psg.h"
        !            19: #include "reset.h"
        !            20: #include "screen.h"
        !            21: #include "sound.h"
        !            22: #include "stMemory.h"
        !            23: #include "tos.h"
        !            24: #include "video.h"
        !            25: 
        !            26: //-----------------------------------------------------------------------
        !            27: /*
        !            28:   Cold reset ST (reset memory, all registers and reboot)
        !            29: */
        !            30: void Reset_Cold(void)
        !            31: {
        !            32:   Reset_ST(TRUE);
        !            33: }
        !            34: 
        !            35: //-----------------------------------------------------------------------
        !            36: /*
        !            37:   Warm reset ST (reset registers, leave in same state and reboot)
        !            38: */
        !            39: void Reset_Warm(void)
        !            40: {
        !            41:   Reset_ST(FALSE);
        !            42: }
        !            43: 
        !            44: //-----------------------------------------------------------------------
        !            45: /*
        !            46:   Reset ST emulator states, chips, interrupts and registers
        !            47: */
        !            48: void Reset_ST(BOOL bCold)
        !            49: {
        !            50:   if (bCold) {
        !            51:     STMemory_Clear(0x00000000,0x00400000);  // Clear First 4Mb
        !            52:     STMemory_Clear(0x00e00000,0x00ffffff);  // Clear Upper memory  
        !            53:     STMemory_WriteLong(4,0x00fc0020);       // Set reset vector
        !            54:     STMemory_WriteLong(0,0x0000f000);       // And reset stack pointer
        !            55: 
        !            56:     Floppy_GetBootDrive();          // Find which device to boot from(A: or C:)
        !            57:     Cart_LoadImage();               // Load program into cartridge memory. Used for gemdos loading
        !            58:     TOS_LoadImage();                // Load TOS, writes into cartridge memory
        !            59:   }
        !            60:   Int_Reset();                      // Reset interrupts
        !            61:   MFP_Reset();                      // Setup MFP chip
        !            62:   Video_Reset();                    // Reset video
        !            63:   if (bCold) {
        !            64:     FDC_Reset();                    // Reset FDC
        !            65:     GemDOS_Reset();                 // Reset GEM
        !            66:   }
        !            67:   PSG_Reset();                      // Reset PSG
        !            68:   Sound_Reset();                    // Reset Sound
        !            69:   IKBD_Reset(bCold);                // Keyboard  
        !            70:   Screen_Reset();                   // Reset screen
        !            71:   M68000_Reset(bCold);              // Reset CPU
        !            72: 
        !            73:   // And VBL interrupt, MUST always be one interrupt ready to trigger
        !            74:   Int_AddAbsoluteInterrupt(CYCLES_ENDLINE,INTERRUPT_VIDEO_ENDLINE);
        !            75:   Int_AddAbsoluteInterrupt(CYCLES_HBL,INTERRUPT_VIDEO_HBL);
        !            76:   Int_AddAbsoluteInterrupt(CYCLES_PER_FRAME,INTERRUPT_VIDEO_VBL);
        !            77:   // And keyboard check for debugger
        !            78: #ifdef USE_DEBUGGER
        !            79:   Int_AddAbsoluteInterrupt(CYCLES_DEBUGGER,INTERRUPT_DEBUGGER);
        !            80: #endif
        !            81: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.