Subversion Repositories Kolibri OS

Rev

Rev 129 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 129 Rev 384
Line 40... Line 40...
40
 
40
 
Line 41... Line 41...
41
B_HOST fix HOST_BENDIAN ; HOST_LENDIAN
41
B_HOST fix HOST_BENDIAN ; HOST_LENDIAN
Line 42... Line 42...
42
 
42
 
Line 43... Line 43...
43
;-----------------------------------------------------------------------------
43
;-----------------------------------------------------------------------------
Line 44... Line 44...
44
 
44
 
45
        org    0x760000
45
	org    0x760000
46
 
46
 
47
headerstart=$
47
headerstart=$
48
 
48
 
49
mdid    db     'MDAZ'              ; 4 byte id
49
mdid	db     'MDAZ'		   ; 4 byte id
Line 50... Line 50...
50
mdhver  dd     0x00                ; header version
50
mdhver	dd     0x00		   ; header version
51
mdcode  dd     MDSTART             ; start of code
51
mdcode	dd     MDSTART		   ; start of code
Line 52... Line 52...
52
mdver   dd     0x00000001          ; driver version (subversion*65536+version)
52
mdver	dd     0x00000001	   ; driver version (subversion*65536+version)
53
mdname  db     'Trans VideoDriver' ; 32 bytes of full driver name
53
mdname	db     'Trans VideoDriver' ; 32 bytes of full driver name
54
    times (32-($-mdname)) db ' '   ;
54
    times (32-($-mdname)) db ' '   ;
55
 
55
 
Line 111... Line 111...
111
      inc [mdrvm]
111
      inc [mdrvm]
112
.vmii_00:
112
.vmii_00:
113
      pop ecx
113
      pop ecx
114
      call vm_transfer_drv_info
114
      call vm_transfer_drv_info
115
      mov ebx,dword [refrate]
115
      mov ebx,dword [refrate]
116
      mov eax,dword [mdid]      ;dword [systlb]
116
      mov eax,dword [mdid]	;dword [systlb]
117
      retn
117
      retn
118
endf
118
endf
Line 119... Line 119...
119
 
119
 
120
; EBX=2 (in applications ECX=2)- Get Current Video Mode
120
; EBX=2 (in applications ECX=2)- Get Current Video Mode
Line 231... Line 231...
231
;
231
;
232
; Searching i40 system functions pointer table in kernel area location
232
; Searching i40 system functions pointer table in kernel area location
233
;
233
;
234
func vm_search_sys_func_table
234
func vm_search_sys_func_table
235
begin
235
begin
236
      push eax     ; eax - current value
236
      push eax	   ; eax - current value
237
      push ecx     ; ecx - will be counter of equevalent value
237
      push ecx	   ; ecx - will be counter of equevalent value
238
      push edx     ; edx - last value
238
      push edx	   ; edx - last value
239
      push esi     ; esi - current address
239
      push esi	   ; esi - current address
240
      xor ecx,ecx
240
      xor ecx,ecx
241
      mov esi,010000h            ; Start address of kernel location
241
      mov esi,010000h		 ; Start address of kernel location
242
      lodsd
242
      lodsd
243
      mov edx,eax
243
      mov edx,eax
244
      cld
244
      cld
245
.vmssft_00:
245
.vmssft_00:
246
      cmp esi,30000h
246
      cmp esi,30000h
Line 326... Line 326...
326
      retn
326
      retn
327
endf
327
endf
Line 328... Line 328...
328
 
328
 
329
func vm_calc_pixelclock
329
func vm_calc_pixelclock
330
begin
330
begin
331
        push ebx
331
	push ebx
332
        push edx
332
	push edx
333
        xor eax,eax
333
	xor eax,eax
334
        mov al,[_00]
334
	mov al,[_00]
335
        add ax,5
335
	add ax,5
336
        shl eax,3
336
	shl eax,3
337
        xor ebx,ebx
337
	xor ebx,ebx
338
        mov bl,[_06]
338
	mov bl,[_06]
339
        mov bh,[_07]
339
	mov bh,[_07]
340
        and bh,00100001b
340
	and bh,00100001b
341
        btr bx,13
341
	btr bx,13
342
        jnc .vmcpc_00
342
	jnc .vmcpc_00
343
        or bh,2
343
	or bh,2
344
.vmcpc_00:
344
.vmcpc_00:
345
        xor edx,edx
345
	xor edx,edx
346
        mul ebx
346
	mul ebx
347
        xor edx,edx
347
	xor edx,edx
348
        mul [initrr]
348
	mul [initrr]
349
        mov [pclock],eax
349
	mov [pclock],eax
350
        pop edx
350
	pop edx
351
        pop ebx
351
	pop ebx
352
        retn
352
	retn
Line 353... Line 353...
353
endf
353
endf
354
 
354
 
355
;
355
;
Line 366... Line 366...
366
    mov al,11h
366
    mov al,11h
367
    out dx,al
367
    out dx,al
368
    inc dx
368
    inc dx
369
    in al,dx
369
    in al,dx
370
    and al,7fh
370
    and al,7fh
371
    out dx,al    ; Clear protection bit
371
    out dx,al	 ; Clear protection bit
372
    dec dx
372
    dec dx
373
    xor ecx,ecx
373
    xor ecx,ecx
374
    mov cl,19h
374
    mov cl,19h
375
    xor bl,bl
375
    xor bl,bl
376
    mov edi,CRTCreg
376
    mov edi,CRTCreg
Line 420... Line 420...
420
    mov dx,3d4h  ; CRTC
420
    mov dx,3d4h  ; CRTC
421
    mov al,11h
421
    mov al,11h
422
    out dx,al
422
    out dx,al
423
    inc dx
423
    inc dx
424
    in al,dx
424
    in al,dx
425
    and al,7fh  ; Clear Protection bit
425
    and al,7fh	; Clear Protection bit
426
    out dx,al
426
    out dx,al
427
    dec dx
427
    dec dx
428
    xor ecx,ecx
428
    xor ecx,ecx
429
    mov cl,19h
429
    mov cl,19h
430
    mov esi,CRTCreg
430
    mov esi,CRTCreg
Line 447... Line 447...
447
 
447
 
448
; Calculate of possible vertical refrash rate
448
; Calculate of possible vertical refrash rate
449
;  (light version of function)
449
;  (light version of function)
450
func vm_calc_refrate
450
func vm_calc_refrate
451
begin
451
begin
452
        push ebx
452
	push ebx
453
        push ecx
453
	push ecx
454
        push edx
454
	push edx
455
        push edi
455
	push edi
456
        push esi
456
	push esi
457
        mov eax,[pclock]
457
	mov eax,[pclock]
458
        xor edx,edx
458
	xor edx,edx
459
        mov edi,_m1
459
	mov edi,_m1
460
        mov ebx,eax
460
	mov ebx,eax
461
        mov ecx,(1696*1065)
461
	mov ecx,(1696*1065)
462
        div ecx
462
	div ecx
463
        xor edx,edx
463
	xor edx,edx
464
        stosw
464
	stosw
465
        add edi,8
465
	add edi,8
466
        mov eax,ebx
466
	mov eax,ebx
467
        mov ecx,(1344*804)
467
	mov ecx,(1344*804)
468
        div ecx
468
	div ecx
469
        xor edx,edx
469
	xor edx,edx
470
        stosw
470
	stosw
471
        add edi,8
471
	add edi,8
472
        mov eax,ebx
472
	mov eax,ebx
473
        mov ecx,(1056*636)
473
	mov ecx,(1056*636)
474
        div ecx
474
	div ecx
475
        xor edx,edx
475
	xor edx,edx
476
        stosw
476
	stosw
477
        add edi,8
477
	add edi,8
478
        mov eax,ebx
478
	mov eax,ebx
479
        mov ecx,(800*524)
479
	mov ecx,(800*524)
480
        div ecx
480
	div ecx
481
        xor edx,edx
481
	xor edx,edx
482
        stosw
482
	stosw
483
        mov edi,_m1
483
	mov edi,_m1
484
        mov esi,edi
484
	mov esi,edi
485
        mov ecx,5*4
485
	mov ecx,5*4
486
.vmcrr_00:
486
.vmcrr_00:
487
        lodsw
487
	lodsw
488
        cmp ax,55
488
	cmp ax,55
489
        jb .vmcrr_01
489
	jb .vmcrr_01
490
        stosw
490
	stosw
491
        loop .vmcrr_00
491
	loop .vmcrr_00
492
        pop esi
492
	pop esi
493
        pop edi
493
	pop edi
494
        pop edx
494
	pop edx
495
        pop ecx
495
	pop ecx
496
        pop ebx
496
	pop ebx
497
        retn
497
	retn
498
.vmcrr_01:
498
.vmcrr_01:
499
        xor ax,ax
499
	xor ax,ax
500
        stosw
500
	stosw
501
        loop .vmcrr_00
501
	loop .vmcrr_00
502
        pop esi
502
	pop esi
503
        pop edi
503
	pop edi
504
        pop edx
504
	pop edx
505
        pop ecx
505
	pop ecx
506
        pop ebx
506
	pop ebx
507
        retn
507
	retn
Line 508... Line 508...
508
endf
508
endf
509
 
509
 
510
func vm_get_initial_videomode
510
func vm_get_initial_videomode
Line 530... Line 530...
530
    mov dx,3d4h  ; CRTC
530
    mov dx,3d4h  ; CRTC
531
    mov al,11h
531
    mov al,11h
532
    out dx,al
532
    out dx,al
533
    inc dx
533
    inc dx
534
    in al,dx
534
    in al,dx
535
    and al,7fh  ; Clear Protection bit
535
    and al,7fh	; Clear Protection bit
536
    out dx,al
536
    out dx,al
537
    dec dx
537
    dec dx
538
    xor al,al
538
    xor al,al
539
    out dx,al
539
    out dx,al
540
    inc dx
540
    inc dx
Line 556... Line 556...
556
;
556
;
557
; IN: ecx (in app. edx) - pointer to 512-bytes info area in application
557
; IN: ecx (in app. edx) - pointer to 512-bytes info area in application
558
; OUT:
558
; OUT:
559
func vm_transfer_drv_info
559
func vm_transfer_drv_info
560
begin
560
begin
561
        push ecx
561
	push ecx
562
        push edi
562
	push edi
563
        push esi
563
	push esi
564
        mov eax,ecx
564
	mov eax,ecx
565
        xor ecx,ecx
565
	xor ecx,ecx
566
        mov cl,32/4
566
	mov cl,32/4
567
        mov esi,mdname
567
	mov esi,mdname
568
        mov edi,drvname
568
	mov edi,drvname
569
        rep movsd
569
	rep movsd
570
        mov ecx,eax
570
	mov ecx,eax
571
        mov eax,[mdver]
571
	mov eax,[mdver]
572
        mov [drvver],eax
572
	mov [drvver],eax
573
        mov edi,[3010h]
573
	mov edi,[3010h]
574
        mov edi,[edi+10h]
574
	mov edi,[edi+10h]
575
        add edi,ecx
575
	add edi,ecx
576
        mov esi,drvinfo
576
	mov esi,drvinfo
577
        xor ecx,ecx
577
	xor ecx,ecx
578
        mov cx,512
578
	mov cx,512
579
        rep movsb
579
	rep movsb
580
        pop esi
580
	pop esi
581
        pop edi
581
	pop edi
582
        pop ecx
582
	pop ecx
583
        retn
583
	retn
584
endf
584
endf
Line 585... Line 585...
585
 
585
 
586
;
586
;
587
; Set selected video mode
587
; Set selected video mode
Line 673... Line 673...
673
;------------DATA AREA---------------
673
;------------DATA AREA---------------
Line 674... Line 674...
674
 
674
 
Line 675... Line 675...
675
align 4
675
align 4
676
 
676
 
677
mdvm_func_table:
677
mdvm_func_table:
678
        dd MDSTART
678
	dd MDSTART
679
        dd vm_info_init,          vm_get_cur_mode
679
	dd vm_info_init,	  vm_get_cur_mode
Line 680... Line 680...
680
        dd vm_set_video_mode,     vm_restore_init_video_mode
680
	dd vm_set_video_mode,	  vm_restore_init_video_mode
Line 681... Line 681...
681
        dd vm_change_screen_size ;vm_change_position_screen
681
	dd vm_change_screen_size ;vm_change_position_screen
682
 
682
 
683
;-[ mike.dld ]- begin ---------------
683
;-[ mike.dld ]- begin ---------------
Line 684... Line 684...
684
 
684
 
Line 685... Line 685...
685
        dd vm_mike_init
685
	dd vm_mike_init
686
;       dd vm_mike_cursor_pos
686
;       dd vm_mike_cursor_pos
Line 728... Line 728...
728
 
728
 
729
;-[ mike.dld ]- begin ---------------
729
;-[ mike.dld ]- begin ---------------
730
;oldX      dd ?
730
;oldX      dd ?
731
;oldY      dd ?
731
;oldY      dd ?
732
;initvm    dd ?
732
;initvm    dd ?
733
currvm     dd 0
733
currvm	   dd 0
734
refrate    dd 0
734
refrate    dd 0
735
initrr     dd 0
735
initrr	   dd 0
736
systlb     dd 0
736
systlb	   dd 0
737
;pclock    dd ?
737
;pclock    dd ?
738
mdrvm      dd 0 ; 0 - not drv init yet, 1 - already drv init
738
mdrvm	   dd 0 ; 0 - not drv init yet, 1 - already drv init
Line 739... Line 739...
739
;-[ mike.dld ]- end -----------------
739
;-[ mike.dld ]- end -----------------
740
 
740
 
741
 
741
 
742
drvinfo:
742
drvinfo:
743
drvname:   times 32 db ' '
743
drvname:   times 32 db ' '
744
drvver     dd 0
744
drvver	   dd 0
745
           times (32-($-drvver))/4 dd 0
745
	   times (32-($-drvver))/4 dd 0
746
drvmode    dw 011Bh,0118h,0115h,0112h
746
drvmode    dw 011Bh,0118h,0115h,0112h
747
           times (64-($-drvmode))/2 dw 00h
747
	   times (64-($-drvmode))/2 dw 00h
748
_m1        dw 0,0,0,0,0
748
_m1	   dw 0,0,0,0,0
749
_m2        dw 0,0,0,0,0
749
_m2	   dw 0,0,0,0,0
750
_m3        dw 0,0,0,0,0
750
_m3	   dw 0,0,0,0,0
751
_m4        dw 0,0,0,0,0
751
_m4	   dw 0,0,0,0,0
Line 752... Line 752...
752
_m5        dw 0,0,0,0,0
752
_m5	   dw 0,0,0,0,0
Line 753... Line 753...
753
           times (512-($-drvinfo)) db 0
753
	   times (512-($-drvinfo)) db 0
Line 763... Line 763...
763
DRVM_END:
763
DRVM_END:
Line 764... Line 764...
764
 
764
 
Line 765... Line 765...
765
align 4
765
align 4
766
 
766
 
767
;-[ mike.dld ]- begin ---------------
767
;-[ mike.dld ]- begin ---------------
768
oldX       dd ?
768
oldX	   dd ?
769
oldY       dd ?
769
oldY	   dd ?
770
initvm     dd ?
770
initvm	   dd ?
Line 771... Line 771...
771
pclock     dd ?
771
pclock	   dd ?
772
;-[ mike.dld ]- end -----------------
772
;-[ mike.dld ]- end -----------------
773
 
773
 
Line 799... Line 799...
799
_18  db ?
799
_18  db ?
800
_19  db ?
800
_19  db ?
Line 801... Line 801...
801
 
801
 
Line 802... Line -...
802
;-[ mike.dld ]- begin ---------------
-
 
803
 
-
 
804
align 4
-
 
805
 x_res  fix 0x0000FE00 ;  dd ?
-
 
806
 y_res  fix 0x0000FE04 ;  dd ?
802
;-[ mike.dld ]- begin ---------------
807
 
803
 
808
 cnt      dd ?
804
 cnt	  dd ?
809
align 16
805
align 16
810
 tr       RECT
806
 tr	  RECT
Line 811... Line 807...
811
 rct      RECT
807
 rct	  RECT
812
;rb       40*sizeof.RECT
808
;rb       40*sizeof.RECT