|
|
1.1 ! root 1: /* ! 2: * UAE - The Un*x Amiga Emulator ! 3: * ! 4: * BeBox port specific stuff ! 5: * ! 6: * (c) 1996 Christian Bauer ! 7: * (c) 1996 Patrick Hanevold ! 8: */ ! 9: ! 10: extern "C" { ! 11: #include "sysconfig.h" ! 12: #include "sysdeps.h" ! 13: #include "config.h" ! 14: #include "options.h" ! 15: #include "memory.h" ! 16: #include "custom.h" ! 17: #include "newcpu.h" ! 18: #include "disk.h" ! 19: #include "debug.h" ! 20: #include "xwin.h" ! 21: #include "os.h" ! 22: #include "filesys.h" ! 23: #include "keybuf.h" ! 24: #include "keyboard.h" ! 25: #include "gui.h" ! 26: extern void usage(void); ! 27: extern void parse_cmdline(int,char**); ! 28: extern unsigned long frametime,timeframes; ! 29: } ! 30: ! 31: class UAEWindow; ! 32: class BitmapView; ! 33: class Emulator; ! 34: ! 35: ! 36: /* ! 37: * The BeOS application object ! 38: */ ! 39: ! 40: class UAE : public BApplication { ! 41: public: ! 42: UAE(); ! 43: virtual void ArgvReceived(int argc, char **argv); ! 44: virtual void ReadyToRun(void); ! 45: virtual bool QuitRequested(void); ! 46: virtual void AboutRequested(void); ! 47: // virtual void MessageReceived(BMessage*); ! 48: virtual void RefsReceived(BMessage*); ! 49: virtual void FilePanelClosed(BMessage*); ! 50: void RequestFile(char*,int); ! 51: private: ! 52: BBitmap *the_bitmap; ! 53: UAEWindow *main_window; ! 54: Emulator *the_emulator; ! 55: }; ! 56: ! 57: ! 58: /* ! 59: * The window in which the Amiga graphics are displayed, handles I/O ! 60: */ ! 61: ! 62: class UAEWindow : public BWindow { ! 63: public: ! 64: UAEWindow(BRect frame, BBitmap *bitmap); ! 65: virtual bool QuitRequested(void); ! 66: virtual void WindowActivated(bool active); ! 67: virtual void MessageReceived(BMessage*); ! 68: private: ! 69: BitmapView *main_view; ! 70: }; ! 71: ! 72: /* ! 73: * A simple view class for blitting a bitmap on the screen ! 74: */ ! 75: ! 76: class BitmapView : public BView { ! 77: public: ! 78: BitmapView(BRect frame, BBitmap *bitmap); ! 79: virtual void Draw(BRect update); ! 80: virtual void KeyDown(ulong); ! 81: void Draw(BRect from, BRect to); ! 82: private: ! 83: BBitmap *the_bitmap; ! 84: }; ! 85: ! 86: /* ! 87: * LED ! 88: */ ! 89: ! 90: struct Color{ ! 91: int R; ! 92: int G; ! 93: int B; ! 94: }; ! 95: ! 96: class LEDView : public BView { ! 97: public: ! 98: LEDView(BRect,int,int,int,int,int,int); ! 99: virtual void AttachedToWindow(void); ! 100: virtual void Draw(BRect); ! 101: void SetState(bool); ! 102: private: ! 103: void Refresh(void); ! 104: BRect bounds; ! 105: Color ActiveColor; ! 106: Color IdleColor; ! 107: bool State; ! 108: }; ! 109: ! 110: /* ! 111: * Meter ! 112: */ ! 113: ! 114: class MeterView : public BView { ! 115: public: ! 116: MeterView(BRect); ! 117: virtual void AttachedToWindow(void); ! 118: virtual void Draw(BRect); ! 119: virtual void Pulse(void); ! 120: private: ! 121: void Refresh(void); ! 122: BRect bounds; ! 123: }; ! 124: ! 125: /* ! 126: * For running the emulation in its own thread ! 127: */ ! 128: ! 129: class Emulator { ! 130: public: ! 131: Emulator() {thread_running = FALSE;} ! 132: void Run(void); ! 133: void Quit(void); ! 134: ! 135: private: ! 136: static long thread_invoc(void*); //Emulator *obj); ! 137: void thread_func(void); ! 138: ! 139: thread_id the_thread; ! 140: bool thread_running; ! 141: }; ! 142: ! 143: ! 144: // Keyboard and mouse ! 145: int buttonstate[3]; ! 146: int newmousecounters; ! 147: int lastmx, lastmy; ! 148: ! 149: key_info old_key_info; ! 150: bool inwindow; ! 151: bool window_open; ! 152: ! 153: struct Event{ ! 154: Event *Next; ! 155: int Age; ! 156: char Key; ! 157: }; ! 158: ! 159: Event *CurentEvent,*LastEvent; ! 160: ! 161: // Color map and bitmap ! 162: xcolnr xcolors[4096]; ! 163: struct vidbuf_description gfxvidinfo; ! 164: ! 165: int vsize, hsize, hpixels; ! 166: ! 167: BitmapView *bitmap_view; ! 168: UAEWindow *bitmap_window; ! 169: ! 170: ! 171: // Array for converting Be keycodes to Amiga keycodes ! 172: int keycode2amiga[128] = { ! 173: -1, AK_ESC, AK_F1, AK_F2, AK_F3, AK_F4, AK_F5, AK_F6, ! 174: AK_F7, AK_F8, AK_F9, AK_F10, AK_LALT, AK_mousestuff, AK_RALT, -1, ! 175: ! 176: -1, AK_BACKQUOTE, AK_1, AK_2, AK_3, AK_4, AK_5, AK_6, ! 177: AK_7, AK_8, AK_9, AK_0, AK_MINUS, AK_EQUAL, AK_BS, AK_HELP, ! 178: ! 179: AK_NPLPAREN, AK_RAMI, AK_NPLPAREN, AK_NPDIV, AK_NPMUL, AK_NPSUB, AK_TAB, AK_Q, ! 180: AK_W, AK_E, AK_R, AK_T, AK_Y, AK_U, AK_I, AK_O, ! 181: ! 182: AK_P, AK_LBRACKET, AK_RBRACKET, AK_BACKSLASH, AK_DEL, AK_NPRPAREN, AK_LAMI, AK_NP7, ! 183: AK_NP8, AK_NP9, AK_NPADD, AK_CAPSLOCK, AK_A, AK_S, AK_D, AK_F, ! 184: ! 185: AK_G, AK_H, AK_J, AK_K, AK_L, AK_SEMICOLON, AK_QUOTE, AK_RET, ! 186: AK_NP4, AK_NP5, AK_NP6, AK_LSH, AK_Z, AK_X, AK_C, AK_V, ! 187: ! 188: AK_B, AK_N, AK_M, AK_COMMA, AK_PERIOD, AK_SLASH, AK_RSH, AK_UP, ! 189: AK_NP1, AK_NP2, AK_NP3, AK_ENT, AK_CTRL, AK_LAMI, AK_SPC, AK_RAMI, ! 190: ! 191: AK_RALT, AK_LF, AK_DN, AK_RT, AK_NP0, AK_NPDEL, AK_LALT, AK_RALT, ! 192: AK_LTGT, -1, -1, -1, -1, -1, -1, -1, ! 193: ! 194: -1, -1, -1, -1, -1, -1, -1, -1, ! 195: -1, -1, -1, -1, -1, -1, -1, -1 ! 196: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.