Subversion Repositories Kolibri OS

Rev

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