|
|
1.1 ! root 1: /* ! 2: * UAE - The Un*x Amiga Emulator ! 3: * ! 4: * Debugger ! 5: * ! 6: * (c) 1995 Bernd Schmidt ! 7: * ! 8: */ ! 9: ! 10: #ifdef DEBUGGER ! 11: ! 12: #define MAX_HIST 500 ! 13: #define MAX_LINEWIDTH 100 ! 14: ! 15: extern int debugging; ! 16: extern int memwatch_enabled; ! 17: extern int exception_debugging; ! 18: extern int debug_copper; ! 19: extern int debug_dma; ! 20: extern int debug_sprite_mask; ! 21: extern int debug_bpl_mask, debug_bpl_mask_one; ! 22: extern int debugger_active; ! 23: extern int debug_illegal; ! 24: extern uae_u64 debug_illegal_mask; ! 25: ! 26: extern void debug (void); ! 27: extern void debugger_change (int mode); ! 28: extern void activate_debugger (void); ! 29: extern void deactivate_debugger (void); ! 30: extern int notinrom (void); ! 31: extern const TCHAR *debuginfo (int); ! 32: extern void record_copper (uaecptr addr, uae_u16 word1, uae_u16 word2, int hpos, int vpos); ! 33: extern void record_copper_blitwait (uaecptr addr, int hpos, int vpos); ! 34: extern void record_copper_reset (void); ! 35: extern int mmu_init (int, uaecptr,uaecptr); ! 36: extern void mmu_do_hit (void); ! 37: extern void dump_aga_custom (void); ! 38: extern void memory_map_dump (void); ! 39: extern void debug_help (void); ! 40: extern uaecptr dumpmem2 (uaecptr addr, TCHAR *out, int osize); ! 41: extern void update_debug_info (void); ! 42: extern int instruction_breakpoint (TCHAR **c); ! 43: extern int debug_bankchange (int); ! 44: extern void log_dma_record (void); ! 45: extern void debug_parser (const TCHAR *cmd, TCHAR *out, uae_u32 outsize); ! 46: extern void mmu_disasm (uaecptr pc, int lines); ! 47: extern int debug_read_memory_16 (uaecptr addr); ! 48: extern int debug_peek_memory_16 (uaecptr addr); ! 49: extern int debug_read_memory_8 (uaecptr addr); ! 50: extern int debug_peek_memory_8 (uaecptr addr); ! 51: extern int debug_write_memory_16 (uaecptr addr, uae_u16 v); ! 52: extern int debug_write_memory_8 (uaecptr addr, uae_u8 v); ! 53: extern bool debug_enforcer(void); ! 54: ! 55: #define BREAKPOINT_TOTAL 20 ! 56: struct breakpoint_node { ! 57: uaecptr addr; ! 58: int enabled; ! 59: }; ! 60: extern struct breakpoint_node bpnodes[BREAKPOINT_TOTAL]; ! 61: ! 62: #define MW_MASK_CPU 0x00000001 ! 63: #define MW_MASK_BLITTER_A 0x00000002 ! 64: #define MW_MASK_BLITTER_B 0x00000004 ! 65: #define MW_MASK_BLITTER_C 0x00000008 ! 66: #define MW_MASK_BLITTER_D 0x00000010 ! 67: #define MW_MASK_COPPER 0x00000020 ! 68: #define MW_MASK_DISK 0x00000040 ! 69: #define MW_MASK_AUDIO_0 0x00000080 ! 70: #define MW_MASK_AUDIO_1 0x00000100 ! 71: #define MW_MASK_AUDIO_2 0x00000200 ! 72: #define MW_MASK_AUDIO_3 0x00000400 ! 73: #define MW_MASK_BPL_0 0x00000800 ! 74: #define MW_MASK_BPL_1 0x00001000 ! 75: #define MW_MASK_BPL_2 0x00002000 ! 76: #define MW_MASK_BPL_3 0x00004000 ! 77: #define MW_MASK_BPL_4 0x00008000 ! 78: #define MW_MASK_BPL_5 0x00010000 ! 79: #define MW_MASK_BPL_6 0x00020000 ! 80: #define MW_MASK_BPL_7 0x00040000 ! 81: #define MW_MASK_SPR_0 0x00080000 ! 82: #define MW_MASK_SPR_1 0x00100000 ! 83: #define MW_MASK_SPR_2 0x00200000 ! 84: #define MW_MASK_SPR_3 0x00400000 ! 85: #define MW_MASK_SPR_4 0x00800000 ! 86: #define MW_MASK_SPR_5 0x01000000 ! 87: #define MW_MASK_SPR_6 0x02000000 ! 88: #define MW_MASK_SPR_7 0x04000000 ! 89: #define MW_MASK_ALL (0x08000000 - 1) ! 90: ! 91: #define MEMWATCH_TOTAL 20 ! 92: struct memwatch_node { ! 93: uaecptr addr; ! 94: int size; ! 95: int rwi; ! 96: uae_u32 val, val_mask, access_mask; ! 97: int val_size, val_enabled; ! 98: int mustchange; ! 99: uae_u32 modval; ! 100: int modval_written; ! 101: int frozen; ! 102: uae_u32 reg; ! 103: uaecptr pc; ! 104: }; ! 105: extern struct memwatch_node mwnodes[MEMWATCH_TOTAL]; ! 106: ! 107: extern void memwatch_dump2 (TCHAR *buf, int bufsize, int num); ! 108: ! 109: uae_u16 debug_wgetpeekdma_chipram (uaecptr addr, uae_u32 v, uae_u32 mask, int reg); ! 110: uae_u16 debug_wputpeekdma_chipram (uaecptr addr, uae_u32 v, uae_u32 mask, int reg); ! 111: uae_u16 debug_wputpeekdma_chipset (uaecptr addr, uae_u32 v, uae_u32 mask, int reg); ! 112: void debug_lgetpeek (uaecptr addr, uae_u32 v); ! 113: void debug_wgetpeek (uaecptr addr, uae_u32 v); ! 114: void debug_bgetpeek (uaecptr addr, uae_u32 v); ! 115: void debug_bputpeek (uaecptr addr, uae_u32 v); ! 116: void debug_wputpeek (uaecptr addr, uae_u32 v); ! 117: void debug_lputpeek (uaecptr addr, uae_u32 v); ! 118: ! 119: uae_u32 get_byte_debug (uaecptr addr); ! 120: uae_u32 get_word_debug (uaecptr addr); ! 121: uae_u32 get_long_debug (uaecptr addr); ! 122: uae_u32 get_ilong_debug (uaecptr addr); ! 123: uae_u32 get_iword_debug (uaecptr addr); ! 124: ! 125: ! 126: enum debugtest_item { DEBUGTEST_BLITTER, DEBUGTEST_KEYBOARD, DEBUGTEST_FLOPPY, DEBUGTEST_MAX }; ! 127: void debugtest (enum debugtest_item, const TCHAR *, ...); ! 128: ! 129: struct dma_rec ! 130: { ! 131: uae_u16 reg; ! 132: uae_u32 dat; ! 133: uae_u32 addr; ! 134: uae_u16 evt; ! 135: int type; ! 136: uae_s8 intlev; ! 137: }; ! 138: ! 139: #define DMA_EVENT_BLITIRQ 1 ! 140: #define DMA_EVENT_BLITNASTY 2 ! 141: #define DMA_EVENT_BLITSTARTFINISH 4 ! 142: #define DMA_EVENT_BPLFETCHUPDATE 8 ! 143: #define DMA_EVENT_COPPERWAKE 16 ! 144: #define DMA_EVENT_CPUIRQ 32 ! 145: #define DMA_EVENT_INTREQ 64 ! 146: #define DMA_EVENT_COPPERWANTED 128 ! 147: ! 148: #define DMARECORD_REFRESH 1 ! 149: #define DMARECORD_CPU 2 ! 150: #define DMARECORD_COPPER 3 ! 151: #define DMARECORD_AUDIO 4 ! 152: #define DMARECORD_BLITTER 5 ! 153: #define DMARECORD_BLITTER_FILL 6 ! 154: #define DMARECORD_BLITTER_LINE 7 ! 155: #define DMARECORD_BITPLANE 8 ! 156: #define DMARECORD_SPRITE 9 ! 157: #define DMARECORD_DISK 10 ! 158: #define DMARECORD_MAX 11 ! 159: ! 160: extern struct dma_rec *record_dma (uae_u16 reg, uae_u16 dat, uae_u32 addr, int hpos, int vpos, int type); ! 161: extern void record_dma_reset (void); ! 162: extern void record_dma_event (int evt, int hpos, int vpos); ! 163: extern void debug_draw_cycles (uae_u8 *buf, int bpp, int line, int width, int height, uae_u32 *xredcolors, uae_u32 *xgreencolors, uae_u32 *xbluescolors); ! 164: ! 165: #else ! 166: ! 167: STATIC_INLINE void activate_debugger (void) { }; ! 168: #ifdef WINUAE_FOR_HATARI ! 169: uae_u32 get_byte_debug (uaecptr addr); ! 170: uae_u32 get_word_debug (uaecptr addr); ! 171: uae_u32 get_long_debug (uaecptr addr); ! 172: uae_u32 get_ilong_debug (uaecptr addr); ! 173: uae_u32 get_iword_debug (uaecptr addr); ! 174: extern void mmu_do_hit (void); ! 175: #endif ! 176: ! 177: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.