|
|
| version 1.2, 2004/08/10 18:57:39 | version 1.5, 2004/08/14 08:15:57 |
|---|---|
| Line 24 | Line 24 |
| #include "fdd_ini.h" | #include "fdd_ini.h" |
| #include "x1f.h" | #include "x1f.h" |
| #include "carbonevent.h" | #include "carbonevent.h" |
| #if defined(SUPPORT_RESUME) || defined(SUPPORT_STATSAVE) | |
| #include "statsave.h" | |
| #endif | |
| // #define USE_RESUME | // #define USE_RESUME |
| XMILOSCFG xmiloscfg = {100, 100, 0, 0, 0, 0, 0, 0}; | XMILOSCFG xmiloscfg = { 100, 100, |
| 0, 0, 0, | |
| 0, 0, | |
| #if defined(SUPPORT_RESUME) | |
| 0, | |
| #endif | |
| #if defined(SUPPORT_STATSAVE) | |
| 1, | |
| #endif | |
| 0}; | |
| WindowPtr hWndMain; | WindowPtr hWndMain; |
| BRESULT xmilrunning; | BRESULT xmilrunning; |
| Line 42 static REG8 scrnmode; | Line 54 static REG8 scrnmode; |
| static char target[MAX_PATH] = DEFAULTPATH; | static char target[MAX_PATH] = DEFAULTPATH; |
| static const char np2resume[] = "sav"; | |
| static const char xmilapp[] = "xmil"; | |
| // ---- stat save... | |
| #if defined(SUPPORT_RESUME) | |
| static const char xmilresumeext[] = ".sav"; | |
| #endif | |
| #if defined(SUPPORT_STATSAVE) | |
| static const char xmilflagext[] = ".sv%u"; | |
| #endif | |
| #if defined(SUPPORT_RESUME) || defined(SUPPORT_STATSAVE) | |
| static void getstatfilename(char *path, const char *ext, UINT size) { | |
| file_cpyname(path, file_getcd(xmilapp), size); | |
| file_catname(path, ext, size); | |
| } | |
| static void flagsave(const char *ext) { | |
| char path[MAX_PATH]; | |
| getstatfilename(path, ext, NELEMENTS(path)); | |
| statsave_save(path); | |
| } | |
| static void flagdelete(const char *ext) { | |
| char path[MAX_PATH]; | |
| getstatfilename(path, ext, NELEMENTS(path)); | |
| file_delete(path); | |
| } | |
| static int flagload(const char *ext, BRESULT force) { | |
| int ret; | |
| char path[MAX_PATH]; | |
| char buf[1024]; | |
| int r; | |
| ret = IDOK; | |
| getstatfilename(path, ext, NELEMENTS(path)); | |
| r = statsave_check(path, buf, NELEMENTS(buf)); | |
| if (r & (~STATFLAG_DISKCHG)) { | |
| ResumeErrorDialogProc(); | |
| ret = IDCANCEL; | |
| } | |
| else if ((!force) && (r & STATFLAG_DISKCHG)) { | |
| ret = ResumeWarningDialogProc(buf); | |
| } | |
| else { | |
| ret = IDOK; | |
| } | |
| if (ret == IDOK) { | |
| statsave_load(path); | |
| } | |
| return(ret); | |
| } | |
| #endif | |
| // ---- おまじない | // ---- おまじない |
| Line 79 static void MenuBarInit(void) { | Line 152 static void MenuBarInit(void) { |
| DeleteMenuItem(GetMenuRef(IDM_OTHER), 7); | DeleteMenuItem(GetMenuRef(IDM_OTHER), 7); |
| } | } |
| DeleteMenu(IDM_FDD2); | DisableAllMenuItems(GetMenuHandle(IDM_EDIT)); |
| DeleteMenu(IDM_FDD3); | |
| if (!(xmilcfg.fddequip & (1 << 3))) { | |
| DeleteMenu(IDM_FDD3); | |
| } else { | |
| ChangeMenuAttributes(GetMenuRef(IDM_FDD3), 0, kMenuAttrHidden); | |
| } | |
| if (!(xmilcfg.fddequip & (1 << 2))) { | |
| DeleteMenu(IDM_FDD2); | |
| } else { | |
| ChangeMenuAttributes(GetMenuRef(IDM_FDD2), 0, kMenuAttrHidden); | |
| } | |
| if (!(xmilcfg.fddequip & (1 << 1))) { | |
| DeleteMenu(IDM_FDD1); | |
| } | |
| if (!(xmilcfg.fddequip & (1 << 0))) { | |
| DeleteMenu(IDM_FDD0); | |
| } | |
| #if defined(SUPPORT_STATSAVE) | |
| if (!xmiloscfg.statsave) { | |
| #endif | |
| DeleteMenu(IDM_STATSAVE); | |
| #if defined(SUPPORT_STATSAVE) | |
| } | |
| #endif | |
| } | } |
| static void HandleMenuChoice(long wParam) { | static void HandleMenuChoice(long wParam) { |
| UINT update; | UINT update; |
| Str255 applname; | #if defined(SUPPORT_STATSAVE) |
| UINT num; | |
| char ext[16]; | |
| #endif | |
| update = 0; | update = 0; |
| switch(wParam) { | switch(wParam) { |
| Line 120 static void HandleMenuChoice(long wParam | Line 221 static void HandleMenuChoice(long wParam |
| case IDM_FDD0EJECT: | case IDM_FDD0EJECT: |
| diskdrv_setfdd(0, NULL, 0); | diskdrv_setfdd(0, NULL, 0); |
| DisableMenuItem(GetMenuRef(IDM_FDD0), IDM_FDD0EJECT); | |
| break; | break; |
| case IDM_FDD1OPEN: | case IDM_FDD1OPEN: |
| Line 128 static void HandleMenuChoice(long wParam | Line 230 static void HandleMenuChoice(long wParam |
| case IDM_FDD1EJECT: | case IDM_FDD1EJECT: |
| diskdrv_setfdd(1, NULL, 0); | diskdrv_setfdd(1, NULL, 0); |
| DisableMenuItem(GetMenuRef(IDM_FDD1), IDM_FDD1EJECT); | |
| break; | break; |
| case IDM_FDD2OPEN: | case IDM_FDD2OPEN: |
| Line 136 static void HandleMenuChoice(long wParam | Line 239 static void HandleMenuChoice(long wParam |
| case IDM_FDD2EJECT: | case IDM_FDD2EJECT: |
| diskdrv_setfdd(2, NULL, 0); | diskdrv_setfdd(2, NULL, 0); |
| DisableMenuItem(GetMenuRef(IDM_FDD2), IDM_FDD2EJECT); | |
| break; | break; |
| case IDM_FDD3OPEN: | case IDM_FDD3OPEN: |
| Line 144 static void HandleMenuChoice(long wParam | Line 248 static void HandleMenuChoice(long wParam |
| case IDM_FDD3EJECT: | case IDM_FDD3EJECT: |
| diskdrv_setfdd(3, NULL, 0); | diskdrv_setfdd(3, NULL, 0); |
| DisableMenuItem(GetMenuRef(IDM_FDD3), IDM_FDD3EJECT); | |
| break; | break; |
| case IDM_TURBOZ: | case IDM_TURBOZ: |
| Line 182 static void HandleMenuChoice(long wParam | Line 287 static void HandleMenuChoice(long wParam |
| break; | break; |
| case IDM_WIDTH80: | case IDM_WIDTH80: |
| crtc.s.TXT_XL = 80; | crtc_forcesetwidth(80); |
| // crtc.s.GRP_XL = 640; | |
| vrambank_patch(); | |
| scrnallflash = 1; | |
| break; | break; |
| case IDM_WIDTH40: | case IDM_WIDTH40: |
| crtc.s.TXT_XL = 40; | crtc_forcesetwidth(40); |
| // crtc.s.GRP_XL = 320; | |
| vrambank_patch(); | |
| scrnallflash = 1; | |
| break; | break; |
| case IDM_DISPSYNC: | case IDM_DISPSYNC: |
| Line 267 static void HandleMenuChoice(long wParam | Line 366 static void HandleMenuChoice(long wParam |
| update = SYS_UPDATECFG; | update = SYS_UPDATECFG; |
| break; | break; |
| case IDM_8MHZ: | |
| menu_setcpuspeed(xmilcfg.CPU8MHz ^ 1); | |
| update = SYS_UPDATECFG; | |
| break; | |
| case IDM_SEEKSND: | case IDM_SEEKSND: |
| menu_setmotorflg(xmilcfg.MOTOR ^ 1); | menu_setmotorflg(xmilcfg.MOTOR ^ 1); |
| update = SYS_UPDATECFG; | update = SYS_UPDATECFG; |
| Line 306 static void HandleMenuChoice(long wParam | Line 400 static void HandleMenuChoice(long wParam |
| break; | break; |
| default: | default: |
| #if defined(SUPPORT_STATSAVE) | |
| if (HiWord(wParam) == IDM_STATSAVE) { | |
| num = LoWord(wParam); | |
| if ((num >= 1) && (num < (1 + 10))) { | |
| OEMSPRINTF(ext, xmilflagext, num - 1); | |
| flagsave(ext); | |
| } | |
| else if ((num >= 12) && (num < (12 + 10))) { | |
| OEMSPRINTF(ext, xmilflagext, num - 12); | |
| flagload(ext, TRUE); | |
| } | |
| } | |
| #endif | |
| break; | break; |
| } | } |
| sysmng_update(update); | sysmng_update(update); |
| HiliteMenu(0); | HiliteMenu(0); |
| } | } |
| #if 0 | |
| static void HandleUpdateEvent(EventRecord *pevent) { | |
| WindowPtr hWnd; | |
| hWnd = (WindowPtr)pevent->message; | |
| BeginUpdate(hWnd); | |
| if (xmilrunning) { | |
| scrndraw_redraw(); | |
| } | |
| else { | |
| // np2open(); | |
| } | |
| EndUpdate(hWnd); | |
| } | |
| #endif | |
| static void HandleMouseDown(EventRecord *pevent) { | static void HandleMouseDown(EventRecord *pevent) { |
| WindowPtr hWnd; | WindowPtr hWnd; |
| Line 343 static void HandleMouseDown(EventRecord | Line 435 static void HandleMouseDown(EventRecord |
| break; | break; |
| } | } |
| } | } |
| #if 0 | |
| static void eventproc(EventRecord *event) { | |
| int keycode; | |
| keycode = (event->message & keyCodeMask) >> 8; | |
| switch(event->what) { | |
| case mouseDown: | |
| HandleMouseDown(event); | |
| break; | |
| case updateEvt: | |
| HandleUpdateEvent(event); | |
| break; | |
| case keyDown: | |
| case autoKey: | |
| if (!xmilrunning) { | |
| break; | |
| } | |
| if ((keycode == 0x6f) && (xmiloscfg.F12KEY == 0)) { | |
| HandleMenuChoice(IDM_MOUSE); | |
| break; | |
| } | |
| if (event->modifiers & cmdKey) { | |
| #if !TARGET_API_MAC_CARBON | |
| if (mackbd_keydown(keycode, TRUE)) { | |
| break; | |
| } | |
| #endif | |
| soundmng_stop(); | |
| mousemng_disable(MOUSEPROC_MACUI); | |
| HandleMenuChoice(MenuEvent(event)); | |
| mousemng_enable(MOUSEPROC_MACUI); | |
| soundmng_play(); | |
| } | |
| else { | |
| mackbd_keydown(keycode, FALSE); | |
| } | |
| break; | |
| case keyUp: | |
| mackbd_keyup(keycode); | |
| break; | |
| case mouseUp: | |
| mousemng_buttonevent(MOUSEMNG_LEFTUP); | |
| mousemng_buttonevent(MOUSEMNG_RIGHTUP); | |
| break; | |
| case activateEvt: | |
| mackbd_activate((event->modifiers & activeFlag)?TRUE:FALSE); | |
| break; | |
| } | |
| } | |
| #endif | |
| #if 0 | |
| // ---- | |
| static void getstatfilename(char *path, const char *ext, int size) { | |
| file_cpyname(path, file_getcd(np2app), size); | |
| file_catname(path, str_dot, size); | |
| file_catname(path, ext, size); | |
| } | |
| static void flagsave(const char *ext) { | |
| char path[MAX_PATH]; | |
| getstatfilename(path, ext, sizeof(path)); | |
| statsave_save(path); | |
| } | |
| static void flagdelete(const char *ext) { | |
| char path[MAX_PATH]; | |
| getstatfilename(path, ext, sizeof(path)); | |
| file_delete(path); | |
| } | |
| static int flagload(const char *ext) { | |
| int ret; | |
| char path[MAX_PATH]; | |
| char buf[1024]; | |
| int r; | |
| ret = IDOK; | |
| getstatfilename(path, ext, sizeof(path)); | |
| r = statsave_check(path, buf, sizeof(buf)); | |
| if (r & (~STATFLAG_DISKCHG)) { | |
| ResumeErrorDialogProc(); | |
| ret = IDCANCEL; | |
| } | |
| else if (r & STATFLAG_DISKCHG) { | |
| ret = ResumeWarningDialogProc(buf); | |
| } | |
| if (ret == IDOK) { | |
| statsave_load(path); | |
| } | |
| return(ret); | |
| } | |
| #endif | |
| // ---- | // ---- |
| static UINT framecnt = 0; | static UINT framecnt = 0; |
| Line 535 int main(int argc, char *argv[]) { | Line 519 int main(int argc, char *argv[]) { |
| menu_setkey(0); | menu_setkey(0); |
| menu_setsound(xmilcfg.SOUND_SW); | menu_setsound(xmilcfg.SOUND_SW); |
| menu_setmouse(xmilcfg.MOUSE_SW); | menu_setmouse(xmilcfg.MOUSE_SW); |
| menu_setcpuspeed(xmilcfg.CPU8MHz); | |
| menu_setmotorflg(xmilcfg.MOTOR); | menu_setmotorflg(xmilcfg.MOTOR); |
| menu_setdispclk(xmiloscfg.DISPCLK); | menu_setdispclk(xmiloscfg.DISPCLK); |
| menu_setbtnmode(xmilcfg.BTN_MODE); | menu_setbtnmode(xmilcfg.BTN_MODE); |
| Line 572 int main(int argc, char *argv[]) { | Line 555 int main(int argc, char *argv[]) { |
| pccore_initialize(); | pccore_initialize(); |
| pccore_reset(); | pccore_reset(); |
| #if 0 | #if defined(SUPPORT_RESUME) |
| if (np2oscfg.resume) { | if (xmiloscfg.resume) { |
| flagload(np2resume); | flagload(xmilresumeext, FALSE); |
| } | } |
| #endif | #endif |
| Line 657 int main(int argc, char *argv[]) { | Line 640 int main(int argc, char *argv[]) { |
| xmilrunning = FALSE; | xmilrunning = FALSE; |
| #if 0 | #if defined(SUPPORT_RESUME) |
| if (np2oscfg.resume) { | if (xmiloscfg.resume) { |
| flagsave(np2resume); | flagsave(xmilresumeext); |
| } | } |
| else { | else { |
| flagdelete(np2resume); | flagdelete(xmilresumeext); |
| } | } |
| #endif | #endif |
| Line 687 int main(int argc, char *argv[]) { | Line 670 int main(int argc, char *argv[]) { |
| return(0); | return(0); |
| } | } |
| void wrapperMouseDown(EventRef event) { | void wrapperMouseDown(EventRef event) { |
| EventRecord eve; | EventRecord eve; |
| ConvertEventRefToEventRecord( event,&eve ); | ConvertEventRefToEventRecord( event,&eve ); |
| HandleMouseDown(&eve); | HandleMouseDown(&eve); |
| } | } |
| void wrapperKeyDown(EventRef event) { | |
| EventRecord eve; | |
| ConvertEventRefToEventRecord( event,&eve ); | |
| soundmng_stop(); | |
| mousemng_disable(MOUSEPROC_MACUI); | |
| HandleMenuChoice(MenuEvent(&eve)); | |
| mousemng_enable(MOUSEPROC_MACUI); | |
| soundmng_play(); | |
| } | |