Rev 49 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 49 | Rev 112 | ||
---|---|---|---|
1 | ; |
1 | ; |
2 | ; Call of videomode driver's functions |
2 | ; Call of videomode driver's functions |
3 | ; |
3 | ; |
4 | ; (Add in System function 21 (and/or 26) as a subfunction 13) |
4 | ; (Add in System function 21 (and/or 26) as a subfunction 13) |
5 | ; |
5 | ; |
6 | ; Author: Trans |
6 | ; Author: Trans |
7 | ; Date: 19.07.2003 |
7 | ; Date: 19.07.2003 |
8 | ; |
8 | ; |
9 | ; Include in MeOS kernel and compile with FASM |
9 | ; Include in MeOS kernel and compile with FASM |
10 | ; |
10 | ; |
11 | 11 | ||
12 | uglobal |
12 | uglobal |
13 | old_screen_width dd ? |
13 | old_screen_width dd ? |
14 | old_screen_height dd ? |
14 | old_screen_height dd ? |
15 | endg |
15 | endg |
16 | 16 | ||
17 | cmp eax,13 ; CALL VIDEOMODE DRIVER FUNCTIONS |
17 | cmp eax,13 ; CALL VIDEOMODE DRIVER FUNCTIONS |
18 | jne .no_vmode_drv_access |
18 | jne .no_vmode_drv_access |
19 | pushd [0x0000fe00] [0x0000fe04] |
19 | pushd [0x0000fe00] [0x0000fe04] |
20 | popd [old_screen_height] [old_screen_width] |
20 | popd [old_screen_height] [old_screen_width] |
21 | or eax,-1 ; If driver is absent then eax does not change |
21 | or eax,-1 ; If driver is absent then eax does not change |
22 | call 0x760100 ; Entry point of video driver |
22 | call 0x760100 ; Entry point of video driver |
23 | mov [esp+36],eax |
23 | mov [esp+36],eax |
24 | mov [esp+24],ebx |
24 | mov [esp+24],ebx |
25 | mov [esp+32],ecx |
25 | mov [esp+32],ecx |
26 | ; mov [esp+28],edx |
26 | ; mov [esp+28],edx |
27 | mov eax,[old_screen_width] |
27 | mov eax,[old_screen_width] |
28 | mov ebx,[old_screen_height] |
28 | mov ebx,[old_screen_height] |
29 | sub eax,[0x0000fe00] |
29 | sub eax,[0x0000fe00] |
30 | jnz @f |
30 | jnz @f |
31 | sub ebx,[0x0000fe04] |
31 | sub ebx,[0x0000fe04] |
32 | jz .resolution_wasnt_changed |
32 | jz .resolution_wasnt_changed |
33 | jmp .lp1 |
33 | jmp .lp1 |
34 | @@: sub ebx,[0x0000fe04] |
34 | @@: sub ebx,[0x0000fe04] |
35 | .lp1: sub [screen_workarea.right],eax |
35 | .lp1: sub [screen_workarea.right],eax |
36 | sub [screen_workarea.bottom],ebx |
36 | sub [screen_workarea.bottom],ebx |
37 | 37 | ||
38 | call repos_windows |
38 | call repos_windows |
- | 39 | mov eax, 0 |
|
- | 40 | mov ebx, 0 |
|
- | 41 | mov ecx, [0xfe00] |
|
- | 42 | mov edx, [0xfe04] |
|
39 | call calculatescreen |
43 | call calculatescreen |
40 | 44 | ||
41 | .resolution_wasnt_changed: |
45 | .resolution_wasnt_changed: |
42 | ret |
46 | ret |
43 | .no_vmode_drv_access: |
47 | .no_vmode_drv_access: |