|
|
1.1 root 1: /*
1.1.1.6 root 2: Hatari - main.h
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.
1.1 root 6: */
7:
1.1.1.6 root 8: #ifndef HATARI_MAIN_H
9: #define HATARI_MAIN_H
1.1 root 10:
1.1.1.12! root 11: typedef signed char BOOL;
1.1 root 12:
1.1.1.12! root 13: #define PROG_NAME "Hatari v0.90" /* Name, version for window title */
! 14: #define PROG_VERSION "v0.90"
1.1 root 15:
16:
17: #include <stdio.h>
18: #include <stdlib.h>
19: #include <string.h>
20: #include <math.h>
21: #include <time.h>
22:
1.1.1.8 root 23: #include <SDL_types.h>
24:
25:
1.1 root 26: #ifndef FALSE
27: #define FALSE 0
28: #define TRUE (!0)
29: #endif
30:
1.1.1.12! root 31: #ifdef WIN32
! 32: #define PATHSEP '\\'
! 33: #else
! 34: #define PATHSEP '/'
! 35: #endif
! 36:
1.1 root 37: #define CALL_VAR(func) { ((void(*)(void))func)(); }
38:
39:
1.1.1.4 root 40: /* 68000 operand sizes */
1.1 root 41: #define SIZE_BYTE 1
42: #define SIZE_WORD 2
43: #define SIZE_LONG 4
44:
45: /* 68000 Register defines */
46: enum {
47: REG_D0, /* D0.. */
48: REG_D1,
49: REG_D2,
50: REG_D3,
51: REG_D4,
52: REG_D5,
53: REG_D6,
54: REG_D7, /* ..D7 */
55: REG_A0, /* A0.. */
56: REG_A1,
57: REG_A2,
58: REG_A3,
59: REG_A4,
60: REG_A5,
61: REG_A6,
1.1.1.8 root 62: REG_A7, /* ..A7 (also SP) */
1.1 root 63: };
64:
65: /* 68000 Condition code's */
1.1.1.10 root 66: #define SR_AUX 0x0010
67: #define SR_NEG 0x0008
68: #define SR_ZERO 0x0004
69: #define SR_OVERFLOW 0x0002
70: #define SR_CARRY 0x0001
71:
72: #define SR_CLEAR_AUX 0xffef
73: #define SR_CLEAR_NEG 0xfff7
74: #define SR_CLEAR_ZERO 0xfffb
75: #define SR_CLEAR_OVERFLOW 0xfffd
76: #define SR_CLEAR_CARRY 0xfffe
77:
78: #define SR_CCODE_MASK (SR_AUX|SR_NEG|SR_ZERO|SR_OVERFLOW|SR_CARRY)
79: #define SR_MASK 0xFFE0
80:
81: #define SR_TRACEMODE 0x8000
82: #define SR_SUPERMODE 0x2000
83: #define SR_IPL 0x0700
1.1 root 84:
1.1.1.10 root 85: #define SR_CLEAR_IPL 0xf8ff
1.1 root 86: #define SR_CLEAR_TRACEMODE 0x7fff
87: #define SR_CLEAR_SUPERMODE 0xdfff
88:
89: /* Exception vectors */
1.1.1.6 root 90: #define EXCEPTION_BUSERROR 0x00000008
1.1 root 91: #define EXCEPTION_ADDRERROR 0x0000000c
1.1.1.6 root 92: #define EXCEPTION_ILLEGALINS 0x00000010
93: #define EXCEPTION_DIVZERO 0x00000014
94: #define EXCEPTION_CHK 0x00000018
95: #define EXCEPTION_TRAPV 0x0000001c
96: #define EXCEPTION_TRACE 0x00000024
97: #define EXCEPTION_LINE_A 0x00000028
98: #define EXCEPTION_LINE_F 0x0000002c
99: #define EXCEPTION_HBLANK 0x00000068
100: #define EXCEPTION_VBLANK 0x00000070
101: #define EXCEPTION_TRAP0 0x00000080
102: #define EXCEPTION_TRAP1 0x00000084
103: #define EXCEPTION_TRAP2 0x00000088
104: #define EXCEPTION_TRAP13 0x000000B4
105: #define EXCEPTION_TRAP14 0x000000B8
1.1 root 106:
1.1.1.6 root 107: /* Find IPL - don't forget to call MakeSR() before you use it! */
1.1 root 108: #define FIND_IPL ((SR>>8)&0x7)
109:
110: /* Size of 68000 instructions */
111: #define MAX_68000_INSTRUCTION_SIZE 10 /* Longest 68000 instruction is 10 bytes(6+4) */
112: #define MIN_68000_INSTRUCTION_SIZE 2 /* Smallest 68000 instruction is 2 bytes(ie NOP) */
113:
114: /* Illegal Opcode used to help emulation. eg. free entries are 8 to 15 inc' */
115: #define GEMDOS_OPCODE 8 /* Free op-code to intercept GemDOS trap */
1.1.1.7 root 116: #define SYSINIT_OPCODE 10 /* Free op-code to initialize system (connected drives etc.) */
1.1 root 117: #define VDI_OPCODE 12 /* Free op-code to call VDI handlers AFTER Trap#2 */
1.1.1.6 root 118:
1.1 root 119:
120: #define PRG_HEADER_SIZE 0x1c /* Size of header at start of ST .prg files */
121:
122:
123: extern BOOL bQuitProgram;
1.1.1.2 root 124: extern BOOL bEnableDebug;
1.1.1.8 root 125: extern char szWorkingDir[FILENAME_MAX];
126:
1.1 root 127:
128: extern void Main_MemorySnapShot_Capture(BOOL bSave);
129: extern void Main_PauseEmulation(void);
130: extern void Main_UnPauseEmulation(void);
1.1.1.12! root 131: extern void Main_WaitOnVbl(void);
1.1.1.9 root 132: extern void Main_WarpMouse(int x, int y);
133: extern void Main_EventHandler(void);
1.1 root 134:
1.1.1.6 root 135: #endif /* ifndef HATARI_MAIN_H */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.