Subversion Repositories Kolibri OS

Rev

Rev 3774 | Rev 3796 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3774 Rev 3777
Line 9... Line 9...
9
;;  KolibriOS 16-bit loader,                                    ;;
9
;;  KolibriOS 16-bit loader,                                    ;;
10
;;                        based on bootcode for MenuetOS        ;;
10
;;                        based on bootcode for MenuetOS        ;;
11
;;                                                              ;;
11
;;                                                              ;;
12
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
12
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Line 13... Line 13...
13
 
13
 
Line 14... Line 14...
14
$Revision: 3774 $
14
$Revision: 3777 $
15
 
15
 
16
 
16
 
Line 594... Line 594...
594
; \begin{diamond}[30.11.2005]
594
; \begin{diamond}[30.11.2005]
595
cfgmanager:
595
cfgmanager:
596
; settings:
596
; settings:
597
; a) preboot_graph = graphical mode
597
; a) preboot_graph = graphical mode
598
;    preboot_gprobe = probe this mode?
598
;    preboot_gprobe = probe this mode?
599
; b) preboot_dma  = use DMA access?
599
; b) preboot_biosdisk  = use BIOS disks through V86 emulation? // (earlier was: preboot_dma  = use DMA access?)
600
; c) preboot_vrrm = use VRR?
600
; c) preboot_debug = duplicates kernel debug output to the screen // (earlier was: preboot_vrrm = use VRR?)
-
 
601
;    // VRR is an obsolete functionality, used only with CRT monitors: increase display frequency by reducing screen resolution
-
 
602
; d) preboot_launcher = start the first app (right now it's LAUNCHER) after kernel is loaded?
601
; d) preboot_device = from what boot?
603
; e) preboot_device = from where to boot?
Line 602... Line 604...
602
 
604
 
603
; determine default settings
605
; determine default settings
604
if ~ defined extended_primary_loader
606
if ~ defined extended_primary_loader
605
        mov     [.bSettingsChanged], 0
607
        mov     [.bSettingsChanged], 0
Line 630... Line 632...
630
end if
632
end if
631
.preboot_device_inited:
633
.preboot_device_inited:
632
; following 4 lines set variables to 1 if its current value is 0
634
; following 4 lines set variables to 1 if its current value is 0
633
        cmp     byte [di+preboot_dma-preboot_device], 1
635
        cmp     byte [di+preboot_dma-preboot_device], 1
634
        adc     byte [di+preboot_dma-preboot_device], 0
636
        adc     byte [di+preboot_dma-preboot_device], 0
-
 
637
        cmp     byte [di+preboot_launcher-preboot_device], 1        ; Start LAUNCHER by default
-
 
638
        adc     byte [di+preboot_launcher-preboot_device], 0        
635
;        cmp     byte [di+preboot_biosdisk-preboot_device], 1
639
;        cmp     byte [di+preboot_biosdisk-preboot_device], 1
636
;        adc     byte [di+preboot_biosdisk-preboot_device], 0
640
;        adc     byte [di+preboot_biosdisk-preboot_device], 0
637
;; default value for VRR is OFF
641
;; default value for VRR is OFF
638
;        cmp     byte [di+preboot_vrrm-preboot_device], 0
642
;        cmp     byte [di+preboot_vrrm-preboot_device], 0
639
;        jnz    @f
643
;        jnz    @f
Line 667... Line 671...
667
        cmp     [preboot_biosdisk], 1
671
        cmp     [preboot_biosdisk], 1
668
        call    .say_on_off
672
        call    .say_on_off
669
;        mov     si, vrrm_msg
673
;        mov     si, vrrm_msg
670
;        cmp     [preboot_vrrm], 1
674
;        cmp     [preboot_vrrm], 1
671
;        call    .say_on_off
675
;        call    .say_on_off
-
 
676
        mov     si, debug_mode_msg
-
 
677
        cmp     [preboot_debug], 1
-
 
678
        call    .say_on_off
-
 
679
        mov     si, launcher_msg
-
 
680
        cmp     [preboot_launcher], 1
-
 
681
        call    .say_on_off
672
        mov     si, preboot_device_msg
682
        mov     si, preboot_device_msg
673
        call    print
683
        call    print
674
        mov     al, [preboot_device]
684
        mov     al, [preboot_device]
675
if defined extended_primary_loader
685
if defined extended_primary_loader
676
        and     eax, 3
686
        and     eax, 3
Line 750... Line 760...
750
        pop     ax
760
        pop     ax
751
; switch on key
761
; switch on key
752
        cmp     al, 13
762
        cmp     al, 13
753
        jz      .continue
763
        jz      .continue
754
        or      al, 20h
764
        or      al, 20h
755
        cmp     al, 'a'
765
        cmp     al, 'a'         ; select graphical mode
756
        jz      .change_a
766
        jz      .change_a
757
        cmp     al, 'q'         ; Trick to make 'A' key on azerty keyboard work
767
        cmp     al, 'q'         ; Trick to make 'A' key on azerty keyboard work
758
        je      .change_a
768
        je      .change_a
759
        cmp     al, 'b'
769
        cmp     al, 'b'         ; use BIOS disks? // (selecting YES will make BIOS disks visible as /bd)
760
        jz      .change_b
770
        jz      .change_b
-
 
771
        cmp     al, 'c'         ; load kernel in debug mode?  // (earlier was: use VRR?)
761
;        cmp     al, 'c'
772
        jz      .change_c
-
 
773
        cmp     al, 'd'         ; start launcher after kernel is loaded?
762
;        jz      .change_c
774
        jz      .change_d
763
        cmp     al, 'c'         ; 'd'
775
        cmp     al, 'e'         ; select boot origin
764
        jnz     .show_remarks
776
        jnz     .show_remarks
-
 
777
; e) preboot_device = from where to boot?
765
        _setcursor 15,0
778
        _setcursor 16,0
766
        mov     si, bdev
779
        mov     si, bdev
767
        call    print
780
        call    print
768
if defined extended_primary_loader
781
if defined extended_primary_loader
769
        mov     bx, '12'
782
        mov     bx, '12'
770
else
783
else
771
        mov     bx, '14'
784
        mov     bx, '14'
772
end if
785
end if
773
        call    getkey
786
        call    getkey
774
        mov     [preboot_device], al
787
        mov     [preboot_device], al
775
        _setcursor 13,0
788
        _setcursor 14,0
776
.d:
789
.d:
777
if ~ defined extended_primary_loader
790
if ~ defined extended_primary_loader
778
        mov     [.bSettingsChanged], 1
791
        mov     [.bSettingsChanged], 1
779
end if
792
end if
780
        call    clear_vmodes_table             ;clear vmodes_table
793
        call    clear_vmodes_table             ;clear vmodes_table
Line 856... Line 869...
856
        pop     word [number_vm]
869
        pop     word [number_vm]
857
        mov     word [preboot_graph], bp          ;save choose
870
        mov     word [preboot_graph], bp          ;save choose
Line 858... Line 871...
858
        
871
        
Line 859... Line 872...
859
        jmp     .d
872
        jmp     .d
860
 
873
 
861
.change_b:
874
.change_b:                      ; b) preboot_biosdisk  = use BIOS disks through V86 emulation?
862
        _setcursor 15,0
875
        _setcursor 16,0
863
;        mov     si, ask_dma
876
;        mov     si, ask_dma    // (earlier was: preboot_dma  = use DMA access?)
864
;        call    print
877
;        call    print
865
;        mov     bx, '13'
878
;        mov     bx, '13'
866
;        call    getkey
879
;        call    getkey
Line 870... Line 883...
870
        mov     bx, '12'
883
        mov     bx, '12'
871
        call    getkey
884
        call    getkey
872
        mov     [preboot_biosdisk], al
885
        mov     [preboot_biosdisk], al
873
        _setcursor 11,0
886
        _setcursor 11,0
874
        jmp     .d
887
        jmp     .d
875
;.change_c:
888
;.change_c:                     ; //  VRR is an obsolete functionality, used only with CRT monitors
876
;        _setcursor 15,0
889
;        _setcursor 16,0
877
;        mov     si, vrrmprint
890
;        mov     si, vrrmprint
878
;        call    print
891
;        call    print
879
;        mov     bx, '12'
892
;        mov     bx, '12'
880
;        call    getkey
893
;        call    getkey
881
;        mov     [preboot_vrrm], al
894
;        mov     [preboot_vrrm], al
882
;        _setcursor 12,0
895
;        _setcursor 12,0
883
;        jmp     .d
896
;        jmp     .d
-
 
897
.change_c:                     ; c) preboot_debug = duplicates kernel debug output to the screen
-
 
898
        _setcursor 16,0
-
 
899
        mov     si, ask_debug
-
 
900
        call    print
-
 
901
        mov     bx, '12'
-
 
902
        call    getkey
-
 
903
        mov     [preboot_debug], al
-
 
904
        _setcursor 12,0
-
 
905
        jmp     .d
-
 
906
.change_d:                     ; d) preboot_launcher = start the first app (right now it's LAUNCHER) after kernel is loaded?
-
 
907
        _setcursor 16,0
-
 
908
        mov     si, ask_launcher
-
 
909
        call    print
-
 
910
        mov     bx, '12'
-
 
911
        call    getkey
-
 
912
        mov     [preboot_launcher], al
-
 
913
        _setcursor 13,0
-
 
914
        jmp     .d
884
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
915
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
885
.say_on_off:
916
.say_on_off:
886
        pushf
917
        pushf
887
        call    print
918
        call    print
888
        mov     si, on_msg
919
        mov     si, on_msg
Line 986... Line 1017...
986
        call    printplain
1017
        call    printplain
987
        call    printplain
1018
        call    printplain
988
        _setcursor 6,0
1019
        _setcursor 6,0
989
        mov     si, loading_msg
1020
        mov     si, loading_msg
990
        call    print
1021
        call    print
991
        _setcursor 15,0
1022
        _setcursor 16,0
992
if ~ defined extended_primary_loader
1023
if ~ defined extended_primary_loader
993
        cmp     [.bSettingsChanged], 0
1024
        cmp     [.bSettingsChanged], 0
994
        jz      .load
1025
        jz      .load
995
        cmp     [.loader_block], -1
1026
        cmp     [.loader_block], -1
996
        jz      .load
1027
        jz      .load
Line 1028... Line 1059...
1028
.cont:
1059
.cont:
1029
        push    cs
1060
        push    cs
1030
        pop     ds
1061
        pop     ds
1031
        mov     si, space_msg
1062
        mov     si, space_msg
1032
        mov     byte [si+80], 0
1063
        mov     byte [si+80], 0
1033
        _setcursor 15,0
1064
        _setcursor 16,0
1034
        call    printplain
1065
        call    printplain
1035
        _setcursor 15,0
1066
        _setcursor 16,0
1036
.load:
1067
.load:
1037
end if
1068
end if
1038
; \end{diamond}[02.12.2005]
1069
; \end{diamond}[02.12.2005]
Line 1039... Line 1070...
1039
 
1070
 
Line 1051... Line 1082...
1051
        mov     [es:BOOT_DMA], al
1082
        mov     [es:BOOT_DMA], al
Line 1052... Line 1083...
1052
 
1083
 
1053
;; VRR_M USE
1084
;; VRR_M USE
1054
;
1085
;
-
 
1086
;        mov     al,[preboot_vrrm]
-
 
1087
;        mov     [es:BOOT_VRR], al              ;// 0x9030
-
 
1088
 
1055
;        mov     al,[preboot_vrrm]
1089
; Set kernel DEBUG mode - if nonzero, duplicates debug output to the screen.
-
 
1090
        mov     al, [preboot_debug]
-
 
1091
        mov     [es:BOOT_DEBUG_PRINT], al       ;// 0x901E
-
 
1092
 
-
 
1093
; Start the first app (right now it's LAUNCHER) after kernel is loaded?
-
 
1094
        mov     al, [preboot_launcher]
Line 1056... Line 1095...
1056
;        mov     [es:0x9030], al
1095
        mov     [es:BOOT_LAUNCHER_START], al    ;// 0x901D        
Line 1057... Line 1096...
1057
 
1096
 
1058
; BOOT DEVICE
1097
; BOOT DEVICE