|
|
| version 1.6, 2005/02/04 05:32:25 | version 1.9, 2005/03/20 08:58:19 |
|---|---|
| Line 10 | Line 10 |
| #include "cpucore.h" | #include "cpucore.h" |
| static void set_viewseg(HWND hwnd, NP2VIEW_T *view, WORD seg) { | static void set_viewseg(HWND hwnd, NP2VIEW_T *view, UINT16 seg) { |
| if (view->seg != seg) { | if (view->seg != seg) { |
| view->seg = seg; | view->seg = seg; |
| Line 18 static void set_viewseg(HWND hwnd, NP2VI | Line 18 static void set_viewseg(HWND hwnd, NP2VI |
| } | } |
| } | } |
| static void viewasm_paint(NP2VIEW_T *view, RECT *rc, HDC hdc) { | static void viewasm_paint(NP2VIEW_T *view, RECT *rc, HDC hdc) { |
| LONG y; | LONG y; |
| DWORD seg4; | UINT32 seg4; |
| WORD off; | UINT16 off; |
| DWORD pos; | UINT32 pos; |
| BYTE *p; | UINT8 *p; |
| BYTE buf[16]; | UINT8 buf[16]; |
| char str[16]; | TCHAR str[16]; |
| HFONT hfont; | HFONT hfont; |
| BOOL opsize; | BOOL opsize; |
| _UNASM una; | _UNASM una; |
| int step; | int step; |
| #if defined(UNICODE) | |
| TCHAR cnv[64]; | |
| #endif | |
| 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 68 static void viewasm_paint(NP2VIEW_T *vie | Line 70 static void viewasm_paint(NP2VIEW_T *vie |
| } | } |
| else { | else { |
| int i; | int i; |
| WORD *r; | UINT16 *r; |
| r = (WORD *)view->buf2.ptr; | r = (UINT16 *)view->buf2.ptr; |
| view->buf2.type = ALLOCTYPE_ASM; | view->buf2.type = ALLOCTYPE_ASM; |
| view->buf2.arg = seg4 + view->off; | view->buf2.arg = seg4 + view->off; |
| off = view->off; | off = view->off; |
| Line 80 static void viewasm_paint(NP2VIEW_T *vie | Line 82 static void viewasm_paint(NP2VIEW_T *vie |
| p = (BYTE *)view->buf1.ptr; | p = (BYTE *)view->buf1.ptr; |
| p += off; | p += off; |
| if (off > 0xfff0) { | if (off > 0xfff0) { |
| DWORD pos = 0x10000 - off; | UINT32 pos = 0x10000 - off; |
| CopyMemory(buf, p, pos); | CopyMemory(buf, p, pos); |
| CopyMemory(buf + pos, view->buf1.ptr, 16 - pos); | CopyMemory(buf + pos, view->buf1.ptr, 16 - pos); |
| p = buf; | p = buf; |
| Line 91 static void viewasm_paint(NP2VIEW_T *vie | Line 93 static void viewasm_paint(NP2VIEW_T *vie |
| viewmem_read(&(view->dmem), seg4 + off, buf, 16); | viewmem_read(&(view->dmem), seg4 + off, buf, 16); |
| } | } |
| step = unasm(NULL, p, 16, FALSE, off); | step = unasm(NULL, p, 16, FALSE, off); |
| off += (WORD)step; | off += (UINT16)step; |
| } | } |
| *r = off; | *r = off; |
| } | } |
| Line 99 static void viewasm_paint(NP2VIEW_T *vie | Line 101 static void viewasm_paint(NP2VIEW_T *vie |
| } | } |
| if ((pos) && (pos < 256)) { | if ((pos) && (pos < 256)) { |
| off = *(((WORD *)view->buf2.ptr) + pos); | off = *(((UINT16 *)view->buf2.ptr) + pos); |
| } | } |
| else { | else { |
| off = view->off; | off = view->off; |
| } | } |
| for (y=0; y<rc->bottom; y+=16) { | for (y=0; y<rc->bottom; y+=16) { |
| wsprintf(str, "%04x:%04x", view->seg, off); | wsprintf(str, _T("%04x:%04x"), view->seg, off); |
| TextOut(hdc, 0, y, str, 9); | TextOut(hdc, 0, y, str, 9); |
| off &= 0xffff; | off &= 0xffff; |
| if (view->lock) { | if (view->lock) { |
| p = (BYTE *)view->buf1.ptr; | p = (BYTE *)view->buf1.ptr; |
| p += off; | p += off; |
| if (off > 0xfff0) { | if (off > 0xfff0) { |
| DWORD pos = 0x10000 - off; | UINT32 pos = 0x10000 - off; |
| CopyMemory(buf, p, pos); | CopyMemory(buf, p, pos); |
| CopyMemory(buf + pos, view->buf1.ptr, 16 - pos); | CopyMemory(buf + pos, view->buf1.ptr, 16 - pos); |
| p = buf; | p = buf; |
| Line 127 static void viewasm_paint(NP2VIEW_T *vie | Line 129 static void viewasm_paint(NP2VIEW_T *vie |
| if (!step) { | if (!step) { |
| break; | break; |
| } | } |
| TextOut(hdc, 11 * 8, y, una.mnemonic, strlen(una.mnemonic)); | #if defined(UNICODE) |
| TextOut(hdc, 11 * 8, y, cnv, MultiByteToWideChar(CP_ACP, | |
| MB_PRECOMPOSED, una.mnemonic, -1, cnv, NELEMENTS(cnv))); | |
| #else | |
| TextOut(hdc, 11 * 8, y, una.mnemonic, lstrlen(una.mnemonic)); | |
| #endif | |
| if (una.operand[0]) { | if (una.operand[0]) { |
| TextOut(hdc, (11 + 7) * 8, y, una.operand, strlen(una.operand)); | #if defined(UNICODE) |
| TextOut(hdc, (11 + 7) * 8, y, cnv, MultiByteToWideChar(CP_ACP, | |
| MB_PRECOMPOSED, una.operand, -1, cnv, NELEMENTS(cnv))); | |
| #else | |
| TextOut(hdc, (11 + 7) * 8, y, | |
| una.operand, lstrlen(una.operand)); | |
| #endif | |
| } | } |
| off += (WORD)step; | off += (UINT16)step; |
| } | } |
| DeleteObject(SelectObject(hdc, hfont)); | DeleteObject(SelectObject(hdc, hfont)); |
| Line 188 void viewasm_init(NP2VIEW_T *dst, NP2VIE | Line 201 void viewasm_init(NP2VIEW_T *dst, NP2VIE |
| switch(src->type) { | switch(src->type) { |
| case VIEWMODE_SEG: | case VIEWMODE_SEG: |
| dst->seg = dst->seg; | dst->seg = dst->seg; |
| dst->off = (WORD)(dst->pos << 4); | dst->off = (UINT16)(dst->pos << 4); |
| break; | break; |
| case VIEWMODE_1MB: | case VIEWMODE_1MB: |
| if (dst->pos < 0x10000) { | if (dst->pos < 0x10000) { |
| dst->seg = (WORD)dst->pos; | dst->seg = (UINT16)dst->pos; |
| dst->off = 0; | dst->off = 0; |
| } | } |
| else { | else { |
| dst->seg = 0xffff; | dst->seg = 0xffff; |
| dst->off = (WORD)((dst->pos - 0xffff) << 4); | dst->off = (UINT16)((dst->pos - 0xffff) << 4); |
| } | } |
| break; | break; |