/kernel/branches/kolibri_pe/blkdev/cd_drv.inc |
---|
14,7 → 14,7 |
; Àâòîð ÷àñòè èñõîäíîãî òåêñòà Êóëàêîâ Âëàäèìèð Ãåííàäüåâè÷ |
; Àäàïòàöèÿ, äîðàáîòêà è ðàçðàáîòêà Mario79 |
; Ìàêñèìàëüíîå êîëè÷åñòâî ïîâòîðåíèé îïåðàöèè ÷òåíèÿ |
; Ìàêñèìàëüíîå êîëè÷åñòâî ïîâòîðåíèé îïåðàöèè ÷òåíè |
MaxRetr equ 10 |
; Ïðåäåëüíîå âðåìÿ îæèäàíèÿ ãîòîâíîñòè ê ïðèåìó êîìàíäû |
; (â òèêàõ) |
38,7 → 38,7 |
mov [CDBlockSize],2048 ;2352 |
; Î÷èñòèòü áóôåð ïàêåòíîé êîìàíäû |
call clear_packet_buffer |
; Ñôîðìèðîâàòü ïàêåòíóþ êîìàíäó äëÿ ñ÷èòûâàíèÿ |
; Ñôîðìèðîâàòü ïàêåòíóþ êîìàíäó äëÿ ñ÷èòûâàíè |
; ñåêòîðà äàííûõ |
; Çàäàòü êîä êîìàíäû Read CD |
mov [PacketCommand],byte 0x28 ;0xBE |
168,7 → 168,6 |
; Îáëàñòü ïàìÿòè äëÿ ôîðìèðîâàíèÿ ïàêåòíîé êîìàíäû |
PacketCommand: rb 12 ;DB 12 DUP (?) |
; Îáëàñòü ïàìÿòè äëÿ ïðèåìà äàííûõ îò äèñêîâîäà |
;CDDataBuf DB 4096 DUP (0) |
; Ðàçìåð ïðèíèìàåìîãî áëîêà äàííûõ â áàéòàõ |
CDBlockSize DW ? |
; Àäðåñ ñ÷èòûâàåìîãî ñåêòîðà äàííûõ |
177,7 → 176,7 |
TickCounter_1 DD 0 |
; Âðåìÿ íà÷àëà îæèäàíèÿ ãîòîâíîñòè óñòðîéñòâà |
WURStartTime DD 0 |
; óêàçàòåëü áóôåðà äëÿ ñ÷èòûâàíèÿ |
; óêàçàòåëü áóôåðà äëÿ ñ÷èòûâàíè |
CDDataBuf_pointer dd 0 |
;**************************************************** |
342,7 → 341,7 |
add DX,7 ;ïîðò 1õ7h |
@@WaitDevice0_1: |
call change_task |
; Ïðîâåðèòü âðåìÿ îæèäàíèÿ |
; Ïðîâåðèòü âðåìÿ îæèäàíè |
mov EAX,[timer_ticks] |
sub EAX,[TickCounter_1] |
cmp EAX,BSYWaitTime |
464,12 → 463,12 |
jmp .test |
@@: |
call change_task |
; Ïðîâåðèòü âðåìÿ îæèäàíèÿ |
; Ïðîâåðèòü âðåìÿ îæèäàíè |
mov eax,[timer_ticks] |
sub eax,[TickCounter_1] |
cmp eax,BSYWaitTime ;300 ;îæèäàòü 3 ñåê. |
ja @@Err1_4 ;îøèáêà òàéì-àóòà |
; Ïðî÷èòàòü ðåãèñòð ñîñòîÿíèÿ |
; Ïðî÷èòàòü ðåãèñòð ñîñòîÿíè |
.test: |
in AL,DX |
; Ïðîâåðèòü ñîñòîÿíèå ñèãíàëà BSY |
645,7 → 644,7 |
; Ñôîðìèðîâàòü êîìàíäó START/STOP UNIT |
; Çàäàòü êîä êîìàíäû |
mov [PacketCommand],word 1Bh |
; Çàäàòü îïåðàöèþ çàãðóçêè íîñèòåëÿ |
; Çàäàòü îïåðàöèþ çàãðóçêè íîñèòåë |
mov [PacketCommand+4],word 00000011b |
; Ïîäàòü êîìàíäó |
call SendPacketNoDatCommand |
666,7 → 665,7 |
; Ñôîðìèðîâàòü êîìàíäó START/STOP UNIT |
; Çàäàòü êîä êîìàíäû |
mov [PacketCommand],word 1Bh |
; Çàäàòü îïåðàöèþ èçâëå÷åíèÿ íîñèòåëÿ |
; Çàäàòü îïåðàöèþ èçâëå÷åíèÿ íîñèòåë |
mov [PacketCommand+4],word 00000010b |
; Ïîäàòü êîìàíäó |
call SendPacketNoDatCommand |
/kernel/branches/kolibri_pe/blkdev/hd_drv.inc |
---|
478,10 → 478,10 |
ret |
iglobal |
align 4 |
align 8 |
; note that IDE descriptor table must be 4-byte aligned and do not cross 4K boundary |
IDE_descriptor_table: |
dd IDE_DMA |
dd IDE_DMA+(0x100000000-OS_BASE) |
dw 0x2000 |
dw 0x8000 |
579,7 → 579,7 |
mov eax, [esp+4] |
sub eax, [dma_cur_sector] |
shl eax, 9 |
add eax, (OS_BASE+IDE_DMA) |
add eax, IDE_DMA |
push ecx esi edi |
mov esi, eax |
shl edi, 9 |
598,7 → 598,7 |
ret |
.notread: |
mov eax, IDE_descriptor_table |
mov dword [eax], IDE_DMA |
mov dword [eax], IDE_DMA+(0x100000000-OS_BASE) |
mov word [eax+4], 0x2000 |
sub eax, OS_BASE |
mov dx, [IDEContrRegsBaseAddr] |
694,8 → 694,8 |
shl esi, 9 |
call calculate_cache_2 |
add esi,eax |
mov edi, (OS_BASE+IDE_DMA) |
mov dword [edx], IDE_DMA |
mov edi, IDE_DMA |
mov dword [edx], IDE_DMA+(0x100000000-OS_BASE) |
movzx ecx, [cache_chain_size] |
shl ecx, 9 |
mov word [edx+4], cx |
/kernel/branches/kolibri_pe/const.inc |
---|
208,68 → 208,35 |
OS_BASE equ 0xE0000000 |
IMAGE_BASE equ (OS_BASE+LOAD_BASE) |
window_data equ OS_BASE |
BOOT_VAR equ OS_BASE |
CURRENT_TASK equ (OS_BASE+0x0003000) |
TASK_COUNT equ (OS_BASE+0x0003004) |
TASK_BASE equ (OS_BASE+0x0003010) |
TASK_DATA equ (OS_BASE+0x0003020) |
TASK_EVENT equ (OS_BASE+0x0003020) |
SB16Buffer equ (OS_BASE+0x10000) |
mouseunder equ (OS_BASE+0x0006900) |
CDDataBuf equ (OS_BASE+0x0007000) |
FLOPPY_BUFF equ (OS_BASE+0x0008000) |
ACTIVE_PROC_STACK equ (OS_BASE+0x000A400) ;unused |
TASK_COUNT equ (CURRENT_TASK+0x04) |
TASK_BASE equ (CURRENT_TASK+0x10) |
TASK_DATA equ (CURRENT_TASK+0x20) |
TASK_EVENT equ (CURRENT_TASK+0x20) |
WIN_STACK equ (OS_BASE+0x000C000) |
WIN_POS equ (OS_BASE+0x000C400) |
FDD_BUFF equ (OS_BASE+0x000D000) |
DRIVE_DATA equ (OS_BASE+0x0070000) |
SLOT_BASE equ (OS_BASE+0x0080000) |
VGABasePtr equ (OS_BASE+0x00A0000) |
RAMDISK_FAT equ (OS_BASE+0x0180000) |
FLOPPY_FAT equ (OS_BASE+0x0182000) |
IRQ_SAVE equ (OS_BASE+0x0190000) |
IDE_DMA equ 0x184000 |
stack_data_start equ (OS_BASE+0x01A0000) |
eth_data_start equ (OS_BASE+0x01A0000) |
stack_data equ (OS_BASE+0x01A4000) |
stack_data_end equ (OS_BASE+0x01Bffff) |
resendQ equ (OS_BASE+0x01C0000) |
BgrAuxTable equ (OS_BASE+0x0198000) |
; unused? |
SB16Buffer equ (OS_BASE+0x01A0000) |
SB16_Status equ (OS_BASE+0x01B0000) |
BUTTON_INFO equ (OS_BASE+0x01C0000) |
RESERVED_PORTS equ (OS_BASE+0x01D0000) |
IRQ_SAVE equ (OS_BASE+0x01E0000) |
BOOT_VAR equ (OS_BASE+0x01f0000) |
stack_data_start equ (OS_BASE+0x0200000) |
eth_data_start equ (OS_BASE+0x0200000) |
stack_data equ (OS_BASE+0x0204000) |
stack_data_end equ (OS_BASE+0x021ffff) |
resendQ equ (OS_BASE+0x0220000) |
VMODE_BASE equ (OS_BASE+0x0228000) |
skin_data equ (OS_BASE+0x0230000) |
draw_data equ (OS_BASE+0x0238000); |
BgrDrawMode equ (OS_BASE+0x023BFF4) |
BgrDataWidth equ (OS_BASE+0x023BFF8) |
BgrDataHeight equ (OS_BASE+0x023BFFC) |
virtual at (OS_BASE+0x023CF80) |
virtual at (OS_BASE+0x01C8F80) |
tss TSS |
end virtual |
LAST_PAGE equ 0x0240000 |
LAST_PAGE equ 0x01CB000 |
;sys_pgmap equ (OS_BASE+LAST_PAGE) |
twdw equ (CURRENT_TASK-window_data) |
twdw equ 0x3000 ;(CURRENT_TASK-window_data) |
std_application_base_address equ new_app_base |
RING0_STACK_SIZE equ (0x2000 - 512) ;512 áàéò äëÿ êîíòåêñòà FPU |
REG_SS equ (RING0_STACK_SIZE-4) |
303,6 → 270,8 |
PG_LARGE equ 0x080 |
PG_GLOBAL equ 0x100 |
PG_SHARED equ 0x200 |
;;;;;;;;;;;boot time variables |
;BOOT_BPP equ 0x9000 ;byte bits per pixel |
487,14 → 456,6 |
.pg_mutex dd ? |
} |
;struc LIB |
;{ .lib_name rb 16 |
; .lib_base dd ? |
; .lib_start dd ? |
; .export dd ? |
; .import dd ? |
;} |
struc SRV |
{ .srv_name rb 16 ;ASCIIZ string |
.magic dd ? ;+0x10 ;'SRV ' |
/kernel/branches/kolibri_pe/core/dll.c |
---|
454,10 → 454,10 |
thr_stack->ecx = 0; |
thr_stack->eax = 0; |
thr_stack->eip = entry; |
thr_stack->cs = 0x1b; |
thr_stack->cs = sel_app_code; |
thr_stack->eflags = EFL_IOPL3 | EFL_IF; |
thr_stack->pe_sp = 0x7FFFF000 + ((u32_t)ex_stack & 0xFFF); |
thr_stack->pe_ss = 0x23; |
thr_stack->pe_ss = sel_app_data; |
}; |
585,13 → 585,12 |
DBG("import from %s\n",libname); |
exp_dll = find_dll(&core_dll.link, libname); |
if(exp_dll == NULL) |
{ |
exp_dll = find_dll(¤t_slot->dll_list, libname); |
if(exp_dll != NULL) |
if(exp_dll == NULL) |
{ |
DBG("find %s\n", exp_dll->img_name); |
} |
else |
{ |
int len = strlen(libname)+1; |
memcpy(path, "/sys/lib/",9); |
604,6 → 603,8 |
return false; |
}; |
} |
}; |
DBG("find %s\n", exp_dll->img_name); |
exp = exp_dll->img_exp; |
/kernel/branches/kolibri_pe/core/init.asm |
---|
218,26 → 218,9 |
; SAVE & CLEAR 0-0xffff |
cld |
xor esi, esi |
mov edi,BOOT_VAR |
mov ecx,0x10000 / 4 |
rep movsd |
xor edi, edi |
xor eax, eax |
mov ecx,0x10000 / 4 |
rep stosd |
mov edi, 0x40000 |
mov ecx, (0x90000-0x40000)/4 |
rep stosd |
mov dword [_sys_pdbr], eax |
mov dword [_sys_pdbr+4], eax |
xchg bx, bx |
movzx eax,word [BOOT_VAR+0x9008] ; screen mode |
mov [scr_mode],eax |
256,8 → 239,6 |
mov [_current_thread], eax |
xchg bx, bx |
mov ebx, [eax+THR.pdir] |
mov ecx, cr3 |
cmp ebx, ecx |
/kernel/branches/kolibri_pe/core/sys32.inc |
---|
592,26 → 592,25 |
pusha ; save window coordinates for window restoring |
cld |
shl esi,5 |
add esi,window_data |
mov eax,[esi+WDATA.box.left] |
mov eax,[window_data+esi+WDATA.box.left] |
mov [dlx],eax |
add eax,[esi+WDATA.box.width] |
add eax,[window_data+esi+WDATA.box.width] |
mov [dlxe],eax |
mov eax,[esi+WDATA.box.top] |
mov eax,[window_data+esi+WDATA.box.top] |
mov [dly],eax |
add eax,[esi+WDATA.box.height] |
add eax,[window_data+esi+WDATA.box.height] |
mov [dlye],eax |
xor eax, eax |
mov [esi+WDATA.box.left],eax |
mov [esi+WDATA.box.width],eax |
mov [esi+WDATA.box.top],eax |
mov [esi+WDATA.box.height],eax |
mov [esi+WDATA.cl_workarea],eax |
mov [esi+WDATA.cl_titlebar],eax |
mov [esi+WDATA.cl_frames],eax |
mov dword [esi+WDATA.reserved],eax ; clear all flags: wstate, redraw, wdrawn |
lea edi, [esi-window_data+draw_data] |
mov [window_data+esi+WDATA.box.left],eax |
mov [window_data+esi+WDATA.box.width],eax |
mov [window_data+esi+WDATA.box.top],eax |
mov [window_data+esi+WDATA.box.height],eax |
mov [window_data+esi+WDATA.cl_workarea],eax |
mov [window_data+esi+WDATA.cl_titlebar],eax |
mov [window_data+esi+WDATA.cl_frames],eax |
mov dword [window_data+esi+WDATA.reserved],eax ; clear all flags: wstate, redraw, wdrawn |
lea edi, [esi+draw_data] |
mov ecx,32/4 |
rep stosd |
popa |
812,9 → 811,6 |
xor esi, esi |
call redrawscreen |
mov [mouse_background], 0 ; no mouse background |
mov [dont_draw_mouse], 0 ; draw mouse |
mov [application_table_status],0 |
;mov esi,process_terminated |
;call sys_msg_board_str |
/kernel/branches/kolibri_pe/core/taskman.inc |
---|
432,7 → 432,7 |
mov [ecx*8+SLOT_BASE+APPDATA.saved_esp], ebx |
mov [CURRENT_TASK+ecx+TASKDATA.state], 0 |
DEBUGF 1,"%s",new_process_running |
; DEBUGF 1,"%s",new_process_running |
.err: |
mov eax,[process_number] ;set result |
mov [application_table_status], 0 ;unlock application_table_status mutex |
446,7 → 446,6 |
align 4 |
_pe_restart: |
xchg bx, bx |
add esp, 12 |
popad |
iretd |
/kernel/branches/kolibri_pe/core/v86.inc |
---|
94,9 → 94,9 |
pop eax |
; first page - BIOS data (shared between all machines!) |
; physical address = 0x1f0000 |
; linear address = BOOT_VAR = OS_BASE + 0x1f0000 |
mov dword [eax], (BOOT_VAR - OS_BASE) or 111b |
mov dword [eax+800h], BOOT_VAR |
; linear address = 0 |
mov dword [eax], 111b |
mov dword [eax+800h], OS_BASE |
; page before 0xA0000 - Extended BIOS Data Area (shared between all machines!) |
; physical address = 0x9C000 |
; linear address = 0x8009C000 |
/kernel/branches/kolibri_pe/data32.inc |
---|
282,13 → 282,49 |
align 4096 |
_sys_pdbr rd 1024 |
SLOT_BASE: |
rb 64*1024 |
DRIVE_DATA: |
rb 64*1024 |
RESERVED_PORTS: |
rb 64*1024 |
FLOPPY_BUFF: |
rb 16*1024 |
BUTTON_INFO: |
rb 16*1024 |
BgrAuxTable: |
rb 32*1024 |
skin_data: |
rb 32*1024 |
IDE_DMA: rb 32*1024 |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
window_data: |
rb 8192 |
CURRENT_TASK: |
_current_task: |
rb 8192 |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
draw_data: |
rb 4096 |
CDDataBuf: |
rb 4096 |
cur_saved_data rb 4096 |
fpu_data: rb 512 |
_sys_pdbr rd 1024 |
fpu_data: |
rb 512 |
WIN_STACK: |
rb 0x400 |
WIN_POS: |
rb 0x800 |
idts rq 0x42 |
; device irq owners |
318,6 → 354,9 |
FONT_I rb 2304 ;16*144 |
FONT_II rb 2560 ;16*160 |
RAMDISK_FAT: rb 2856*2 +16 ;16*357 |
FLOPPY_FAT: rb 2856*2 +16 |
_z_core rd 52 |
mem_block_map rb 512 |
357,9 → 396,6 |
srv.fd rd 1 |
srv.bk rd 1 |
scr_width rd 1 |
scr_height rd 1 |
_HwCursorCreate: |
create_cursor rd 1 |
375,12 → 411,16 |
def_cursor rd 1 |
current_cursor rd 1 |
hw_cursor rd 1 |
cur_def_interl rd 1 |
cur_saved_base rd 1 |
cur_saved_interl rd 1 |
cur_saved_w rd 1 |
cur_saved_h rd 1 |
cur.lock rd 1 ;1 - lock update, 2- hide |
cur.left rd 1 ;cursor clip box |
cur.top rd 1 |
cur.right rd 1 |
cur.bottom rd 1 |
cur.w rd 1 |
cur.h rd 1 |
ipc_tmp rd 1 |
ipc_pdir rd 1 |
ipc_ptab rd 1 |
417,6 → 457,9 |
put_pixel rd 1 |
get_pixel rd 1 |
_screen_width rd 1 |
_screen_height rd 1 |
Screen_Max_X rd 1 |
Screen_Max_Y rd 1 |
423,8 → 466,9 |
btn_addr rd 1 |
redraw_background rd 1 |
mouse_background rd 1 |
dont_draw_mouse rd 1 |
BgrDrawMode rd 1 |
BgrDataWidth rd 1 |
BgrDataHeight rd 1 |
MOUSE_VISIBLE rd 1 |
WIN_TEMP_XY rd 1 |
439,9 → 483,6 |
KEY_COUNT rd 1 |
KEY_BUFF rb 128 |
mouse_color_mem rd 1 |
color_temp rd 1 |
btn_down rd 1 |
x_under rd 1 |
y_under rd 1 |
/kernel/branches/kolibri_pe/drivers/sb16/CONFIG.INC |
---|
6,10 → 6,8 |
API_VERSION equ 0 ;debug |
OS_BASE equ 0xE0000000 |
new_app_base equ 0x0 |
PROC_BASE equ (OS_BASE+0x080000) |
SB16Buffer equ (OS_BASE+0x1A0000) |
SB16_Status equ (OS_BASE+0x1B0000) |
;PROC_BASE equ (OS_BASE+0x080000) |
SB16Buffer equ (OS_BASE+0x10000) |
DMAPage equ ((SB16Buffer-OS_BASE) shr 16) |
SB16Buffer0 equ SB16Buffer |
/kernel/branches/kolibri_pe/gui/button.inc |
---|
584,8 → 584,6 |
popad |
call negativebutton |
mov [mouse_background], 0 ; no mouse background |
mov [dont_draw_mouse], 0 ; draw mouse |
;..................................... start 5/5 : modified by vhanla ............................. |
; check coordinates |
iglobal |
/kernel/branches/kolibri_pe/gui/skincode.inc |
---|
10,8 → 10,6 |
include "skindata.inc" |
;skin_data = 0x00778000 |
read_skin_file: |
stdcall load_file, ebx |
test eax, eax |
213,7 → 211,7 |
ret |
sys_putimage_with_check: |
or ebx,ebx |
test ebx,ebx |
jz @f |
call sys_putimage.forced |
@@: ret |
/kernel/branches/kolibri_pe/gui/skindata.inc |
---|
54,6 → 54,8 |
skin_btn_close SKIN_BUTTON |
skin_btn_minimize SKIN_BUTTON |
public _skin_active |
_skin_active: |
skin_active SKIN_DATA |
skin_inactive SKIN_DATA |
/kernel/branches/kolibri_pe/gui/window.inc |
---|
498,7 → 498,7 |
repos_windows: |
mov ecx,[TASK_COUNT] |
mov edi, OS_BASE+0x20*2 |
mov edi, window_data+0x20*2 |
call force_redraw_background |
dec ecx |
jge @f |
616,33 → 616,6 |
ret |
uglobal |
new_window_starting dd 0 |
endg |
sys_window_mouse: |
push eax |
mov eax,[timer_ticks] |
cmp [new_window_starting],eax |
jb swml1 |
mov [mouse_background], 0 ; no mouse background |
mov [dont_draw_mouse], 0 ; draw mouse |
mov [new_window_starting],eax |
swml1: |
pop eax |
ret |
drawwindow_I_caption: |
mov ecx,[edx+WDATA.cl_titlebar] ; grab bar |
1045,8 → 1018,6 |
ret |
waredraw: ; if redraw necessary at activate |
pushad |
1088,8 → 1059,6 |
popad |
call windowactivate |
mov [mouse_background], 0 ; no mouse background |
mov [dont_draw_mouse], 0 ; draw mouse |
ret |
1156,7 → 1125,6 |
add edx, [edi+WDATA.box.height] |
call calculatescreen |
.done: |
mov [mouse_background], 0 ; no mouse under |
.skip_redrawings: |
popfd |
ret |
1167,6 → 1135,8 |
window_moved db 'K : Window - done',13,10,0 |
endg |
bPressedMouseXY_W db 0x0 |
; check window touch |
align 4 |
checkwindows: |
1194,59 → 1164,34 |
popad |
ret |
.mouse_buttons_pressed: |
;..................................... start 2/4 : modified by vhanla ................. |
jmp @f |
bPressedMouseXY_W db 0x0 |
@@: |
;..................................... end 2/4 : modified by vhanla ................... |
mov esi,[TASK_COUNT] |
inc esi |
;..................................... start 3/4 : modified by vhanla ................. |
push eax |
cmp [bPressedMouseXY_W],0 |
jnz @f |
mov [bPressedMouseXY_W],1 |
mov ax,[MOUSE_X] |
mov [mx],ax |
mov ax,[MOUSE_Y] |
mov [my],ax |
@@: |
pop eax |
;..................................... end 3/4 : modified by vhanla ................... |
movzx eax,word [MOUSE_Y] |
movzx ebx,word [MOUSE_X] |
mov ecx, [Screen_Max_X] |
add ebx, [_display_data] |
inc ecx |
mul ecx |
movzx edi, byte [ebx+eax] |
cwloop: |
cmp esi,2 |
jb .exit |
dec esi |
movzx edi, word [WIN_POS + esi * 2] ; ebx |
movzx esi, word [WIN_STACK + edi * 2] |
shl edi, 5 |
add edi, window_data |
; mov edi, ebx |
mov ecx, [edi + WDATA.box.left] |
mov edx, [edi + WDATA.box.top] |
mov eax,ecx |
mov ebx,edx |
test [edi+WDATA.fl_wstate],WSTATE_MINIMIZED |
jnz cwloop |
movzx eax,word [MOUSE_X] |
movzx ebx,word [MOUSE_Y] |
;..................................... start 4/4 : modified by vhanla ................. |
movzx eax, word [mx]; movzx eax,word[mouse_x] |
movzx ebx, word [my]; movzx ebx,word[MOUSE_Y] |
;..................................... endt 4/4 : modified by vhanla .................. |
cmp ecx, eax |
jae cwloop |
cmp edx, ebx |
jae cwloop |
add ecx, [edi + WDATA.box.width] |
add edx, [edi + WDATA.box.height] |
cmp eax, ecx |
jae cwloop |
cmp ebx, edx |
jae cwloop |
pushad |
mov eax, esi |
mov ebx, [TASK_COUNT] |
1371,13 → 1316,10 |
newchm: |
mov [dont_draw_mouse], 1 |
call checkidle |
call checkVga_N13 |
mov [mouse_background], 0 |
call [draw_pointer] |
1480,7 → 1422,6 |
cmp byte [btn_down], 0 |
jne newchm |
; new position done |
mov [dont_draw_mouse], 1 |
mov cl,0 |
test [edi+WDATA.fl_wstate],WSTATE_MAXIMIZED |
jnz @f |
1507,7 → 1448,8 |
test [edi+WDATA.fl_wstate],WSTATE_ROLLEDUP or WSTATE_MAXIMIZED |
jnz @f |
add ecx,2 |
@@: sub edi,window_data |
@@: |
sub edi,window_data |
shr edi,5 |
shl edi,8 |
add edi,SLOT_BASE+APPDATA.saved_box |
1633,9 → 1575,6 |
cmp [reposition],0 |
je retwm |
mov [dont_draw_mouse], 1 ; no mouse |
push eax ebx ecx edx |
mov eax,[edi+WDATA.box.left] |
mov ebx,[edi+WDATA.box.top] |
1662,7 → 1601,6 |
mov ecx,100 ; wait to avoid mouse residuals |
waitre2: |
mov [dont_draw_mouse], 1 |
call checkidle | <