| version 1.2, 2003/10/21 11:22:05 | version 1.7, 2005/02/09 20:11:36 | 
| Line 7 | Line 7 | 
 | #include        "viewmem.h" | #include        "viewmem.h" | 
 | #include        "viewasm.h" | #include        "viewasm.h" | 
 | #include        "unasm.h" | #include        "unasm.h" | 
| #include        "i286.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 23  static void viewasm_paint(NP2VIEW_T *vie | Line 23  static void viewasm_paint(NP2VIEW_T *vie | 
 |  |  | 
 | LONG            y; | LONG            y; | 
 | DWORD           seg4; | DWORD           seg4; | 
| WORD            off; | UINT16          off; | 
 | DWORD           pos; | DWORD           pos; | 
 | BYTE            *p; | BYTE            *p; | 
 | BYTE            buf[16]; | BYTE            buf[16]; | 
| char            str[16]; | OEMCHAR         str[16]; | 
 | HFONT           hfont; | HFONT           hfont; | 
| PREFIX_T        fix; | BOOL            opsize; | 
| UNASM_T         una; | _UNASM          una; | 
 | int                     step; | int                     step; | 
 |  |  | 
 | 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, | 
| DEFAULT_QUALITY, FIXED_PITCH, "£Í£Ó¥´¥·¥Ã¥¯"); | DEFAULT_QUALITY, FIXED_PITCH, np2viewfont); | 
 | SetTextColor(hdc, 0xffffff); | SetTextColor(hdc, 0xffffff); | 
 | SetBkColor(hdc, 0x400000); | SetBkColor(hdc, 0x400000); | 
 | hfont = (HFONT)SelectObject(hdc, hfont); | hfont = (HFONT)SelectObject(hdc, hfont); | 
| Line 68  static void viewasm_paint(NP2VIEW_T *vie | Line 68  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; | 
 | unasm_reset(&fix); |  | 
 | for (i=0; i<255; i++) { | for (i=0; i<255; i++) { | 
 | off &= 0xffff; | off &= 0xffff; | 
 | *r++ = off; | *r++ = off; | 
| Line 91  static void viewasm_paint(NP2VIEW_T *vie | Line 90  static void viewasm_paint(NP2VIEW_T *vie | 
 | p = buf; | p = buf; | 
 | viewmem_read(&(view->dmem), seg4 + off, buf, 16); | viewmem_read(&(view->dmem), seg4 + off, buf, 16); | 
 | } | } | 
| step = unasm(off, p, &fix, NULL); | step = unasm(NULL, p, 16, FALSE, off); | 
| off += (WORD)step; | off += (UINT16)step; | 
 | } | } | 
 | *r = off; | *r = off; | 
 | } | } | 
| Line 100  static void viewasm_paint(NP2VIEW_T *vie | Line 99  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; | 
 | } | } | 
 |  |  | 
 | unasm_reset(&fix); |  | 
 | for (y=0; y<rc->bottom; y+=16) { | for (y=0; y<rc->bottom; y+=16) { | 
| wsprintf(str, "%04x:%04x", view->seg, off); | OEMSPRINTF(str, OEMTEXT("%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) { | 
| Line 125  static void viewasm_paint(NP2VIEW_T *vie | Line 123  static void viewasm_paint(NP2VIEW_T *vie | 
 | p = buf; | p = buf; | 
 | viewmem_read(&(view->dmem), seg4 + off, buf, 16); | viewmem_read(&(view->dmem), seg4 + off, buf, 16); | 
 | } | } | 
| step = unasm(off, p, &fix, &una); | step = unasm(&una, p, 16, FALSE, off); | 
 | if (!step) { | if (!step) { | 
 | break; | break; | 
 | } | } | 
| TextOut(hdc, 11 * 8, y, una.mnemonic, strlen(una.mnemonic)); | TextOut(hdc, 11 * 8, y, una.mnemonic, OEMSTRLEN(una.mnemonic)); | 
 | if (una.operand[0]) { | if (una.operand[0]) { | 
| TextOut(hdc, (11 + 7) * 8, y, una.operand, strlen(una.operand)); | TextOut(hdc, (11 + 7) * 8, y, una.operand, OEMSTRLEN(una.operand)); | 
 | } | } | 
| off += (WORD)step; | off += (UINT16)step; | 
 | } | } | 
 |  |  | 
 | DeleteObject(SelectObject(hdc, hfont)); | DeleteObject(SelectObject(hdc, hfont)); | 
| Line 147  LRESULT CALLBACK viewasm_proc(NP2VIEW_T | Line 145  LRESULT CALLBACK viewasm_proc(NP2VIEW_T | 
 | case WM_COMMAND: | case WM_COMMAND: | 
 | switch(LOWORD(wp)) { | switch(LOWORD(wp)) { | 
 | case IDM_SEGCS: | case IDM_SEGCS: | 
| set_viewseg(hwnd, view, I286_CS); | set_viewseg(hwnd, view, CPU_CS); | 
 | break; | break; | 
 |  |  | 
 | case IDM_SEGDS: | case IDM_SEGDS: | 
| set_viewseg(hwnd, view, I286_DS); | set_viewseg(hwnd, view, CPU_DS); | 
 | break; | break; | 
 |  |  | 
 | case IDM_SEGES: | case IDM_SEGES: | 
| set_viewseg(hwnd, view, I286_ES); | set_viewseg(hwnd, view, CPU_ES); | 
 | break; | break; | 
 |  |  | 
 | case IDM_SEGSS: | case IDM_SEGSS: | 
| set_viewseg(hwnd, view, I286_SS); | set_viewseg(hwnd, view, CPU_SS); | 
 | break; | break; | 
 |  |  | 
 | case IDM_SEGTEXT: | case IDM_SEGTEXT: | 
| Line 190  void viewasm_init(NP2VIEW_T *dst, NP2VIE | Line 188  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; | 
 |  |  | 
| Line 215  void viewasm_init(NP2VIEW_T *dst, NP2VIE | Line 213  void viewasm_init(NP2VIEW_T *dst, NP2VIE | 
 | } | } | 
 | } | } | 
 | if (!src) { | if (!src) { | 
| dst->seg = I286_CS; | dst->seg = CPU_CS; | 
| dst->off = I286_IP; | dst->off = CPU_IP; | 
 | } | } | 
 | dst->type = VIEWMODE_ASM; | dst->type = VIEWMODE_ASM; | 
 | dst->maxline = 256; | dst->maxline = 256; | 
 | dst->mul = 1; | dst->mul = 1; | 
 | dst->pos = 0; | dst->pos = 0; | 
 | } | } | 
 |  |  |