Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
7707 Alex2003 1
2
xmlns:o="urn:schemas-microsoft-com:office:office"
3
xmlns:w="urn:schemas-microsoft-com:office:word"
4
xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"
5
xmlns="http://www.w3.org/TR/REC-html40">
6
 
7
8
9
10
11
12
13
31
32
33
332
418
448
449
 
450
451
 
452
453
 
454

Back

457
style='mso-ansi-language:RU'> to main
458
style='mso-bidi-font-weight:normal'>

459
 
460

 

462
 
463

Function 21

466
and its subfunctions (1,2,5,11,12)

467
 
468

 

471
 
472

474
lang=EN-US style='font-size:14.0pt;font-family:"Arial","sans-serif";mso-ansi-language:
475
EN-US'>Subfunction
476
lang=EN-US style='font-size:14.0pt;font-family:"Arial","sans-serif";mso-ansi-language:
477
EN-US'> 1 - set the base port MPU MIDI

478
 
479

 

482
 
483

Options:

486
 
487

  * eax =

490
21 - function number

491
 
492

  * ebx = 1

495
- number of subfunction

496
 
497

  * ecx =

500
base port number

501
 
502

Return value:

505
 
506

  * eax = 0

509
- successful

510
 
511

  * eax =

514
-1 - wrong port number

515
 
516

Remarks:

519
 
520

523
style='mso-spacerun:yes'> The port number must satisfy the conditions
524
0x100 <= ecx <= 0xFFFF.

525
 
526

 Base installation is

529
necessary for the operation of function 20.

530
 
531

 You can get the installed

534
base port by calling subfunctions 1 
535
class=GramE>functions 26.

536
 
537

 

540
 
541

Constants for registers:

544
 
545

  eax -

548
SF_SYSTEM_SET (21)

549
 
550

  ebx -

553
SSF_MPU_MIDI_BASE (1)

554
 
555

 

558
 
559

561
lang=EN-US style='font-size:14.0pt;font-family:"Arial","sans-serif";mso-ansi-language:
562
EN-US'>Subfunction
563
lang=EN-US style='font-size:14.0pt;font-family:"Arial","sans-serif";mso-ansi-language:
564
EN-US'> 2 - set keyboard layout

565
 
566

 

569
 
570

The keyboard layout is used to convert scancodes

573
coming from the keyboard into ASCII codes readable by function 2.

574
 
575

Options:

578
 
579

  * eax =

582
21 - function number

583
 
584

  * ebx = 2

587
- subfunction number

588
 
589

  * ecx =

592
which layout to install:

593
 
594

    * 1 = normal

597
 
598

    * 2 = layout when Shift is pressed

601
 
602

    * 3 = Layout while pressing Alt

605
 
606

  * edx =

609
pointer to layout - 128 bytes table

610
 
611

Or:

614
 
615

  * ecx = 9

618
 
619

  * dx = country identifier (1 =

622
class=SpellE>eng, 2 = fi, 3 = ger, 4 = 
623
class=SpellE>rus)

624
 
625

Return value:

628
 
629

  * eax = 0

632
- successful

633
 
634

  * eax = 1

637
- the parameter is set incorrectly

638
 
639

Remarks:

642
 
643

  * If Alt is pressed,

646
then the Alt; if Alt is not pressed, but Shift is pressed, then the layout with
647
Shift is used; if Alt and Shift are not pressed, but Ctrl is pressed, then the
648
normal layout is used, after which 0x60 is subtracted from the code; if none of
649
the control keys are pressed, then the normal layout is used.

650
 
651

  * You can get layouts

654
and country identifiers using subfunction 2 of
655
function 26.

656
 
657

  * Country Identifier

660
- a global system variable that is not used by the kernel itself; however, the
661
@taskbar application displays an icon corresponding to the current country.

662
 
663

  * The @taskbar application

666
switches layouts on user request.

667
 
668

 

671
 
672

Constants for registers:

675
 
676

  eax -

679
SF_SYSTEM_SET (21)

680
 
681

  ebx -

684
SSF_KEYBOARD_LAYOUT (2)

685
 
686

 

689
 
690

692
lang=EN-US style='font-size:14.0pt;font-family:"Arial","sans-serif";mso-ansi-language:
693
EN-US'>Subfunction
694
lang=EN-US style='font-size:14.0pt;font-family:"Arial","sans-serif";mso-ansi-language:
695
EN-US'> 5 - set the system language

696
 
697

 

700
 
701

Options:

704
 
705

  * eax =

708
21 - function number

709
 
710

  * ebx = 5

713
- subfunction number

714
 
715

  * ecx = system

718
language (1 = eng, 2 = fi, 3 = ger,
719
4 = rus)

720
 
721

Return value:

724
 
725

  * eax = 0

728
 
729

Remarks:

732
 
733

  The system language

736
is a global system variable that is not used by the kernel itself,
737
however, the @taskbar application draws the corresponding icon.

738
 
739

Checks for correctness are not

742
done, because the kernel does not use this variable.

743
 
744

You can get the system language

747
by calling subfunction 5 of function 26.

748
 
749

 

752
 
753

Constants for registers:

756
 
757

  eax -

760
SF_SYSTEM_SET (21)

761
 
762

  ebx -

765
SSF_SYS_LANG (5)

766
 
767

 

770
 
771

773
lang=EN-US style='font-size:14.0pt;font-family:"Arial","sans-serif";mso-ansi-language:
774
EN-US'>Subfunction
775
lang=EN-US style='font-size:14.0pt;font-family:"Arial","sans-serif";mso-ansi-language:
776
EN-US'> 11 - Allow / block low-level access to HD

777
 
778

 

781
 
782

Options:

785
 
786

  * eax =

789
21 - function number

790
 
791

  * ebx =

794
11 - number of subfunction

795
 
796

  * ecx =

799
0/1 - disable / allow

800
 
801

Return value:

804
 
805

  * eax = 0

808
 
809

Remarks:

812
 
813

 Used in

816
LBA reading (subfunction 8 of function 58).

817
 
818

 The current implementation

821
uses only the low bit ecx.

822
 
823

 You can get the current

826
status by calling subfunction 11 of function 26.

827
 
828

 

831
 
832

Constants for registers:

835
 
836

  eax -

839
SF_SYSTEM_SET (21)

840
 
841

  ebx -

844
SSF_ACCESS_HD_LBA (11)

845
 
846

 

848
 
849

851
lang=EN-US style='font-size:14.0pt;font-family:"Arial","sans-serif";mso-ansi-language:
852
EN-US'>Subfunction
853
lang=EN-US style='font-size:14.0pt;font-family:"Arial","sans-serif";mso-ansi-language:
854
EN-US'> 12 - Allow / block low-level access to PCI
855
style='mso-bidi-font-weight:normal'>

857
 
858

 

861
 
862

Options:

865
 
866

   * eax =

869
21 - function number

870
 
871

   * ebx =

874
12 - subfunction number

875
 
876

   * ecx =

879
0/1 - disable / allow

880
 
881

Return value:

884
 
885

   * eax =

888
0

889
 
890

 

892
 
893

Remarks:

896
 
897

   Used when working

900
with the PCI bus (function 62).

901
 
902

   The current

905
implementation uses only the low bit ecx.

906
 
907

   You can get the

910
current status by calling subfunction 12 of function
911
26.

912
 
913

 

916
 
917

Constants for registers:

920
 
921

   eax -

924
SF_SYSTEM_SET (21)

925
 
926

   ebx

929
style='font-family:"Arial","sans-serif"'> - SSF_ACCESS_PCI (12)

930
 
931

 

934
 
935
936
 
937
938
 
939