Rev 4907 | Rev 4909 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 4907 | Rev 4908 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
2 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; GUI ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
2 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; GUI ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
3 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
3 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
Line 4... | Line -... | ||
4 | - | ||
5 | macro DrawRectangle x, y, w, h, color |
- | |
6 | { |
- | |
7 | mcall 13, x shl 16 + w, y shl 16 + 1, color ; top |
- | |
8 | mcall , x shl 16 + 1, y shl 16 + h, color ; left |
- | |
9 | mcall , (x+w) shl 16 +1, y shl 16 + (h+1), color ; right |
- | |
10 | mcall , x shl 16 + w, (y+h) shl 16 + 1, color ; bottom |
- | |
11 | } |
- | |
12 | 4 | ||
13 | ;----------------------------------------------------------------------------- |
5 | ;----------------------------------------------------------------------------- |
Line 14... | Line 6... | ||
14 | ; Color scheme |
6 | ; Color scheme |
15 | 7 | ||
Line 67... | Line 59... | ||
67 | data_width equ 80 |
59 | data_width equ 80 |
68 | data_x_pos equ 12 |
60 | data_x_pos equ 12 |
69 | data_x_size equ data_width*6 |
61 | data_x_size equ data_width*6 |
Line 70... | Line 62... | ||
70 | 62 | ||
71 | title_x_pos equ 30 |
63 | title_x_pos equ 30 |
72 | title_y_pos equ 32 |
64 | title_y_pos equ 8 |
Line 73... | Line 65... | ||
73 | title_y_size equ 10 |
65 | title_y_size equ 10 |
74 | 66 | ||
75 | ;dump_y_pos equ (registers_y_pos + registers_y_size + 5) |
67 | ;dump_y_pos equ (registers_y_pos + registers_y_size + 5) |
Line 97... | Line 89... | ||
97 | registers_x_pos equ (data_x_pos + messages_x_size + 4) |
89 | registers_x_pos equ (data_x_pos + messages_x_size + 4) |
98 | registers_y_pos equ (title_y_pos + title_y_size - 3) |
90 | registers_y_pos equ (title_y_pos + title_y_size - 3) |
99 | registers_x_size equ 134+2*6 |
91 | registers_x_size equ 134+2*6 |
100 | registers_y_size equ (cmdline_y_pos + cmdline_y_size - registers_y_pos+1) |
92 | registers_y_size equ (cmdline_y_pos + cmdline_y_size - registers_y_pos+1) |
Line 101... | Line 93... | ||
101 | 93 | ||
102 | wnd_x_size equ (data_x_pos + messages_x_size + data_x_pos + registers_x_size+3) |
94 | wnd_x_size equ (data_x_pos + messages_x_size + data_x_pos + registers_x_size+3) + 10 |
Line 103... | Line 95... | ||
103 | wnd_y_size equ (cmdline_y_pos + cmdline_y_size + data_x_pos) |
95 | wnd_y_size equ (cmdline_y_pos + cmdline_y_size + data_x_pos) |
104 | 96 | ||
Line 386... | Line 378... | ||
386 | imul ecx, 6 |
378 | imul ecx, 6 |
387 | inc ecx |
379 | inc ecx |
388 | add ebx, cmdline_x_pos |
380 | add ebx, cmdline_x_pos |
389 | shl ebx, 16 |
381 | shl ebx, 16 |
390 | or ebx, ecx |
382 | or ebx, ecx |
391 | mov ecx, cmdline_y_pos*10000h + cmdline_y_size |
383 | mov ecx, [cmdline_y_pos_dd] |
- | 384 | mov cx, cmdline_y_size |
|
392 | mov edx, COLOR_BG_NORMAL |
385 | mov edx, COLOR_BG_NORMAL |
393 | ; draw container rectangle/box for cmdline |
386 | ; draw container rectangle/box for cmdline |
394 | mcall 13 |
387 | mcall 13 |
395 | ret |
388 | ret |
Line 409... | Line 402... | ||
409 | mov ecx, COLOR_TXT_NORMAL |
402 | mov ecx, COLOR_TXT_NORMAL |
410 | lea edx, [cmdline+ebx] |
403 | lea edx, [cmdline+ebx] |
411 | imul ebx, 6 |
404 | imul ebx, 6 |
412 | add ebx, cmdline_x_pos |
405 | add ebx, cmdline_x_pos |
413 | shl ebx, 16 |
406 | shl ebx, 16 |
414 | or ebx, cmdline_y_pos+1 |
407 | mov bx, word[cmdline_y_pos_dd+4] |
- | 408 | inc bx |
|
415 | ; draw a text string in the window |
409 | ; draw a text string in the window |
416 | mcall 4 |
410 | mcall 4 |
417 | ret |
411 | ret |
Line 418... | Line 412... | ||
418 | 412 | ||
Line 516... | Line 510... | ||
516 | put_message: |
510 | put_message: |
517 | call put_message_nodraw |
511 | call put_message_nodraw |
Line 518... | Line 512... | ||
518 | 512 | ||
519 | draw_messages: |
513 | draw_messages: |
- | 514 | ; draw container rectangle/box |
|
- | 515 | mov ebx, messages_x_pos shl 16 |
|
- | 516 | add ebx, [messages_x_size_dd+4] |
|
- | 517 | mov ecx, [messages_y_pos_dd] |
|
520 | ; draw container rectangle/box |
518 | mov cx, messages_y_size |
521 | mcall 13, messages_x_pos*10000h+messages_x_size, messages_y_pos*10000h+messages_y_size, COLOR_BG_NORMAL |
519 | mcall 13, , , COLOR_BG_NORMAL |
522 | mov edx, messages |
520 | mov edx, messages |
523 | push messages_width |
521 | push messages_width |
524 | pop esi |
522 | pop esi |
525 | mov ecx, COLOR_TXT_NORMAL |
523 | mov ecx, COLOR_TXT_NORMAL |
- | 524 | mov ebx, messages_x_pos*10000h |
|
Line 526... | Line 525... | ||
526 | mov ebx, messages_x_pos*10000h+messages_y_pos |
525 | mov bx, word[messages_y_pos_dd+4] |
527 | 526 | ||
528 | @@: |
527 | @@: |
529 | ; display text string in the window |
528 | ; display text string in the window |
Line 537... | Line 536... | ||
537 | ;----------------------------------------------------------------------------- |
536 | ;----------------------------------------------------------------------------- |
538 | ; Show/hide cursor in command line |
537 | ; Show/hide cursor in command line |
Line 539... | Line 538... | ||
539 | 538 | ||
540 | ; TODO: make it cursor.draw and cursor.hide ??? |
539 | ; TODO: make it cursor.draw and cursor.hide ??? |
541 | draw_cursor: |
540 | draw_cursor: |
- | 541 | mov ecx, [cmdline_y_pos_dd+2] |
|
542 | mov ecx, cmdline_y_pos*10001h+cmdline_y_size-1 |
542 | add cx, cmdline_y_size-1 |
543 | mov ebx, [cmdline_pos] |
543 | mov ebx, [cmdline_pos] |
544 | imul ebx, 6 |
544 | imul ebx, 6 |
545 | add ebx, cmdline_x_pos |
545 | add ebx, cmdline_x_pos |
546 | mov edx, ebx |
546 | mov edx, ebx |
Line 555... | Line 555... | ||
555 | mov ebx, [cmdline_pos] |
555 | mov ebx, [cmdline_pos] |
556 | imul ebx, 6 |
556 | imul ebx, 6 |
557 | add ebx, cmdline_x_pos |
557 | add ebx, cmdline_x_pos |
558 | shl ebx, 16 |
558 | shl ebx, 16 |
559 | inc ebx |
559 | inc ebx |
560 | mov ecx, cmdline_y_pos*10000h + cmdline_y_size |
560 | mov ecx, [cmdline_y_pos_dd] |
- | 561 | mov cx, cmdline_y_size |
|
561 | mov edx, COLOR_BG_NORMAL |
562 | mov edx, COLOR_BG_NORMAL |
562 | ; draw container rectangle/box |
563 | ; draw container rectangle/box |
563 | mcall 13 |
564 | mcall 13 |
564 | mov ebx, [cmdline_pos] |
565 | mov ebx, [cmdline_pos] |
565 | cmp ebx, [cmdline_len] |
566 | cmp ebx, [cmdline_len] |
Line 568... | Line 569... | ||
568 | mov ecx, COLOR_TXT_NORMAL |
569 | mov ecx, COLOR_TXT_NORMAL |
569 | lea edx, [cmdline+ebx] |
570 | lea edx, [cmdline+ebx] |
570 | imul ebx, 6 |
571 | imul ebx, 6 |
571 | add ebx, cmdline_x_pos |
572 | add ebx, cmdline_x_pos |
572 | shl ebx, 16 |
573 | shl ebx, 16 |
573 | or ebx, cmdline_y_pos+1 |
574 | mov bx, word[cmdline_y_pos_dd+4] |
- | 575 | inc bx |
|
574 | push 1 |
576 | push 1 |
575 | pop esi |
577 | pop esi |
576 | ; draw text string in the window |
578 | ; draw text string in the window |
577 | mcall 4 |
579 | mcall 4 |
Line 583... | Line 585... | ||
583 | ; Draw program window title |
585 | ; Draw program window title |
Line 584... | Line 586... | ||
584 | 586 | ||
585 | ; FIXME: something wrong here |
587 | ; FIXME: something wrong here |
586 | redraw_title: |
588 | redraw_title: |
- | 589 | ; draw container rectangle/box |
|
- | 590 | mov ebx, [data_x_size_dd+4] |
|
587 | ; draw container rectangle/box |
591 | add ebx, title_x_pos*10000h+data_x_pos-title_x_pos |
Line 588... | Line 592... | ||
588 | mcall 13, title_x_pos*10000h+data_x_pos+data_x_size-title_x_pos, title_y_pos*10000h+title_y_size, COLOR_BG_NORMAL |
592 | mcall 13, , title_y_pos*10000h+title_y_size, COLOR_BG_NORMAL |
589 | 593 | ||
590 | draw_title: |
594 | draw_title: |
591 | mcall 38, (data_x_pos-2)*10000h+title_x_pos-5, (title_y_pos+5)*10001h, COLOR_LINE |
595 | mcall 38, (data_x_pos-2)*10000h+title_x_pos-5, (title_y_pos+5)*10001h, COLOR_LINE |
Line 597... | Line 601... | ||
597 | 601 | ||
598 | @@: |
602 | @@: |
599 | imul ebx, esi, 6 |
603 | imul ebx, esi, 6 |
600 | add ebx, title_x_pos+4 |
604 | add ebx, title_x_pos+4 |
601 | shl ebx, 16 |
605 | shl ebx, 16 |
- | 606 | mov bx, data_x_pos-10-5-6*7 |
|
602 | mov bx, data_x_pos+data_x_size-10-5-6*7 |
607 | add bx, word[data_x_size_dd+4] |
603 | cmp [bSuspended], 0 |
608 | cmp [bSuspended], 0 |
604 | jz @f |
609 | jz @f |
Line 605... | Line 610... | ||
605 | add ebx, 6 |
610 | add ebx, 6 |
606 | 611 | ||
607 | @@: |
612 | @@: |
- | 613 | ; draw line with COLOR_LINE (in edx) |
|
608 | ; draw line with COLOR_LINE (in edx) |
614 | mcall |
609 | mcall |
615 | mov ebx, [data_x_size_dd+2] |
610 | mov ebx, (data_x_pos+data_x_size-10+4)*0x10000 + data_x_pos+data_x_size+2 |
616 | add ebx, (data_x_pos-10+4)*0x10000 + data_x_pos+2 |
611 | ; draw line with COLOR_LINE (in edx) |
617 | ; draw line with COLOR_LINE (in edx) |
612 | mcall |
618 | mcall |
613 | mov al, 4 |
619 | mov al, 4 |
Line 622... | Line 628... | ||
622 | @@: |
628 | @@: |
623 | ; draw text string in the window |
629 | ; draw text string in the window |
624 | mcall |
630 | mcall |
625 | cmp [debuggee_pid], 0 |
631 | cmp [debuggee_pid], 0 |
626 | jz .nodebuggee |
632 | jz .nodebuggee |
- | 633 | mov ebx, [data_x_size_dd] |
|
627 | mov ebx, (data_x_pos+data_x_size-10-6*7)*10000h + title_y_pos |
634 | add ebx, (data_x_pos-10-6*7)*10000h + title_y_pos |
628 | mov edx, aRunning |
635 | mov edx, aRunning |
629 | push 7 |
636 | push 7 |
630 | pop esi |
637 | pop esi |
631 | cmp [bSuspended], 0 |
638 | cmp [bSuspended], 0 |
632 | jz @f |
639 | jz @f |
Line 640... | Line 647... | ||
640 | mcall |
647 | mcall |
641 | ret |
648 | ret |
Line 642... | Line 649... | ||
642 | 649 | ||
643 | .nodebuggee: |
650 | .nodebuggee: |
- | 651 | mov al, 38 |
|
644 | mov al, 38 |
652 | mov ebx, [data_x_size_dd+2] |
645 | mov ebx, (data_x_pos+data_x_size-10-6*7-5)*0x10000 + data_x_pos+data_x_size+2 |
653 | add ebx, (data_x_pos-10-6*7-5)*0x10000 + data_x_pos+2 |
646 | mov ecx, (title_y_pos+5)*10001h |
654 | mov ecx, (title_y_pos+5)*10001h |
647 | mov edx, COLOR_LINE |
655 | mov edx, COLOR_LINE |
Line 648... | Line 656... | ||
648 | jmp @b |
656 | jmp @b |
Line 1066... | Line 1074... | ||
1066 | jz @f |
1074 | jz @f |
1067 | mov ecx, (COLOR_TXT_INACTIVE or 0x40000000) |
1075 | mov ecx, (COLOR_TXT_INACTIVE or 0x40000000) |
1068 | @@: |
1076 | @@: |
1069 | mov edx, aMain |
1077 | mov edx, aMain |
1070 | ; draw a text string in the window |
1078 | ; draw a text string in the window |
- | 1079 | mov ebx, [registers_x_pos_dd] |
|
1071 | mcall 4, (registers_x_pos+4)*10000h+registers_y_pos+2 |
1080 | add ebx, 4*10000h+registers_y_pos+2 |
- | 1081 | mcall 4 |
|
Line 1072... | Line 1082... | ||
1072 | 1082 | ||
1073 | cmp [reg_mode], REG_MODE_SSE |
1083 | cmp [reg_mode], REG_MODE_SSE |
1074 | jz @f |
1084 | jz @f |
1075 | mov ecx, (COLOR_TXT_INACTIVE or 0x40000000) |
1085 | mov ecx, (COLOR_TXT_INACTIVE or 0x40000000) |
1076 | @@: |
1086 | @@: |
1077 | mov edx, aSSE |
1087 | mov edx, aSSE |
- | 1088 | ; draw a text string in the window |
|
1078 | ; draw a text string in the window |
1089 | mov ebx, [registers_x_pos_dd] |
- | 1090 | add ebx, 46*10000h+registers_y_pos+2 |
|
Line 1079... | Line 1091... | ||
1079 | mcall 4, (registers_x_pos+46)*10000h+registers_y_pos+2 |
1091 | mcall 4 |
1080 | 1092 | ||
1081 | cmp [reg_mode], REG_MODE_AVX |
1093 | cmp [reg_mode], REG_MODE_AVX |
1082 | jz @f |
1094 | jz @f |
1083 | mov ecx, (COLOR_TXT_INACTIVE or 0x40000000) |
1095 | mov ecx, (COLOR_TXT_INACTIVE or 0x40000000) |
1084 | @@: |
1096 | @@: |
- | 1097 | mov edx, aAVX |
|
1085 | mov edx, aAVX |
1098 | ; draw a text string in the window |
- | 1099 | mov ebx, [registers_x_pos_dd] |
|
1086 | ; draw a text string in the window |
1100 | add ebx, 88*10000h+registers_y_pos+2 |
Line 1087... | Line 1101... | ||
1087 | mcall 4, (registers_x_pos+88)*10000h+registers_y_pos+2 |
1101 | mcall 4 |
1088 | ret |
1102 | ret |
Line 1095... | Line 1109... | ||
1095 | mov edi, COLOR_BG_NORMAL |
1109 | mov edi, COLOR_BG_NORMAL |
1096 | mov esi, _eax |
1110 | mov esi, _eax |
1097 | push 4 |
1111 | push 4 |
1098 | pop ecx |
1112 | pop ecx |
1099 | mov edx, regs_strs |
1113 | mov edx, regs_strs |
- | 1114 | mov ebx, [registers_x_pos_dd] |
|
1100 | mov ebx, (registers_x_pos+2)*10000h+registers_y_pos+22 |
1115 | add ebx, 2*10000h+registers_y_pos+22 |
1101 | call draw_register |
1116 | call draw_register |
- | 1117 | mov ebx, [registers_x_pos_dd] |
|
1102 | mov ebx, (registers_x_pos+2)*10000h+registers_y_pos+32 |
1118 | add ebx, 2*10000h+registers_y_pos+32 |
1103 | add esi, _ebx-_eax |
1119 | add esi, _ebx-_eax |
1104 | call draw_register |
1120 | call draw_register |
- | 1121 | mov ebx, [registers_x_pos_dd] |
|
1105 | mov ebx, (registers_x_pos+2)*10000h+registers_y_pos+42 |
1122 | add ebx, 2*10000h+registers_y_pos+42 |
1106 | add esi, _ecx-_ebx |
1123 | add esi, _ecx-_ebx |
1107 | call draw_register |
1124 | call draw_register |
- | 1125 | mov ebx, [registers_x_pos_dd] |
|
1108 | mov ebx, (registers_x_pos+2)*10000h+registers_y_pos+52 |
1126 | add ebx, 2*10000h+registers_y_pos+52 |
1109 | add esi, _edx-_ecx |
1127 | add esi, _edx-_ecx |
1110 | call draw_register |
1128 | call draw_register |
- | 1129 | mov ebx, [registers_x_pos_dd] |
|
1111 | mov ebx, (registers_x_pos+2)*10000h+registers_y_pos+62 |
1130 | add ebx, 2*10000h+registers_y_pos+62 |
1112 | add esi, _esi-_edx |
1131 | add esi, _esi-_edx |
1113 | call draw_register |
1132 | call draw_register |
- | 1133 | mov ebx, [registers_x_pos_dd] |
|
1114 | mov ebx, (registers_x_pos+2)*10000h+registers_y_pos+72 |
1134 | add ebx, 2*10000h+registers_y_pos+72 |
1115 | add esi, _edi-_esi |
1135 | add esi, _edi-_esi |
1116 | call draw_register |
1136 | call draw_register |
- | 1137 | mov ebx, [registers_x_pos_dd] |
|
1117 | mov ebx, (registers_x_pos+2)*10000h+registers_y_pos+82 |
1138 | add ebx, 2*10000h+registers_y_pos+82 |
1118 | add esi, _ebp-_edi |
1139 | add esi, _ebp-_edi |
1119 | call draw_register |
1140 | call draw_register |
- | 1141 | mov ebx, [registers_x_pos_dd] |
|
1120 | mov ebx, (registers_x_pos+2)*10000h+registers_y_pos+92 |
1142 | add ebx, 2*10000h+registers_y_pos+92 |
1121 | add esi, _esp-_ebp |
1143 | add esi, _esp-_ebp |
1122 | call draw_register |
1144 | call draw_register |
- | 1145 | mov ebx, [registers_x_pos_dd] |
|
1123 | mov ebx, (registers_x_pos+2)*10000h+registers_y_pos+102 |
1146 | add ebx, 2*10000h+registers_y_pos+102 |
1124 | add esi, _eip-_esp |
1147 | add esi, _eip-_esp |
1125 | call draw_register |
1148 | call draw_register |
- | 1149 | mov ebx, [registers_x_pos_dd] |
|
1126 | mov ebx, (registers_x_pos+2)*10000h+registers_y_pos+112 |
1150 | add ebx, 2*10000h+registers_y_pos+112 |
Line 1127... | Line 1151... | ||
1127 | 1151 | ||
1128 | mov cl, 7 |
1152 | mov cl, 7 |
1129 | add esi, _eflags-_eip |
1153 | add esi, _eflags-_eip |
1130 | call draw_register |
1154 | call draw_register |
Line 1134... | Line 1158... | ||
1134 | 1158 | ||
Line 1135... | Line 1159... | ||
1135 | push ebp |
1159 | push ebp |
1136 | 1160 | ||
- | 1161 | push 8 |
|
1137 | push 8 |
1162 | xor ebp, ebp |
Line 1138... | Line 1163... | ||
1138 | xor ebp, ebp |
1163 | mov ebx, [registers_x_pos_dd] |
1139 | mov ebx, (registers_x_pos+2)*10000h+registers_y_pos+142 |
1164 | add ebx, 2*10000h+registers_y_pos+142 |
Line 1140... | Line 1165... | ||
1140 | 1165 | ||
Line 1152... | Line 1177... | ||
1152 | ;int3 |
1177 | ;int3 |
1153 | ;nop |
1178 | ;nop |
Line 1154... | Line 1179... | ||
1154 | 1179 | ||
1155 | mov [esp], byte 8 |
1180 | mov [esp], byte 8 |
- | 1181 | xor ebp, ebp |
|
1156 | xor ebp, ebp |
1182 | mov ebx, [registers_x_pos_dd] |
Line 1157... | Line 1183... | ||
1157 | mov ebx, (registers_x_pos+2)*10000h+registers_y_pos+232 |
1183 | add ebx, 2*10000h+registers_y_pos+232 |
1158 | 1184 | ||
Line 1159... | Line 1185... | ||
1159 | align 4 |
1185 | align 4 |
Line 1175... | Line 1201... | ||
1175 | mov ecx, COLOR_TXT_NORMAL |
1201 | mov ecx, COLOR_TXT_NORMAL |
1176 | @@: |
1202 | @@: |
1177 | mov edx, aColon |
1203 | mov edx, aColon |
1178 | xor esi, esi |
1204 | xor esi, esi |
1179 | inc esi |
1205 | inc esi |
- | 1206 | mov ebx, [registers_x_pos_dd] |
|
1180 | mcall 4, (registers_x_pos+10)*10000h+registers_y_pos+122 |
1207 | add ebx, 10*10000h+registers_y_pos+122 |
- | 1208 | mcall 4 |
|
1181 | mov edx, flags |
1209 | mov edx, flags |
Line 1182... | Line 1210... | ||
1182 | 1210 | ||
1183 | @@: |
1211 | @@: |
1184 | add ebx, 2*6*10000h |
1212 | add ebx, 2*6*10000h |
Line 1205... | Line 1233... | ||
1205 | ;----------------------------------------------------------------------------- |
1233 | ;----------------------------------------------------------------------------- |
1206 | ; Draw all registers sets |
1234 | ; Draw all registers sets |
1207 | draw_registers: |
1235 | draw_registers: |
Line 1208... | Line 1236... | ||
1208 | 1236 | ||
- | 1237 | ; draw container rectangle/box with COLOR_BG_NORMAL |
|
1209 | ; draw container rectangle/box with COLOR_BG_NORMAL |
1238 | mov ebx, [registers_x_pos_dd] |
- | 1239 | add ebx, (-1)*10000h+(registers_x_size+2) |
|
- | 1240 | mov ecx, [registers_y_size_dd+4] |
|
- | 1241 | add ecx, (registers_y_pos-1)*10000h+2 |
|
1210 | mcall 13, (registers_x_pos-1)*10000h+(registers_x_size+2), (registers_y_pos-1)*10000h+(registers_y_size+2), COLOR_BG_NORMAL |
1242 | mcall 13, , , COLOR_BG_NORMAL |
Line 1211... | Line 1243... | ||
1211 | call draw_reg_title |
1243 | call draw_reg_title |
1212 | 1244 | ||
1213 | .redraw: |
1245 | .redraw: |
Line 1229... | Line 1261... | ||
1229 | ;----------------------------------------------------------------------------- |
1261 | ;----------------------------------------------------------------------------- |
1230 | ; Display memory dump |
1262 | ; Display memory dump |
Line 1231... | Line 1263... | ||
1231 | 1263 | ||
1232 | draw_dump: |
1264 | draw_dump: |
- | 1265 | ; draw container rectangle/box in the window |
|
- | 1266 | mov ebx, [data_x_size_dd+4] |
|
1233 | ; draw container rectangle/box in the window |
1267 | add ebx, data_x_pos*10000h |
Line 1234... | Line 1268... | ||
1234 | mcall 13, data_x_pos*10000h+data_x_size, dump_y_pos*10000h+dump_y_size, COLOR_BG_NORMAL |
1268 | mcall 13, , dump_y_pos*10000h+dump_y_size, COLOR_BG_NORMAL |
1235 | 1269 | ||
1236 | .redraw: |
1270 | .redraw: |
1237 | ; addresses |
1271 | ; addresses |
Line 1378... | Line 1412... | ||
1378 | shl ecx, 16 |
1412 | shl ecx, 16 |
1379 | mov cl, 11 |
1413 | mov cl, 11 |
1380 | ; setting up background color for disassembled text |
1414 | ; setting up background color for disassembled text |
1381 | mov edx, COLOR_BG_NORMAL |
1415 | mov edx, COLOR_BG_NORMAL |
1382 | ; draw container rectangle/box with color COLOR_BG_NORMAL (was 0xFFFFFF - white) |
1416 | ; draw container rectangle/box with color COLOR_BG_NORMAL (was 0xFFFFFF - white) |
- | 1417 | mov ebx, [data_x_size_dd+4] |
|
1383 | mcall 13, data_x_pos*10000h+data_x_size |
1418 | add ebx, data_x_pos*10000h |
- | 1419 | mcall 13 |
|
1384 | pop ebx |
1420 | pop ebx |
1385 | ; copy color value from edx (COLOR_BG_NORMAL) |
1421 | ; copy color value from edx (COLOR_BG_NORMAL) |
1386 | mov edi, edx |
1422 | mov edi, edx |
1387 | add ebx, (data_x_pos+6*2)*10000h+disasm_y_pos |
1423 | add ebx, (data_x_pos+6*2)*10000h+disasm_y_pos |
1388 | mov edx, esi |
1424 | mov edx, esi |
Line 1405... | Line 1441... | ||
1405 | shr ebx, 16 |
1441 | shr ebx, 16 |
1406 | lea ebx, [ebx+esi*2] |
1442 | lea ebx, [ebx+esi*2] |
1407 | shl ecx, 16 |
1443 | shl ecx, 16 |
1408 | mov cl, 10 |
1444 | mov cl, 10 |
1409 | imul ebx, 10001h |
1445 | imul ebx, 10001h |
1410 | sub bx, data_x_pos+data_x_size |
1446 | sub bx, data_x_pos |
- | 1447 | sub bx, word[data_x_size_dd+4] |
|
1411 | neg bx |
1448 | neg bx |
1412 | mov al, 13 |
1449 | mov al, 13 |
1413 | ; copy color value from edi |
1450 | ; copy color value from edi |
1414 | mov edx, edi |
1451 | mov edx, edi |
1415 | ; draw container rectangle/box for disassembled text, color in edx |
1452 | ; draw container rectangle/box for disassembled text, color in edx |
1416 | mcall |
1453 | mcall |
1417 | inc [disasm_cur_str] |
1454 | inc [disasm_cur_str] |
- | 1455 | mov eax, [disasm_height_dd] |
|
1418 | cmp [disasm_cur_str], disasm_height |
1456 | cmp [disasm_cur_str], eax |
1419 | jae .loopend |
1457 | jae .loopend |
Line 1420... | Line 1458... | ||
1420 | 1458 | ||
1421 | .nosymb: |
1459 | .nosymb: |
1422 | push [disasm_cur_pos] |
1460 | push [disasm_cur_pos] |
1423 | call disasm_instr |
1461 | call disasm_instr |
1424 | pop ebp |
1462 | pop ebp |
1425 | jc .loopend |
1463 | jc .loopend |
1426 | mov edx, COLOR_BG_NORMAL |
1464 | mov edx, COLOR_BG_NORMAL |
1427 | mov esi, COLOR_TXT_NORMAL |
1465 | mov esi, COLOR_TXT_NORMAL |
- | 1466 | mov ebx, data_x_pos*10000h |
|
1428 | mov ebx, data_x_pos*10000h + data_x_size |
1467 | add ebx, [data_x_size_dd+4] |
1429 | mov ecx, [disasm_cur_str] |
1468 | mov ecx, [disasm_cur_str] |
1430 | imul ecx, 10*10000h |
1469 | imul ecx, 10*10000h |
1431 | add ecx, (disasm_y_pos-1)*10000h + 10 |
1470 | add ecx, (disasm_y_pos-1)*10000h + 10 |
1432 | mov eax, ebp |
1471 | mov eax, ebp |
Line 1517... | Line 1556... | ||
1517 | add ebx, (data_x_pos+6*40)*10000h+disasm_y_pos |
1556 | add ebx, (data_x_pos+6*40)*10000h+disasm_y_pos |
Line 1518... | Line 1557... | ||
1518 | 1557 | ||
1519 | ; draw a text string in the window, color in ecx |
1558 | ; draw a text string in the window, color in ecx |
1520 | mcall 4 |
1559 | mcall 4 |
- | 1560 | inc [disasm_cur_str] |
|
1521 | inc [disasm_cur_str] |
1561 | mov eax, [disasm_height_dd] |
1522 | cmp [disasm_cur_str], disasm_height |
1562 | cmp [disasm_cur_str], eax |
Line 1523... | Line 1563... | ||
1523 | jb .loop |
1563 | jb .loop |
1524 | 1564 | ||
1525 | .loopend: |
1565 | .loopend: |
1526 | mov ecx, disasm_height |
1566 | mov ecx, [disasm_height_dd] |
1527 | sub ecx, [disasm_cur_str] |
1567 | sub ecx, [disasm_cur_str] |
1528 | jz @f |
1568 | jz @f |
1529 | imul ecx, 10 |
1569 | imul ecx, 10 |
- | 1570 | inc ecx |
|
1530 | inc ecx |
1571 | mov eax, disasm_y_pos |
1531 | mov eax, disasm_y_pos + disasm_y_size |
1572 | add eax, [disasm_y_size_dd+4] |
1532 | sub eax, ecx |
1573 | sub eax, ecx |
1533 | shl eax, 16 |
1574 | shl eax, 16 |
- | 1575 | add ecx, eax |
|
- | 1576 | ; Draw filled rectangle |
|
1534 | add ecx, eax |
1577 | mov ebx, [data_x_size_dd+4] |
Line 1535... | Line 1578... | ||
1535 | ; Draw filled rectangle |
1578 | add ebx, data_x_pos*10000h |
1536 | mcall 13, data_x_pos*10000h+data_x_size, , COLOR_BG_NORMAL |
1579 | mcall 13, , , COLOR_BG_NORMAL |
Line 1537... | Line 1580... | ||
1537 | 1580 | ||
Line 1538... | Line 1581... | ||
1538 | @@: |
1581 | @@: |
1539 | ret |
1582 | ret |
1540 | 1583 | ||
1541 | ;----------------------------------------------------------------------------- |
1584 | ;----------------------------------------------------------------------------- |
1542 | 1585 | ||
1543 | ; TODO: cleanup of this function, make some global labels local |
1586 | ; TODO: cleanup of this function, make some global labels local |
Line 1544... | Line 1587... | ||
1544 | update_disasm_eip: |
1587 | update_disasm_eip: |
1545 | ; test if instruction at eip is showed |
1588 | ; test if instruction at eip is showed |
Line 1594... | Line 1637... | ||
1594 | draw_window: |
1637 | draw_window: |
1595 | ; start window redraw |
1638 | ; start window redraw |
1596 | mcall 12, 1 |
1639 | mcall 12, 1 |
Line 1597... | Line 1640... | ||
1597 | 1640 | ||
1598 | ; define window |
1641 | ; define window |
Line 1599... | Line -... | ||
1599 | mcall 0, wnd_x_size, wnd_y_size, (COLOR_BG_NORMAL or 0x54000000), , caption_str |
- | |
1600 | 1642 | mcall 0, wnd_x_size, wnd_y_size, (COLOR_BG_NORMAL or 0x33000000), ,caption_str |
|
1601 | ; clear unused areas |
1643 | |
1602 | ; get window skin height |
- | |
1603 | mcall 48, 4 |
- | |
1604 | cmp eax, title_y_pos |
- | |
1605 | jb @f |
- | |
Line -... | Line 1644... | ||
- | 1644 | ; Get actual window size |
|
- | 1645 | mcall 9, thread_info, -1 |
|
- | 1646 | ||
- | 1647 | ; Check if window is rolled up |
|
- | 1648 | test [thread_info.wnd_state], 100b |
|
- | 1649 | jnz .done |
|
- | 1650 | ||
- | 1651 | ; Check if window isnt smaller then permisseable |
|
- | 1652 | mov eax, [thread_info.box.width] ; window xsize |
|
- | 1653 | mov ebx, [thread_info.box.height] ; ysize |
|
- | 1654 | mov edx, [thread_info.client_box.width] ; work area xsize |
|
- | 1655 | mov esi, [thread_info.client_box.height] ; ysize |
|
- | 1656 | sub eax, edx |
|
- | 1657 | sub ebx, esi |
|
- | 1658 | ||
1606 | push registers_y_pos |
1659 | cmp edx, wnd_x_size |
- | 1660 | jae .x_ok |
|
- | 1661 | mov edx, wnd_x_size |
|
1607 | pop eax |
1662 | .x_ok: |
1608 | 1663 | add edx, eax |
|
1609 | @@: |
1664 | |
- | 1665 | cmp esi, wnd_y_size |
|
1610 | push registers_y_pos |
1666 | jae .y_ok |
- | 1667 | mov esi, wnd_y_size |
|
- | 1668 | .y_ok: |
|
- | 1669 | add esi, ebx |
|
- | 1670 | mcall 67, -1, -1 ; set the new sizes |
|
- | 1671 | ||
- | 1672 | ; (re)calculate coordinates of GUI elements |
|
- | 1673 | mov eax, [thread_info.client_box.width] |
|
1611 | pop ecx |
1674 | sub eax, data_x_pos + data_x_pos + registers_x_size+3 |
1612 | push eax |
1675 | mov [data_x_size_dd+4], eax |
1613 | sub ecx, eax |
1676 | mov [messages_x_size_dd+4], eax |
- | 1677 | shl eax, 16 |
|
1614 | shl eax, 16 |
1678 | mov [data_x_size_dd], eax |
1615 | add ecx, eax |
1679 | mov [messages_x_size_dd], eax |
1616 | mov ebx, 5*10000h + (wnd_x_size-9) |
1680 | shr eax, 16 |
1617 | mov edx, COLOR_BG_NORMAL |
1681 | add eax, data_x_pos + 4 |
- | 1682 | mov [registers_x_pos_dd+4], eax |
|
1618 | ; draw container rectangle/box for registers information region |
1683 | shl eax, 16 |
1619 | mcall 13 |
1684 | mov [registers_x_pos_dd], eax |
1620 | mov ecx, (dump_y_pos+dump_y_size)*10000h + (disasm_y_pos-dump_y_pos-dump_y_size) |
1685 | |
- | 1686 | mov eax, [thread_info.client_box.height] |
|
1621 | ; draw container rectangle/box for dump memory region |
1687 | sub eax, cmdline_y_size + data_x_pos |
1622 | mcall |
1688 | mov [cmdline_y_pos_dd+4], eax |
1623 | mov ecx, (disasm_y_pos-1+disasm_y_size)*10000h + (messages_y_pos-disasm_y_pos+1-disasm_y_size) |
1689 | shl eax, 16 |
1624 | ; draw container rectangle/box for disassembled code region |
1690 | mov [cmdline_y_pos_dd], eax |
1625 | mcall |
1691 | shr eax, 16 |
1626 | mov ecx, (messages_y_pos+messages_y_size)*10000h + (wnd_y_size-messages_y_pos-messages_y_size-4) |
1692 | sub eax, messages_y_size + 4 |
1627 | ; draw container rectangle/box for messages window region |
1693 | mov [messages_y_pos_dd+4], eax |
1628 | mcall |
1694 | shl eax, 16 |
1629 | mov ebx, 5*10000h + (data_x_pos-5) |
1695 | mov [messages_y_pos_dd], eax |
1630 | pop ecx |
1696 | shr eax, 16 |
1631 | imul ecx, 10001h |
1697 | sub eax, disasm_y_pos + 4 |
1632 | sub cx, wnd_y_size-4 |
1698 | mov [disasm_y_size_dd+4], eax |
1633 | neg cx |
1699 | shl eax, 16 |
1634 | ; draw container rectangle/box |
1700 | mov [disasm_y_size_dd], eax |
1635 | mcall |
1701 | shr eax, 16 |
- | 1702 | mov ecx, 10 |
|
- | 1703 | xor edx, edx |
|
1636 | mov ebx, (data_x_pos+data_x_size)*10000h + (wnd_x_size-data_x_pos-data_x_size-4) |
1704 | div ecx |
1637 | ; draw container rectangle/box |
1705 | mov [disasm_height_dd], eax |
1638 | mcall |
1706 | |
1639 | mov ebx, 5*10000h + title_x_pos - 5 |
1707 | mov eax, [thread_info.client_box.height] |
- | 1708 | sub eax, data_x_pos + registers_y_pos-1 |
|
Line 1640... | Line 1709... | ||
1640 | mov ecx, (title_y_pos)*10000h + (title_y_size) |
1709 | mov [registers_y_size_dd+4], eax |
- | 1710 | shl eax, 16 |
|
1641 | ; draw container rectangle/box for dump memory region title |
1711 | mov [registers_y_size_dd], eax |
1642 | mcall |
1712 | |
1643 | 1713 | ; messages frame |
|
- | 1714 | mov ebx, [messages_x_size_dd+4] |
|
1644 | ; messages frame |
1715 | add ebx, (messages_x_pos-2)*10000h + (messages_x_pos+2) |
1645 | mov ebx, (messages_x_pos-2)*10000h + (messages_x_pos+messages_x_size+2) |
1716 | push ebx |
1646 | push ebx |
1717 | mov ecx, [messages_y_pos_dd+2] |
1647 | mov ecx, (messages_y_pos-2)*10001h |
1718 | add ecx, -2*10001h |
1648 | mov edx, COLOR_LINE |
1719 | mov edx, COLOR_LINE |
1649 | mcall 38 |
1720 | mcall 38 |
- | 1721 | add ecx, (messages_y_size+2+2)*10001h |
|
1650 | mov ecx, (messages_y_pos+messages_y_size+2)*10001h |
1722 | mcall |
1651 | mcall |
1723 | mov ebx, (messages_x_pos-2)*10001h |
- | 1724 | push ebx |
|
1652 | mov ebx, (messages_x_pos-2)*10001h |
1725 | mov ecx, [messages_y_pos_dd+2] |
1653 | push ebx |
1726 | add ecx, (-2*10000h) + (messages_y_size+2) |
1654 | mov ecx, (messages_y_pos-2)*10000h + (messages_y_pos+messages_y_size+2) |
1727 | mcall |
Line 1655... | Line 1728... | ||
1655 | mcall |
1728 | mov ebx, [messages_x_size_dd+2] |
- | 1729 | add ebx, (messages_x_pos+2)*10001h |
|
1656 | mov ebx, (messages_x_pos+messages_x_size+2)*10001h |
1730 | push ebx |
1657 | push ebx |
1731 | mcall |
1658 | mcall |
1732 | |
1659 | 1733 | ; command line frame |
|
1660 | ; command line frame |
1734 | mov ecx, [cmdline_y_pos_dd+2] |
1661 | mov ecx, (cmdline_y_pos-2)*10000h + (cmdline_y_pos+cmdline_y_size+2) |
1735 | add ecx, (-2*10000h) + (cmdline_y_size+2) |
- | 1736 | pop ebx |
|
1662 | pop ebx |
1737 | mcall |
- | 1738 | pop ebx |
|
1663 | mcall |
1739 | mcall |
1664 | pop ebx |
1740 | pop ebx |
- | 1741 | mov ecx, [cmdline_y_pos_dd+2] |
|
1665 | mcall |
1742 | add ecx, (cmdline_y_size+2)*10001h |
Line 1666... | Line 1743... | ||
1666 | pop ebx |
1743 | |
- | 1744 | mcall |
|
- | 1745 | mov ecx, [cmdline_y_pos_dd+2] |
|
- | 1746 | add ecx, (-2*10001h) |
|
- | 1747 | mcall |
|
- | 1748 | ||
- | 1749 | ; registers frame |
|
1667 | mov ecx, (cmdline_y_pos+cmdline_y_size+2)*10001h |
1750 | mov ebx, [registers_x_pos_dd] |
- | 1751 | add ebx, (-2) shl 16 + (registers_x_size+3) |
|
- | 1752 | mov ecx, (registers_y_pos-2) shl 16 + 1 |
|
- | 1753 | mov edx, COLOR_LINE |
|
- | 1754 | mcall 13 ; top |
|
- | 1755 | mov ebx, [registers_x_pos_dd] |
|
- | 1756 | add ebx, ((-2)+(registers_x_size+3)) shl 16 +1 |
|
1668 | mcall |
1757 | mov ecx, [registers_y_size_dd+4] |
- | 1758 | add ecx, (registers_y_pos-2) shl 16 + (+3+1) |
|
Line 1669... | Line 1759... | ||
1669 | mov ecx, (cmdline_y_pos-2)*10001h |
1759 | mcall ; right |
1670 | mcall |
1760 | mov ebx, [registers_x_pos_dd] |
Line 1671... | Line 1761... | ||
1671 | 1761 | add ebx, (-2) shl 16 + (registers_x_size+3) |
|
1672 | ; registers frame |
1762 | mov ecx, [registers_y_size_dd] |
1673 | DrawRectangle (registers_x_pos-2), (registers_y_pos-2), (registers_x_size+3), (registers_y_size+3), COLOR_LINE |
1763 | add ecx, ((registers_y_pos-2)+(+3)) shl 16 + 1 |
Line 1674... | Line 1764... | ||
1674 | ; draw container rectangle/box for registers information window region |
1764 | mcall ; bottom |
1675 | 1765 | ||
1676 | ; messages |
1766 | ; messages |
- | 1767 | call draw_messages |
|
1677 | call draw_messages |
1768 | |
1678 | 1769 | ; command line & cursor |
|
- | 1770 | call draw_cmdline |
|
1679 | ; command line & cursor |
1771 | call draw_cursor |
1680 | call draw_cmdline |
1772 | |
- | 1773 | ; title & registers & dump & disasm |
|
1681 | call draw_cursor |
1774 | mov ebx, (data_x_pos-2)*10001h |
1682 | 1775 | mov ecx, (title_y_pos+5)*10000h + (-2) |
|
1683 | ; title & registers & dump & disasm |
1776 | add ecx, [messages_y_pos_dd+4] |
Line 1684... | Line 1777... | ||
1684 | mov ebx, (data_x_pos-2)*10001h |
1777 | mov edx, COLOR_LINE |
1685 | mov ecx, (title_y_pos+5)*10000h + (messages_y_pos-2) |
1778 | mcall 38 |
1686 | mov edx, COLOR_LINE |
1779 | mov ebx, [data_x_size_dd+2] |
1687 | mcall 38 |
1780 | add ebx, (data_x_pos+2)*10001h |
1688 | mov ebx, (data_x_pos+data_x_size+2)*10001h |
1781 | mcall |
Line -... | Line 1782... | ||
- | 1782 | mov ebx, [data_x_size_dd+4] |
|
- | 1783 | add ebx, (data_x_pos-2)*10000h + (data_x_pos+2) |
|
1689 | mcall |
1784 | mov ecx, (disasm_y_pos-4)*10001h |
1690 | mov ebx, (data_x_pos-2)*10000h + (data_x_pos+data_x_size+2) |
1785 | mcall |
1691 | mov ecx, (disasm_y_pos-4)*10001h |
1786 | |
Line 1692... | Line 1787... | ||
1692 | mcall |
1787 | ; redraw whole window again |