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 |