|
|
| version 1.7, 2005/02/04 05:32:25 | version 1.10, 2005/05/12 17:26:11 |
|---|---|
| Line 10 | Line 10 |
| #include "cpucore.h" | #include "cpucore.h" |
| #if !defined(CPUCORE_IA32) | #if defined(CPUCORE_IA32) |
| static void viewreg_paint(NP2VIEW_T *view, RECT *rc, HDC hdc) { | static void viewreg_paint(NP2VIEW_T *view, RECT *rc, HDC hdc) { |
| LONG y; | LONG y; |
| DWORD pos; | DWORD pos; |
| char str[128]; | TCHAR str[128]; |
| HFONT hfont; | HFONT hfont; |
| I286STAT *r; | I386STAT *r; |
| hfont = CreateFont(16, 0, 0, 0, 0, 0, 0, 0, | hfont = CreateFont(16, 0, 0, 0, 0, 0, 0, 0, |
| SHIFTJIS_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, | SHIFTJIS_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, |
| Line 28 static void viewreg_paint(NP2VIEW_T *vie | Line 28 static void viewreg_paint(NP2VIEW_T *vie |
| if (view->lock) { | if (view->lock) { |
| if (view->buf1.type != ALLOCTYPE_REG) { | if (view->buf1.type != ALLOCTYPE_REG) { |
| if (viewcmn_alloc(&view->buf1, sizeof(i286core.s))) { | if (viewcmn_alloc(&view->buf1, sizeof(i386core.s))) { |
| view->lock = FALSE; | view->lock = FALSE; |
| viewmenu_lock(view); | viewmenu_lock(view); |
| } | } |
| else { | else { |
| view->buf1.type = ALLOCTYPE_REG; | view->buf1.type = ALLOCTYPE_REG; |
| CopyMemory(view->buf1.ptr, &i286core.s, sizeof(i286core.s)); | CopyMemory(view->buf1.ptr, &i386core.s, sizeof(i386core.s)); |
| } | } |
| viewcmn_putcaption(view); | viewcmn_putcaption(view); |
| } | } |
| Line 42 static void viewreg_paint(NP2VIEW_T *vie | Line 42 static void viewreg_paint(NP2VIEW_T *vie |
| pos = view->pos; | pos = view->pos; |
| if (view->lock) { | if (view->lock) { |
| r = (I286STAT *)view->buf1.ptr; | r = (I386STAT *)view->buf1.ptr; |
| } | } |
| else { | else { |
| r = &i286core.s; | r = &i386core.s; |
| } | } |
| for (y=0; y<rc->bottom && pos<4; y+=16, pos++) { | for (y=0; y<rc->bottom && pos<4; y+=16, pos++) { |
| switch(pos) { | switch(pos) { |
| case 0: | case 0: |
| wsprintf(str, "AX=%.4x BX=%.4x CX=%.4x DX=%.4x", | wsprintf(str, _T("EAX=%.8x EBX=%.8x ECX=%.8x EDX=%.8x"), |
| r->r.w.ax, r->r.w.bx, r->r.w.cx, r->r.w.dx); | r->cpu_regs.reg[CPU_EAX_INDEX].d, |
| r->cpu_regs.reg[CPU_EBX_INDEX].d, | |
| r->cpu_regs.reg[CPU_ECX_INDEX].d, | |
| r->cpu_regs.reg[CPU_EDX_INDEX].d); | |
| break; | break; |
| case 1: | case 1: |
| wsprintf(str, "SP=%.4x BP=%.4x SI=%.4x DI=%.4x", | wsprintf(str, _T("ESP=%.8x EBP=%.8x ESI=%.8x EDI=%.8x"), |
| r->r.w.sp, r->r.w.bp, r->r.w.si, r->r.w.di); | r->cpu_regs.reg[CPU_ESP_INDEX].d, |
| r->cpu_regs.reg[CPU_EBP_INDEX].d, | |
| r->cpu_regs.reg[CPU_ESI_INDEX].d, | |
| r->cpu_regs.reg[CPU_EDI_INDEX].d); | |
| break; | break; |
| case 2: | case 2: |
| wsprintf(str, "CS=%.4x DS=%.4x ES=%.4x SS=%.4x", | wsprintf(str, _T("CS=%.4x DS=%.4x ES=%.4x FS=%.4x GS=%.4x SS=%.4x"), |
| r->r.w.cs, r->r.w.ds, r->r.w.es, r->r.w.ss); | r->cpu_regs.sreg[CPU_CS_INDEX], |
| r->cpu_regs.sreg[CPU_DS_INDEX], | |
| r->cpu_regs.sreg[CPU_ES_INDEX], | |
| r->cpu_regs.sreg[CPU_FS_INDEX], | |
| r->cpu_regs.sreg[CPU_GS_INDEX], | |
| r->cpu_regs.sreg[CPU_SS_INDEX]); | |
| break; | break; |
| case 3: | case 3: |
| wsprintf(str, "IP=%.4x %s", | wsprintf(str, _T("EIP=%.8x %s"), |
| r->r.w.ip, debugsub_flags(r->r.w.flag)); | r->cpu_regs.eip.d, |
| debugsub_flags(r->cpu_regs.eflags.d)); | |
| break; | |
| } | |
| TextOut(hdc, 0, y, str, lstrlen(str)); | |
| } | |
| DeleteObject(SelectObject(hdc, hfont)); | |
| } | |
| #elif defined(CPUCORE_V30) | |
| static void viewreg_paint(NP2VIEW_T *view, RECT *rc, HDC hdc) { | |
| LONG y; | |
| DWORD pos; | |
| TCHAR str[128]; | |
| HFONT hfont; | |
| V30STAT *r; | |
| hfont = CreateFont(16, 0, 0, 0, 0, 0, 0, 0, | |
| SHIFTJIS_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, | |
| DEFAULT_QUALITY, FIXED_PITCH, np2viewfont); | |
| SetTextColor(hdc, 0xffffff); | |
| SetBkColor(hdc, 0x400000); | |
| hfont = (HFONT)SelectObject(hdc, hfont); | |
| if (view->lock) { | |
| if (view->buf1.type != ALLOCTYPE_REG) { | |
| if (viewcmn_alloc(&view->buf1, sizeof(v30core.s))) { | |
| view->lock = FALSE; | |
| viewmenu_lock(view); | |
| } | |
| else { | |
| view->buf1.type = ALLOCTYPE_REG; | |
| CopyMemory(view->buf1.ptr, &v30core.s, sizeof(v30core.s)); | |
| } | |
| viewcmn_putcaption(view); | |
| } | |
| } | |
| pos = view->pos; | |
| if (view->lock) { | |
| r = (V30STAT *)view->buf1.ptr; | |
| } | |
| else { | |
| r = &v30core.s; | |
| } | |
| for (y=0; y<rc->bottom && pos<4; y+=16, pos++) { | |
| switch(pos) { | |
| case 0: | |
| wsprintf(str, _T("AW=%.4x BW=%.4x CW=%.4x DW=%.4x"), | |
| r->r.w.aw, r->r.w.bw, r->r.w.cw, r->r.w.dw); | |
| break; | |
| case 1: | |
| wsprintf(str, _T("SP=%.4x BP=%.4x IX=%.4x IY=%.4x"), | |
| r->r.w.sp, r->r.w.bp, r->r.w.ix, r->r.w.iy); | |
| break; | |
| case 2: | |
| wsprintf(str, _T("PS=%.4x DS0=%.4x ES1=%.4x SS=%.4x"), | |
| r->r.w.ps, r->r.w.ds0, r->r.w.ds1, r->r.w.ss); | |
| break; | |
| case 3: | |
| wsprintf(str, _T("PC=%.4x %s"), | |
| r->r.w.pc, debugsub_flags(r->r.w.psw)); | |
| break; | break; |
| } | } |
| TextOut(hdc, 0, y, str, strlen(str)); | TextOut(hdc, 0, y, str, lstrlen(str)); |
| } | } |
| DeleteObject(SelectObject(hdc, hfont)); | DeleteObject(SelectObject(hdc, hfont)); |
| } | } |
| Line 79 static void viewreg_paint(NP2VIEW_T *vie | Line 155 static void viewreg_paint(NP2VIEW_T *vie |
| LONG y; | LONG y; |
| DWORD pos; | DWORD pos; |
| char str[128]; | TCHAR str[128]; |
| HFONT hfont; | HFONT hfont; |
| I386STAT *r; | I286STAT *r; |
| hfont = CreateFont(16, 0, 0, 0, 0, 0, 0, 0, | hfont = CreateFont(16, 0, 0, 0, 0, 0, 0, 0, |
| SHIFTJIS_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, | SHIFTJIS_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, |
| Line 92 static void viewreg_paint(NP2VIEW_T *vie | Line 168 static void viewreg_paint(NP2VIEW_T *vie |
| if (view->lock) { | if (view->lock) { |
| if (view->buf1.type != ALLOCTYPE_REG) { | if (view->buf1.type != ALLOCTYPE_REG) { |
| if (viewcmn_alloc(&view->buf1, sizeof(i386core.s))) { | if (viewcmn_alloc(&view->buf1, sizeof(i286core.s))) { |
| view->lock = FALSE; | view->lock = FALSE; |
| viewmenu_lock(view); | viewmenu_lock(view); |
| } | } |
| else { | else { |
| view->buf1.type = ALLOCTYPE_REG; | view->buf1.type = ALLOCTYPE_REG; |
| CopyMemory(view->buf1.ptr, &i386core.s, sizeof(i386core.s)); | CopyMemory(view->buf1.ptr, &i286core.s, sizeof(i286core.s)); |
| } | } |
| viewcmn_putcaption(view); | viewcmn_putcaption(view); |
| } | } |
| Line 106 static void viewreg_paint(NP2VIEW_T *vie | Line 182 static void viewreg_paint(NP2VIEW_T *vie |
| pos = view->pos; | pos = view->pos; |
| if (view->lock) { | if (view->lock) { |
| r = (I386STAT *)view->buf1.ptr; | r = (I286STAT *)view->buf1.ptr; |
| } | } |
| else { | else { |
| r = &i386core.s; | r = &i286core.s; |
| } | } |
| for (y=0; y<rc->bottom && pos<4; y+=16, pos++) { | for (y=0; y<rc->bottom && pos<4; y+=16, pos++) { |
| switch(pos) { | switch(pos) { |
| case 0: | case 0: |
| wsprintf(str, "EAX=%.8x EBX=%.8x ECX=%.8x EDX=%.8x", | wsprintf(str, _T("AX=%.4x BX=%.4x CX=%.4x DX=%.4x"), |
| r->cpu_regs.reg[CPU_EAX_INDEX].d, | r->r.w.ax, r->r.w.bx, r->r.w.cx, r->r.w.dx); |
| r->cpu_regs.reg[CPU_EBX_INDEX].d, | |
| r->cpu_regs.reg[CPU_ECX_INDEX].d, | |
| r->cpu_regs.reg[CPU_EDX_INDEX].d); | |
| break; | break; |
| case 1: | case 1: |
| wsprintf(str, "ESP=%.8x EBP=%.8x ESI=%.8x EDI=%.8x", | wsprintf(str, _T("SP=%.4x BP=%.4x SI=%.4x DI=%.4x"), |
| r->cpu_regs.reg[CPU_ESP_INDEX].d, | r->r.w.sp, r->r.w.bp, r->r.w.si, r->r.w.di); |
| r->cpu_regs.reg[CPU_EBP_INDEX].d, | |
| r->cpu_regs.reg[CPU_ESI_INDEX].d, | |
| r->cpu_regs.reg[CPU_EDI_INDEX].d); | |
| break; | break; |
| case 2: | case 2: |
| wsprintf(str, "CS=%.4x DS=%.4x ES=%.4x " \ | wsprintf(str, _T("CS=%.4x DS=%.4x ES=%.4x SS=%.4x"), |
| "FS=%.4x GS=%.4x SS=%.4x", | r->r.w.cs, r->r.w.ds, r->r.w.es, r->r.w.ss); |
| r->cpu_regs.sreg[CPU_CS_INDEX], | |
| r->cpu_regs.sreg[CPU_DS_INDEX], | |
| r->cpu_regs.sreg[CPU_ES_INDEX], | |
| r->cpu_regs.sreg[CPU_FS_INDEX], | |
| r->cpu_regs.sreg[CPU_GS_INDEX], | |
| r->cpu_regs.sreg[CPU_SS_INDEX]); | |
| break; | break; |
| case 3: | case 3: |
| wsprintf(str, "EIP=%.8x %s", | wsprintf(str, _T("IP=%.4x %s"), |
| r->cpu_regs.eip.d, | r->r.w.ip, debugsub_flags(r->r.w.flag)); |
| debugsub_flags(r->cpu_regs.eflags.d)); | |
| break; | break; |
| } | } |
| TextOut(hdc, 0, y, str, strlen(str)); | TextOut(hdc, 0, y, str, lstrlen(str)); |
| } | } |
| DeleteObject(SelectObject(hdc, hfont)); | DeleteObject(SelectObject(hdc, hfont)); |
| } | } |