forked from KolibriOS/kolibrios
remove sec_loader/trunk/kolibri_ldm: uncompilable copy of some kernel files
git-svn-id: svn://kolibrios.org@3538 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
8119f00711
commit
0a61fc62ad
Binary file not shown.
@ -1,98 +0,0 @@
|
|||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
;; ;;
|
|
||||||
;; Copyright (C) KolibriOS team 2004-2007. All rights reserved. ;;
|
|
||||||
;; Copyright (C) MenuetOS 2000-2004 Ville Mikael Turjanmaa ;;
|
|
||||||
;; Distributed under terms of the GNU General Public License ;;
|
|
||||||
;; ;;
|
|
||||||
;; booteng.asm the module for Secondary Loader ;;
|
|
||||||
;; ;;
|
|
||||||
;; KolibriOS 16-bit loader module, ;;
|
|
||||||
;; based on bootcode for KolibriOS ;;
|
|
||||||
;; ;;
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
|
|
||||||
;======================================================================
|
|
||||||
;
|
|
||||||
; BOOT DATA
|
|
||||||
;
|
|
||||||
;======================================================================
|
|
||||||
|
|
||||||
d80x25_bottom:
|
|
||||||
db 186,' KolibriOS is based on MenuetOS and comes with ABSOLUTELY '
|
|
||||||
db 'NO WARRANTY ',186
|
|
||||||
db 186,' See file COPYING for details '
|
|
||||||
db ' ',186
|
|
||||||
line_full_bottom
|
|
||||||
d80x25_bottom_num = 3
|
|
||||||
|
|
||||||
msg_apm db " APM x.x ", 0
|
|
||||||
vervesa db "Version of Vesa: Vesa x.x",13,10,0
|
|
||||||
novesa db "Display: EGA/CGA",13,10,0
|
|
||||||
s_vesa db "Version of VESA: "
|
|
||||||
.ver db "?.?",13,10,0
|
|
||||||
|
|
||||||
gr_mode db "Select a videomode: ",13,10,0
|
|
||||||
|
|
||||||
vrrmprint db "Apply VRR? (picture frequency greater than 60Hz"
|
|
||||||
db " only for transfers:",13,10
|
|
||||||
db 186," 1024*768->800*600 and 800*600->640*480) [1-yes,2-no]:",0
|
|
||||||
|
|
||||||
|
|
||||||
ask_bd db "Add disks visible by BIOS emulated in V86-mode? [1-yes, 2-no]: ",0
|
|
||||||
|
|
||||||
bdev db "Load ramdisk from [1-floppy; 2-C:\kolibri.img (FAT32);"
|
|
||||||
db 13,10,186," "
|
|
||||||
db "3-use preloaded ram-image from kernel restart;"
|
|
||||||
db 13,10,186," "
|
|
||||||
db "4-create blank image]: ",0
|
|
||||||
probetext db 13,10,13,10,186," Use standart graphics mode? [1-yes, "
|
|
||||||
db "2-probe bios (Vesa 3.0)]: ",0
|
|
||||||
prnotfnd db "Fatal - Videomode not found.",0
|
|
||||||
not386 db "Fatal - CPU 386+ required.",0
|
|
||||||
btns db "Fatal - Can't determine color depth.",0
|
|
||||||
fatalsel db "Fatal - Graphics mode not supported by hardware.",0
|
|
||||||
pres_key db "Press any key to choose a new videomode.",0
|
|
||||||
badsect db 13,10,186," Fatal - Bad sector. Replace floppy.",0
|
|
||||||
memmovefailed db 13,10,186," Fatal - Int 0x15 move failed.",0
|
|
||||||
okt db " ... OK"
|
|
||||||
linef db 13,10,0
|
|
||||||
diskload db "Loading diskette: 00 %",8,8,8,8,0
|
|
||||||
pros db "00"
|
|
||||||
backspace2 db 8,8,0
|
|
||||||
boot_dev db 0 ; 0=floppy, 1=hd
|
|
||||||
start_msg db "Press [abc] to change settings, press [Enter] to continue booting",13,10,0
|
|
||||||
time_msg db " or wait "
|
|
||||||
time_str db " 5 seconds"
|
|
||||||
db " before automatical continuation",13,10,0
|
|
||||||
current_cfg_msg db "Current settings:",13,10,0
|
|
||||||
curvideo_msg db " [a] Videomode: ",0
|
|
||||||
|
|
||||||
mode0 db "320x200, EGA/CGA 256 colors",13,10,0
|
|
||||||
mode9 db "640x480, VGA 16 colors",13,10,0
|
|
||||||
|
|
||||||
usebd_msg db " [b] Add disks visible by BIOS:",0
|
|
||||||
on_msg db " on",13,10,0
|
|
||||||
off_msg db " off",13,10,0
|
|
||||||
;readonly_msg db " only for reading",13,10,0
|
|
||||||
vrrm_msg db " [c] Use VRR:",0
|
|
||||||
preboot_device_msg db " [d] Floppy image: ",0
|
|
||||||
preboot_device_msgs dw 0,pdm1,pdm2,pdm3
|
|
||||||
pdm1 db "real floppy",13,10,0
|
|
||||||
pdm2 db "C:\kolibri.img (FAT32)",13,10,0
|
|
||||||
pdm3 db "use already loaded image",13,10,0
|
|
||||||
pdm4 db "create blank image",13,10,0
|
|
||||||
loading_msg db "Loading KolibriOS...",0
|
|
||||||
save_quest db "Remember current settings? [y/n]: ",0
|
|
||||||
loader_block_error db "Bootloader data invalid, I cannot continue. Stopped.",0
|
|
||||||
|
|
||||||
_st db 186,' ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄ¿',13,10,0
|
|
||||||
_r1 db 186,' ³ 320x200 EGA/CGA 256 colors ³ ³',13,10,0
|
|
||||||
_r2 db 186,' ³ 640x480 VGA 16 colors ³ ³',13,10,0
|
|
||||||
_rs db 186,' ³ ????x????@?? SVGA VESA ³ ³',13,10,0
|
|
||||||
_bt db 186,' ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÙ',13,10,0
|
|
||||||
|
|
||||||
remark1 db "Default values were selected to match most of configurations, but not all.",0
|
|
||||||
remark2 db "If you have LCD-monitor, disable VRR in the item [c] - you do not need it.",0
|
|
||||||
remark3 db "If the system does not boot, try to disable the item [b].",0
|
|
||||||
remarks dw remark1, remark2, remark3
|
|
||||||
num_remarks = 3
|
|
@ -1,119 +0,0 @@
|
|||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
;; ;;
|
|
||||||
;; Copyright (C) KolibriOS team 2004-2007. All rights reserved. ;;
|
|
||||||
;; Copyright (C) MenuetOS 2000-2004 Ville Mikael Turjanmaa ;;
|
|
||||||
;; Distributed under terms of the GNU General Public License ;;
|
|
||||||
;; ;;
|
|
||||||
;; kolibri_ldm.asm the module for Secondary Loader ;;
|
|
||||||
;; ;;
|
|
||||||
;; KolibriOS 16-bit loader module, ;;
|
|
||||||
;; based on bootcode for KolibriOS ;;
|
|
||||||
;; ;;
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
|
|
||||||
;======================================================================
|
|
||||||
;
|
|
||||||
; BOOT DATA
|
|
||||||
;
|
|
||||||
;======================================================================
|
|
||||||
|
|
||||||
|
|
||||||
d80x25_bottom:
|
|
||||||
db 186,' KolibriOS based on MenuetOS and comes with ABSOLUTELY '
|
|
||||||
db 'NO WARRANTY ',186
|
|
||||||
db 186,' See file COPYING for details '
|
|
||||||
db ' ',186
|
|
||||||
line_full_bottom
|
|
||||||
d80x25_bottom_num = 3
|
|
||||||
|
|
||||||
novesa db "Ekraan: EGA/CGA",13,10,0
|
|
||||||
vervesa db "Vesa versioon: Vesa x.x",13,10,0
|
|
||||||
vervesa_off=20
|
|
||||||
msg_apm db " APM x.x ", 0
|
|
||||||
gr_mode db 186," Vesa 2.0+ 16 M LFB: [1] 640x480, [2] 800x600, "
|
|
||||||
db "[3] 1024x768, [4] 1280x1024",13,10
|
|
||||||
db 186," Vesa 1.2 16 M Bnk: [5] 640x480, [6] 800x600, "
|
|
||||||
db "[7] 1024x768, [8] 1280x1024",13,10
|
|
||||||
db 186," EGA/CGA 256 värvi: [9] 320x200, "
|
|
||||||
db "VGA 16 värvi: [0] 640x480",13,10
|
|
||||||
db 186," Vali reziim: ",0
|
|
||||||
bt24 db "Bitti pikseli kohta: 24",13,10,0
|
|
||||||
bt32 db "Bitti pikseli kohta: 32",13,10,0
|
|
||||||
vrrmprint db "Kinnita VRR? (ekraani sagedus suurem kui 60Hz"
|
|
||||||
db " ainult:",13,10
|
|
||||||
db 186," 1024*768->800*600 ja 800*600->640*480) [1-jah,2-ei]:",0
|
|
||||||
;askmouse db " Hiir:"
|
|
||||||
; db " [1] PS/2 (USB), [2] Com1, [3] Com2."
|
|
||||||
; db " Vali port [1-3]: ",0
|
|
||||||
;no_com1 db 13,10,186, " No COM1 mouse",0
|
|
||||||
;no_com2 db 13,10,186, " No COM2 mouse",0
|
|
||||||
;ask_dma db "Use DMA for HDD access? [1-yes, 2-only for reading, 3-no]: ",0
|
|
||||||
ask_bd db "Add disks visible by BIOS emulated in V86-mode? [1-yes, 2-no]: ",0
|
|
||||||
;gr_direct db 186," Use direct LFB writing? "
|
|
||||||
; db "[1-yes/2-no] ? ",0
|
|
||||||
;mem_model db 13,10,186," Motherboard memory [1-16 Mb / 2-32 Mb / "
|
|
||||||
; db "3-64Mb / 4-128 Mb / 5-256 Mb] ? ",0
|
|
||||||
;bootlog db 13,10,186," After bootlog display [1-continue/2-pause] ? ",0
|
|
||||||
bdev db "Paigalda mäluketas [1-diskett; 2-C:\kolibri.img (FAT32);"
|
|
||||||
db 13,10,186," "
|
|
||||||
db "3-kasuta eellaaditud mäluketast kerneli restardist;"
|
|
||||||
db 13,10,186," "
|
|
||||||
db "4-loo tühi pilt]: ",0
|
|
||||||
probetext db 13,10,13,10,186," Kasuta standartset graafika reziimi? [1-jah, "
|
|
||||||
db "2-leia biosist (Vesa 3.0)]: ",0
|
|
||||||
;memokz256 db 13,10,186," RAM 256 Mb",0
|
|
||||||
;memokz128 db 13,10,186," RAM 128 Mb",0
|
|
||||||
;memokz64 db 13,10,186," RAM 64 Mb",0
|
|
||||||
;memokz32 db 13,10,186," RAM 32 Mb",0
|
|
||||||
;memokz16 db 13,10,186," RAM 16 Mb",0
|
|
||||||
prnotfnd db "Fataalne - Videoreziimi ei leitud.",0
|
|
||||||
;modena db "Fataalne - VBE 0x112+ on vajalik.",0
|
|
||||||
not386 db "Fataalne - CPU 386+ on vajalik.",0
|
|
||||||
btns db "Fataalne - Ei suuda värvisügavust määratleda.",0
|
|
||||||
fatalsel db "Fataalne - Graafilist reziimi riistvara ei toeta.",0
|
|
||||||
badsect db 13,10,186," Fataalne - Vigane sektor. Asenda diskett.",0
|
|
||||||
memmovefailed db 13,10,186," Fataalne - Int 0x15 liigutamine ebaõnnestus.",0
|
|
||||||
okt db " ... OK"
|
|
||||||
linef db 13,10,0
|
|
||||||
diskload db "Loen disketti: 00 %",8,8,8,8,0
|
|
||||||
pros db "00"
|
|
||||||
backspace2 db 8,8,0
|
|
||||||
boot_dev db 0 ; 0=floppy, 1=hd
|
|
||||||
start_msg db "Vajuta [abcd] seadete muutmiseks, vajuta [Enter] laadimise jätkamiseks",13,10,0
|
|
||||||
time_msg db " või oota "
|
|
||||||
time_str db " 5 sekundit"
|
|
||||||
db " automaatseks jätkamiseks",13,10,0
|
|
||||||
current_cfg_msg db "Praegused seaded:",13,10,0
|
|
||||||
curvideo_msg db " [a] Videoreziim: ",0
|
|
||||||
mode1 db "640x480",0
|
|
||||||
mode2 db "800x600",0
|
|
||||||
mode3 db "1024x768",0
|
|
||||||
mode4 db "1280x1024",0
|
|
||||||
modes_msg dw mode4,mode1,mode2,mode3
|
|
||||||
modevesa20 db " koos LFB",0
|
|
||||||
modevesa12 db ", VESA 1.2 Bnk",0
|
|
||||||
mode9 db "320x200, EGA/CGA 256 värvi",0
|
|
||||||
mode10 db "640x480, VGA 16 värvi",0
|
|
||||||
probeno_msg db " (standard reziim)",0
|
|
||||||
probeok_msg db " (kontrolli ebastandardseid reziime)",0
|
|
||||||
;dma_msg db " [b] Kasuta DMA'd HDD juurdepääsuks:",0
|
|
||||||
usebd_msg db " [b] Add disks visible by BIOS:",0
|
|
||||||
on_msg db " sees",13,10,0
|
|
||||||
off_msg db " väljas",13,10,0
|
|
||||||
;readonly_msg db " ainult lugemiseks",13,10,0
|
|
||||||
vrrm_msg db " [c] Kasuta VRR:",0
|
|
||||||
preboot_device_msg db " [d] Disketi kujutis: ",0
|
|
||||||
preboot_device_msgs dw 0,pdm1,pdm2,pdm3
|
|
||||||
pdm1 db "reaalne diskett",13,10,0
|
|
||||||
pdm2 db "C:\kolibri.img (FAT32)",13,10,0
|
|
||||||
pdm3 db "kasuta juba laaditud kujutist",13,10,0
|
|
||||||
pdm4 db "loo tühi pilt",13,10,0
|
|
||||||
loading_msg db "Laadin KolibriOS...",0
|
|
||||||
save_quest db "Jäta meelde praegused seaded? [y/n]: ",0
|
|
||||||
loader_block_error db "Alglaaduri andmed vigased, ei saa jätkata. Peatatud.",0
|
|
||||||
|
|
||||||
remark1 db "Default values were selected to match most of configurations, but not all.",0
|
|
||||||
remark2 db "If you have LCD-monitor, disable VRR in the item [c] - you do not need it.",0
|
|
||||||
remark3 db "If the system does not boot, try to disable the item [b].",0
|
|
||||||
remarks dw remark1, remark2, remark3
|
|
||||||
num_remarks = 3
|
|
@ -1,118 +0,0 @@
|
|||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
;; ;;
|
|
||||||
;; Copyright (C) KolibriOS team 2004-2007. All rights reserved. ;;
|
|
||||||
;; Distributed under terms of the GNU General Public License ;;
|
|
||||||
;; ;;
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
|
|
||||||
;======================================================================
|
|
||||||
;
|
|
||||||
; BOOT DATA
|
|
||||||
;
|
|
||||||
;======================================================================
|
|
||||||
|
|
||||||
|
|
||||||
d80x25_bottom:
|
|
||||||
; db 186,' KolibriOS based on MenuetOS and comes with ABSOLUTELY '
|
|
||||||
; db 'NO WARRANTY ',186
|
|
||||||
; db 186,' See file COPYING for details '
|
|
||||||
; db ' ',186
|
|
||||||
|
|
||||||
db 186,' KolibriOS basiert auf MenuetOS und wird ohne jegliche '
|
|
||||||
db ' Garantie vertrieben ',186
|
|
||||||
db 186,' Details stehen in der Datei COPYING '
|
|
||||||
db ' ',186
|
|
||||||
line_full_bottom
|
|
||||||
d80x25_bottom_num = 3
|
|
||||||
|
|
||||||
novesa db "Anzeige: EGA/CGA ",13,10,0
|
|
||||||
vervesa db "Vesa-Version: Vesa ",13,10,0
|
|
||||||
vervesa_off=22
|
|
||||||
msg_apm db " APM x.x ", 0
|
|
||||||
gr_mode db 186," Vesa 2.0+ 16 M LFB: [1] 640x480, [2] 800x600, "
|
|
||||||
db "[3] 1024x768, [4] 1280x1024",13,10
|
|
||||||
db 186," Vesa 1.2 16 M Bnk: [5] 640x480, [6] 800x600, "
|
|
||||||
db "[7] 1024x768, [8] 1280x1024",13,10
|
|
||||||
db 186," EGA/CGA 256 Farben: [9] 320x200, "
|
|
||||||
db "VGA 16 Farben: [0] 640x480",13,10
|
|
||||||
db 186," Waehle Modus: ",0
|
|
||||||
bt24 db "Bits Per Pixel: 24",13,10,0
|
|
||||||
bt32 db "Bits Per Pixel: 32",13,10,0
|
|
||||||
vrrmprint db "VRR verwenden? (Monitorfrequenz groesser als 60Hz"
|
|
||||||
db " only for transfers:",13,10
|
|
||||||
db 186," 1024*768->800*600 und 800*600->640*480) [1-ja,2-nein]:",0
|
|
||||||
;askmouse db " Maus angeschlossen an:"
|
|
||||||
; db " [1] PS/2 (USB), [2] Com1, [3] Com2."
|
|
||||||
; db " Waehle Port [1-3]: ",0
|
|
||||||
;no_com1 db 13,10,186, " Keine COM1 Maus",0
|
|
||||||
;no_com2 db 13,10,186, " Keine COM2 Maus",0
|
|
||||||
;ask_dma db "Nutze DMA zum HDD Zugriff? [1-ja, 2-allein fur Lesen, 3-nein]: ",0
|
|
||||||
ask_bd db "Add disks visible by BIOS emulated in V86-mode? [1-yes, 2-no]: ",0
|
|
||||||
;gr_direct db 186," Benutze direct LFB? "
|
|
||||||
; db "[1-ja/2-nein] ? ",0
|
|
||||||
;mem_model db 13,10,186," Hauptspeicher [1-16 Mb / 2-32 Mb / "
|
|
||||||
; db "3-64Mb / 4-128 Mb / 5-256 Mb] ? ",0
|
|
||||||
;bootlog db 13,10,186," After bootlog display [1-continue/2-pause] ? ",0
|
|
||||||
bdev db "Lade die Ramdisk von [1-Diskette; 2-C:\kolibri.img (FAT32);"
|
|
||||||
db 13,10,186," "
|
|
||||||
db "3-benutze ein bereits geladenes Kernel image;"
|
|
||||||
db 13,10,186," "
|
|
||||||
db "4-create blank image]: ",0
|
|
||||||
probetext db 13,10,13,10,186," Nutze Standardgrafikmodi? [1-ja, "
|
|
||||||
db "2-BIOS Test (Vesa 3.0)]: ",0
|
|
||||||
;memokz256 db 13,10,186," RAM 256 Mb",0
|
|
||||||
;memokz128 db 13,10,186," RAM 128 Mb",0
|
|
||||||
;memokz64 db 13,10,186," RAM 64 Mb",0
|
|
||||||
;memokz32 db 13,10,186," RAM 32 Mb",0
|
|
||||||
;memokz16 db 13,10,186," RAM 16 Mb",0
|
|
||||||
prnotfnd db "Fatal - Videomodus nicht gefunden.",0
|
|
||||||
;modena db "Fatal - VBE 0x112+ required.",0
|
|
||||||
not386 db "Fatal - CPU 386+ benoetigt.",0
|
|
||||||
btns db "Fatal - konnte Farbtiefe nicht erkennen.",0
|
|
||||||
fatalsel db "Fatal - Grafikmodus nicht unterstuetzt.",0
|
|
||||||
badsect db 13,10,186," Fatal - Sektorfehler, Andere Diskette neutzen.",0
|
|
||||||
memmovefailed db 13,10,186," Fatal - Int 0x15 Fehler.",0
|
|
||||||
okt db " ... OK"
|
|
||||||
linef db 13,10,0
|
|
||||||
diskload db "Lade Diskette: 00 %",8,8,8,8,0
|
|
||||||
pros db "00"
|
|
||||||
backspace2 db 8,8,0
|
|
||||||
boot_dev db 0 ; 0=floppy, 1=hd
|
|
||||||
start_msg db "Druecke [abcd], um die Einstellungen zu aendern , druecke [Enter] zum starten",13,10,0
|
|
||||||
time_msg db " oder warte "
|
|
||||||
time_str db " 5 Sekunden"
|
|
||||||
db " bis zum automatischen Start",13,10,0
|
|
||||||
current_cfg_msg db "Aktuelle Einstellungen:",13,10,0
|
|
||||||
curvideo_msg db " [a] Videomodus: ",0
|
|
||||||
mode1 db "640x480",0
|
|
||||||
mode2 db "800x600",0
|
|
||||||
mode3 db "1024x768",0
|
|
||||||
mode4 db "1280x1024",0
|
|
||||||
modes_msg dw mode4,mode1,mode2,mode3
|
|
||||||
modevesa20 db " mit LFB",0
|
|
||||||
modevesa12 db ", VESA 1.2 Bnk",0
|
|
||||||
mode9 db "320x200, EGA/CGA 256 colors",0
|
|
||||||
mode10 db "640x480, VGA 16 colors",0
|
|
||||||
probeno_msg db " (Standard Modus)",0
|
|
||||||
probeok_msg db " (teste nicht-standard Modi)",0
|
|
||||||
;dma_msg db " [b] Nutze DMA zum HDD Aufschreiben:",0
|
|
||||||
usebd_msg db " [b] Add disks visible by BIOS:",0
|
|
||||||
on_msg db " an",13,10,0
|
|
||||||
off_msg db " aus",13,10,0
|
|
||||||
;readonly_msg db " fur Lesen",13,10,0
|
|
||||||
vrrm_msg db " [c] Nutze VRR:",0
|
|
||||||
preboot_device_msg db " [d] Diskettenimage: ",0
|
|
||||||
preboot_device_msgs dw 0,pdm1,pdm2,pdm3
|
|
||||||
pdm1 db "Echte Diskette",13,10,0
|
|
||||||
pdm2 db "C:\kolibri.img (FAT32)",13,10,0
|
|
||||||
pdm3 db "Nutze bereits geladenes Image",13,10,0
|
|
||||||
pdm4 db "create blank image",13,10,0
|
|
||||||
loading_msg db "Lade KolibriOS...",0
|
|
||||||
save_quest db "Aktuelle Einstellungen speichern? [y/n]: ",0
|
|
||||||
loader_block_error db "Bootloader Daten ungueltig, Kann nicht fortfahren. Angehalten.",0
|
|
||||||
|
|
||||||
remark1 db "Default values were selected to match most of configurations, but not all.",0
|
|
||||||
remark2 db "If you have LCD-monitor, disable VRR in the item [c] - you do not need it.",0
|
|
||||||
remark3 db "If the system does not boot, try to disable the item [b].",0
|
|
||||||
remarks dw remark1, remark2, remark3
|
|
||||||
num_remarks = 3
|
|
@ -1,87 +0,0 @@
|
|||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
;; ;;
|
|
||||||
;; Copyright (C) KolibriOS team 2004-2008. All rights reserved. ;;
|
|
||||||
;; Distributed under terms of the GNU General Public License ;;
|
|
||||||
;; ;;
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
|
|
||||||
;=================================================================
|
|
||||||
;
|
|
||||||
; BOOT DATA
|
|
||||||
;
|
|
||||||
;=================================================================
|
|
||||||
|
|
||||||
|
|
||||||
d80x25_bottom:
|
|
||||||
db 186,' Kolibri OS ®á®¢ Menuet OS ¨ ¥ ¯à¥¤®áâ ¢«ï¥â '
|
|
||||||
db '¨ª ª¨å £ àa⨩. ',186
|
|
||||||
db 186,' <20>®¤à®¡¥¥ ᬮâà¨â¥ ¢ ä ©«¥ COPYING.TXT '
|
|
||||||
db ' ',186
|
|
||||||
line_full_bottom
|
|
||||||
msg_apm db " APM x.x ", 0
|
|
||||||
novesa db "‚¨¤¥®ª àâ : EGA/CGA",13,10,0
|
|
||||||
s_vesa db "‚¥àá¨ï VESA: "
|
|
||||||
.ver db "?.?",13,10,0
|
|
||||||
|
|
||||||
gr_mode db "‚ë¡¥à¨â¥ ¢¨¤¥®à¥¦¨¬: ",13,10,0
|
|
||||||
vrrmprint db "ˆá¯®«ì§®¢ âì VRR? (ç áâ®â ª ¤à®¢ ¢ëè¥ 60 ƒæ"
|
|
||||||
db " ⮫쪮 ¤«ï ¯¥à¥å®¤®¢:",13,10
|
|
||||||
db 186," 1024*768>800*600 ¨ 800*600>640*480) [1-¤ , 2-¥â]: ",0
|
|
||||||
;ask_dma db "ˆá¯®«ì§®¢ âì DMA ¤«ï ¤®áâ㯠ª HDD? [1-¤ , 2-⮫쪮 ç⥨¥, 3-¥â]: ",0
|
|
||||||
ask_bd db "„®¡ ¢¨âì ¤¨áª¨, ¢¨¤¨¬ë¥ ç¥à¥§ BIOS ¢ ०¨¬¥ V86? [1-¤ , 2-¥â]: ",0
|
|
||||||
bdev db "‡ £à㧨âì ®¡à § ¨§ [1-¤¨áª¥â ; 2-C:\kolibri.img (FAT32);"
|
|
||||||
db 13,10,186," "
|
|
||||||
db "3-¨á¯®«ì§®¢ âì 㦥 § £àã¦¥ë© ®¡à §;"
|
|
||||||
db 13,10,186," "
|
|
||||||
db "4-ᮧ¤ âì ç¨áâë© ®¡à §]: ",0
|
|
||||||
prnotfnd db "Žè¨¡ª - ‚¨¤¥®à¥¦¨¬ ¥ ©¤¥.",0
|
|
||||||
not386 db "Žè¨¡ª - ’ॡã¥âáï ¯à®æ¥áá®à 386+.",0
|
|
||||||
fatalsel db "Žè¨¡ª - ‚ë¡à ë© ¢¨¤¥®à¥¦¨¬ ¥ ¯®¤¤¥à¦¨¢ ¥âáï.",0
|
|
||||||
pres_key db "<EFBFBD> ¦¨¬¨â¥ «î¡ãî ª« ¢¨èã, ¤«ï ¯¥à¥å®¤ ¢ ¢ë¡®à ०¨¬®¢.",0
|
|
||||||
badsect db 13,10,186," Žè¨¡ª - „¨áª¥â ¯®¢à¥¦¤¥ . <20>®¯à®¡ã©â¥ ¤àã£ãî.",0
|
|
||||||
memmovefailed db 13,10,186," Žè¨¡ª - Int 0x15 move failed.",0
|
|
||||||
okt db " ... OK"
|
|
||||||
linef db 13,10,0
|
|
||||||
diskload db "‡ £à㧪 ¤¨áª¥âë: 00 %",8,8,8,8,0
|
|
||||||
pros db "00"
|
|
||||||
backspace2 db 8,8,0
|
|
||||||
boot_dev db 0
|
|
||||||
start_msg db "<EFBFBD> ¦¬¨â¥ [abc] ¤«ï ¨§¬¥¥¨ï áâ஥ª, [Enter] ¤«ï ¯à®¤®«¦¥¨ï § £à㧪¨",13,10,0
|
|
||||||
time_msg db " ¨«¨ ¯®¤®¦¤¨â¥ "
|
|
||||||
time_str db " 5 ᥪ㤠"
|
|
||||||
db " ¤® ¢â®¬ â¨ç¥áª®£® ¯à®¤®«¦¥¨ï",13,10,0
|
|
||||||
current_cfg_msg db "’¥ªã騥 áâனª¨:",13,10,0
|
|
||||||
curvideo_msg db " [a] ‚¨¤¥®à¥¦¨¬: ",0
|
|
||||||
|
|
||||||
|
|
||||||
mode0 db "320x200, EGA/CGA 256 梥⮢",13,10,0
|
|
||||||
mode9 db "640x480, VGA 16 梥⮢",13,10,0
|
|
||||||
|
|
||||||
usebd_msg db " [b] „®¡ ¢¨âì ¤¨áª¨, ¢¨¤¨¬ë¥ ç¥à¥§ BIOS:",0
|
|
||||||
on_msg db " ¢ª«",13,10,0
|
|
||||||
off_msg db " ¢ëª«",13,10,0
|
|
||||||
readonly_msg db " ⮫쪮 ç⥨¥",13,10,0
|
|
||||||
vrrm_msg db " [c] ˆá¯®«ì§®¢ ¨¥ VRR:",0
|
|
||||||
;preboot_device_msg db " [d] Ž¡à § ¤¨áª¥âë: ",0
|
|
||||||
;preboot_device_msgs dw 0,pdm1,pdm2,pdm3,pdm4
|
|
||||||
;pdm1 db " áâ®ïé ï ¤¨áª¥â ",13,10,0
|
|
||||||
;pdm2 db "C:\kolibri.img (FAT32)",13,10,0
|
|
||||||
;pdm3 db "¨á¯®«ì§®¢ âì 㦥 § £àã¦¥ë© ®¡à §",13,10,0
|
|
||||||
;pdm4 db "ᮧ¤ âì ç¨áâë© ®¡à §",13,10,0
|
|
||||||
loading_msg db "ˆ¤ñâ § £à㧪 KolibriOS...",0
|
|
||||||
save_quest db "‡ ¯®¬¨âì ⥪ã騥 áâனª¨? [y/n]: ",0
|
|
||||||
loader_block_error db "Žè¨¡ª ¢ ¤ ëå ç «ì®£® § £àã§ç¨ª , ¯à®¤®«¦¥¨¥ ¥¢®§¬®¦®.",0
|
|
||||||
|
|
||||||
|
|
||||||
_st db 186,' ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄ¿ ',13,10,0
|
|
||||||
_r1 db 186,' ³ 320x200 EGA/CGA 256 梥⮢ ³ ³ ',13,10,0
|
|
||||||
_r2 db 186,' ³ 640x480 VGA 16 梥⮢ ³ ³ ',13,10,0
|
|
||||||
_rs db 186,' ³ ????x????@?? SVGA VESA ³ ³ ',13,10,0
|
|
||||||
_bt db 186,' ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÙ ',13,10,0
|
|
||||||
|
|
||||||
|
|
||||||
remark1 db "‡ ç¥¨ï ¯® 㬮«ç ¨î ¢ë¡à ë ¤«ï 㤮¡á⢠¡®«ìè¨á⢠, ® ¥ ¢á¥å.",0
|
|
||||||
remark2 db "…᫨ ã ‚ á LCD-¬®¨â®à, ®âª«îç¨â¥ VRR ¢ ¯ãªâ¥ [c] - ® ‚ ¬ ¥ 㦥.",0
|
|
||||||
remark3 db "…᫨ ã ‚ á ¥ £à㧨âáï á¨á⥬ , ¯®¯à®¡ã©â¥ ®âª«îç¨âì ¯ãªâ [b].",0
|
|
||||||
remarks dw remark1, remark2, remark3
|
|
||||||
num_remarks = 3
|
|
@ -1,56 +0,0 @@
|
|||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
;; ;;
|
|
||||||
;; Copyright (C) KolibriOS team 2004-2007. All rights reserved. ;;
|
|
||||||
;; Distributed under terms of the GNU General Public License ;;
|
|
||||||
;; ;;
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; boot data: common strings (for all languages)
|
|
||||||
macro line_full_top {
|
|
||||||
db 201
|
|
||||||
times 78 db 205
|
|
||||||
db 187
|
|
||||||
}
|
|
||||||
macro line_full_bottom {
|
|
||||||
db 200
|
|
||||||
times 78 db 205
|
|
||||||
db 188
|
|
||||||
}
|
|
||||||
macro line_half {
|
|
||||||
db 186,' '
|
|
||||||
times 76 db 0xc4
|
|
||||||
db ' ',186
|
|
||||||
}
|
|
||||||
macro line_space {
|
|
||||||
db 186
|
|
||||||
times 78 db 32
|
|
||||||
db 186
|
|
||||||
}
|
|
||||||
d80x25_top:
|
|
||||||
line_full_top
|
|
||||||
cur_line_pos = 75
|
|
||||||
; store byte ' ' at d80x25_top+cur_line_pos+1
|
|
||||||
; store byte ' ' at d80x25_top+cur_line_pos
|
|
||||||
; store dword ' SVN' at d80x25_top+cur_line_pos-4
|
|
||||||
|
|
||||||
space_msg:
|
|
||||||
line_space
|
|
||||||
;verstr:
|
|
||||||
; line_space
|
|
||||||
; version string
|
|
||||||
; db 186,32
|
|
||||||
; repeat 78
|
|
||||||
; load a byte from version+%-1
|
|
||||||
; if a = 13
|
|
||||||
; break
|
|
||||||
; end if
|
|
||||||
; db a
|
|
||||||
; end repeat
|
|
||||||
; repeat 78 - ($-verstr)
|
|
||||||
; db ' '
|
|
||||||
; end repeat
|
|
||||||
; db 32,186
|
|
||||||
; line_half
|
|
||||||
|
|
@ -1,759 +0,0 @@
|
|||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
;; ;;
|
|
||||||
;; Copyright (C) KolibriOS team 2004-2007. All rights reserved. ;;
|
|
||||||
;; Distributed under terms of the GNU General Public License ;;
|
|
||||||
;; ;;
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
|
|
||||||
|
|
||||||
struc VBE_VGAInfo {
|
|
||||||
.VESASignature dd ? ; char
|
|
||||||
.VESAVersion dw ? ; short
|
|
||||||
.OemStringPtr dd ? ; char *
|
|
||||||
.Capabilities dd ? ; ulong
|
|
||||||
.VideoModePtr dd ? ; ulong
|
|
||||||
.TotalMemory dw ? ; short
|
|
||||||
; VBE 2.0+
|
|
||||||
.OemSoftwareRev db ? ; short
|
|
||||||
.OemVendorNamePtr dw ? ; char *
|
|
||||||
.OemProductNamePtr dw ? ; char *
|
|
||||||
.OemProductRevPtr dw ? ; char *
|
|
||||||
.reserved rb 222 ; char
|
|
||||||
.OemData rb 256 ; char
|
|
||||||
}
|
|
||||||
|
|
||||||
struc VBE_ModeInfo {
|
|
||||||
.ModeAttributes dw ? ; short
|
|
||||||
.WinAAttributes db ? ; char
|
|
||||||
.WinBAttributes db ? ; char
|
|
||||||
.WinGranularity dw ? ; short
|
|
||||||
.WinSize dw ? ; short
|
|
||||||
.WinASegment dw ? ; ushort
|
|
||||||
.WinBSegment dw ? ; ushort
|
|
||||||
.WinFuncPtr dd ? ; void *
|
|
||||||
.BytesPerScanLine dw ? ; short
|
|
||||||
.XRes dw ? ; short
|
|
||||||
.YRes dw ? ; short
|
|
||||||
.XCharSize db ? ; char
|
|
||||||
.YCharSize db ? ; char
|
|
||||||
.NumberOfPlanes db ? ; char
|
|
||||||
.BitsPerPixel db ? ; char
|
|
||||||
.NumberOfBanks db ? ; char
|
|
||||||
.MemoryModel db ? ; char
|
|
||||||
.BankSize db ? ; char
|
|
||||||
.NumberOfImagePages db ? ; char
|
|
||||||
.res1 db ? ; char
|
|
||||||
.RedMaskSize db ? ; char
|
|
||||||
.RedFieldPosition db ? ; char
|
|
||||||
.GreenMaskSize db ? ; char
|
|
||||||
.GreenFieldPosition db ? ; char
|
|
||||||
.BlueMaskSize db ? ; char
|
|
||||||
.BlueFieldPosition db ? ; char
|
|
||||||
.RsvedMaskSize db ? ; char
|
|
||||||
.RsvedFieldPosition db ? ; char
|
|
||||||
.DirectColorModeInfo db ? ; char ; MISSED IN THIS TUTORIAL!! SEE ABOVE
|
|
||||||
; VBE 2.0+
|
|
||||||
.PhysBasePtr dd ? ; ulong
|
|
||||||
.OffScreenMemOffset dd ? ; ulong
|
|
||||||
.OffScreenMemSize dw ? ; short
|
|
||||||
; VBE 3.0+
|
|
||||||
.LinbytesPerScanLine dw ? ; short
|
|
||||||
.BankNumberOfImagePages db ? ; char
|
|
||||||
.LinNumberOfImagePages db ? ; char
|
|
||||||
.LinRedMaskSize db ? ; char
|
|
||||||
.LinRedFieldPosition db ? ; char
|
|
||||||
.LingreenMaskSize db ? ; char
|
|
||||||
.LinGreenFieldPosition db ? ; char
|
|
||||||
.LinBlueMaskSize db ? ; char
|
|
||||||
.LinBlueFieldPosition db ? ; char
|
|
||||||
.LinRsvdMaskSize db ? ; char
|
|
||||||
.LinRsvdFieldPosition db ? ; char
|
|
||||||
.MaxPixelClock dd ? ; ulong
|
|
||||||
.res2 rb 190 ; char
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual at $A000
|
|
||||||
vi VBE_VGAInfo
|
|
||||||
mi VBE_ModeInfo
|
|
||||||
modes_table:
|
|
||||||
end virtual
|
|
||||||
cursor_pos dw 0 ;âðåìåííîå õðàíåíèå êóðñîðà.
|
|
||||||
home_cursor dw 0 ;current shows rows a table
|
|
||||||
end_cursor dw 0 ;end of position current shows rows a table
|
|
||||||
scroll_start dw 0 ;start position of scroll bar
|
|
||||||
scroll_end dw 0 ;end position of scroll bar
|
|
||||||
long_v_table equ 9 ;long of visible video table
|
|
||||||
size_of_step equ 10
|
|
||||||
scroll_area_size equ (long_v_table-2)
|
|
||||||
int2str:
|
|
||||||
dec bl
|
|
||||||
jz @f
|
|
||||||
xor edx, edx
|
|
||||||
div ecx
|
|
||||||
push edx
|
|
||||||
call int2str
|
|
||||||
pop eax
|
|
||||||
@@:
|
|
||||||
or al, 0x30
|
|
||||||
mov [ds:di], al
|
|
||||||
inc di
|
|
||||||
ret
|
|
||||||
|
|
||||||
int2strnz:
|
|
||||||
cmp eax, ecx
|
|
||||||
jb @f
|
|
||||||
xor edx, edx
|
|
||||||
div ecx
|
|
||||||
push edx
|
|
||||||
call int2strnz
|
|
||||||
pop eax
|
|
||||||
@@:
|
|
||||||
or al, 0x30
|
|
||||||
mov [es:di], al
|
|
||||||
inc di
|
|
||||||
ret
|
|
||||||
|
|
||||||
;-------------------------------------------------------
|
|
||||||
;Write message about incorrect v_mode and write message about jmp on swith v_mode
|
|
||||||
v_mode_error:
|
|
||||||
_setcursor 19,2
|
|
||||||
mov si, fatalsel
|
|
||||||
call printplain
|
|
||||||
_setcursor 20,2
|
|
||||||
mov si, pres_key
|
|
||||||
call printplain
|
|
||||||
xor eax, eax
|
|
||||||
int 16h
|
|
||||||
jmp cfgmanager.d
|
|
||||||
;-------------------------------------------------------
|
|
||||||
;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;-------------------------------------------------------
|
|
||||||
print_vesa_info:
|
|
||||||
_setcursor 5,2
|
|
||||||
|
|
||||||
mov [es:vi.VESASignature], 'VBE2'
|
|
||||||
mov ax, 0x4F00
|
|
||||||
mov di, vi ;0xa000
|
|
||||||
int 0x10
|
|
||||||
or ah, ah
|
|
||||||
jz @f
|
|
||||||
mov [es:vi.VESASignature], 'VESA'
|
|
||||||
mov ax, $4F00
|
|
||||||
mov di, vi
|
|
||||||
int 0x10
|
|
||||||
or ah, ah
|
|
||||||
jnz .exit
|
|
||||||
@@:
|
|
||||||
cmp [es:vi.VESASignature], 'VESA'
|
|
||||||
jne .exit
|
|
||||||
cmp [es:vi.VESAVersion], 0x0100
|
|
||||||
jb .exit
|
|
||||||
jmp .vesaok2
|
|
||||||
|
|
||||||
.exit:
|
|
||||||
mov si, novesa
|
|
||||||
call printplain
|
|
||||||
ret
|
|
||||||
|
|
||||||
.vesaok2:
|
|
||||||
mov ax, [es:vi.VESAVersion]
|
|
||||||
add ax, '00'
|
|
||||||
|
|
||||||
mov [s_vesa.ver], ah
|
|
||||||
mov [s_vesa.ver+2], al
|
|
||||||
mov si, s_vesa
|
|
||||||
call printplain
|
|
||||||
|
|
||||||
_setcursor 4,2
|
|
||||||
mov si, word[es:vi.OemStringPtr]
|
|
||||||
mov di, si
|
|
||||||
|
|
||||||
push ds
|
|
||||||
mov ds, word[es:vi.OemStringPtr+2]
|
|
||||||
call printplain
|
|
||||||
pop ds
|
|
||||||
|
|
||||||
ret
|
|
||||||
;-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
calc_vmodes_table:
|
|
||||||
pushad
|
|
||||||
|
|
||||||
; push 0
|
|
||||||
; pop es
|
|
||||||
|
|
||||||
lfs si, [es:vi.VideoModePtr]
|
|
||||||
|
|
||||||
mov bx, modes_table
|
|
||||||
;save no vesa mode of work 320x200, EGA/CGA 256 梥⮢ and 640x480, VGA 16 梥⮢
|
|
||||||
mov word [es:bx], 640
|
|
||||||
mov word [es:bx+2], 480
|
|
||||||
mov word [es:bx+6], 0x13
|
|
||||||
|
|
||||||
mov word [es:bx+10], 640
|
|
||||||
mov word [es:bx+12], 480
|
|
||||||
mov word [es:bx+16], 0x12
|
|
||||||
add bx, 20
|
|
||||||
.next_mode:
|
|
||||||
mov cx, word [fs:si]; mode number
|
|
||||||
cmp cx, -1
|
|
||||||
je .modes_ok.2
|
|
||||||
|
|
||||||
mov ax, 0x4F01
|
|
||||||
mov di, mi
|
|
||||||
int 0x10
|
|
||||||
|
|
||||||
or ah, ah
|
|
||||||
jnz .modes_ok.2;vesa_info.exit
|
|
||||||
|
|
||||||
test [es:mi.ModeAttributes], 00000001b ;videomode support ?
|
|
||||||
jz @f
|
|
||||||
test [es:mi.ModeAttributes], 00010000b ;picture ?
|
|
||||||
jz @f
|
|
||||||
test [es:mi.ModeAttributes], 10000000b ;LFB ?
|
|
||||||
jz @f
|
|
||||||
|
|
||||||
cmp [es:mi.BitsPerPixel], 24 ;It show only videomodes to have support 24 and 32 bpp
|
|
||||||
jb @f
|
|
||||||
|
|
||||||
; cmp [es:mi.BitsPerPixel],16
|
|
||||||
; jne .l0
|
|
||||||
; cmp [es:mi.GreenMaskSize],5
|
|
||||||
; jne .l0
|
|
||||||
; mov [es:mi.BitsPerPixel],15
|
|
||||||
|
|
||||||
|
|
||||||
.l0:
|
|
||||||
cmp [es:mi.XRes], 640
|
|
||||||
jb @f
|
|
||||||
cmp [es:mi.YRes], 480
|
|
||||||
jb @f
|
|
||||||
; cmp [es:mi.BitsPerPixel],8
|
|
||||||
; jb @f
|
|
||||||
|
|
||||||
mov ax, [es:mi.XRes]
|
|
||||||
mov [es:bx+0], ax ; +0[2] : resolution X
|
|
||||||
mov ax, [es:mi.YRes]
|
|
||||||
mov [es:bx+2], ax ; +2[2] : resolution Y
|
|
||||||
mov ax, [es:mi.ModeAttributes]
|
|
||||||
mov [es:bx+4], ax ; +4[2] : attributes
|
|
||||||
|
|
||||||
cmp [s_vesa.ver], '2'
|
|
||||||
jb .lp1
|
|
||||||
|
|
||||||
or cx, 0x4000 ; use LFB
|
|
||||||
.lp1:
|
|
||||||
mov [es:bx+6], cx ; +6 : mode number
|
|
||||||
movzx ax, byte [es:mi.BitsPerPixel]
|
|
||||||
mov word [es:bx+8], ax ; +8 : bits per pixel
|
|
||||||
add bx, size_of_step ; size of record
|
|
||||||
|
|
||||||
@@:
|
|
||||||
add si, 2
|
|
||||||
jmp .next_mode
|
|
||||||
|
|
||||||
.modes_ok.2:
|
|
||||||
|
|
||||||
mov word[es:bx], -1 ;end video table
|
|
||||||
mov word[end_cursor], bx ;save end cursor position
|
|
||||||
;;;;;;;;;;;;;;;;;;
|
|
||||||
;Sort array
|
|
||||||
; mov si,modes_table
|
|
||||||
;.new_mode:
|
|
||||||
; mov ax,word [es:si]
|
|
||||||
; cmp ax,-1
|
|
||||||
; je .exxit
|
|
||||||
; add ax,word [es:si+2]
|
|
||||||
; add ax,word [es:si+8]
|
|
||||||
; mov bp,si
|
|
||||||
;.again:
|
|
||||||
; add bp,12
|
|
||||||
; mov bx,word [es:bp]
|
|
||||||
; cmp bx,-1
|
|
||||||
; je .exit
|
|
||||||
; add bx,word [es:bp+2]
|
|
||||||
; add bx,word [es:bp+8]
|
|
||||||
;
|
|
||||||
; cmp ax,bx
|
|
||||||
; ja .loops
|
|
||||||
; jmp .again
|
|
||||||
;.loops:
|
|
||||||
; push dword [es:si]
|
|
||||||
; push dword [es:si+4]
|
|
||||||
; push dword [es:si+8]
|
|
||||||
; push dword [es:bp]
|
|
||||||
; push dword [es:bp+4]
|
|
||||||
; push dword [es:bp+8]
|
|
||||||
;
|
|
||||||
; pop dword [es:si+8]
|
|
||||||
; pop dword [es:si+4]
|
|
||||||
; pop dword [es:si]
|
|
||||||
; pop dword [es:bp+8]
|
|
||||||
; pop dword [es:bp+4]
|
|
||||||
; pop dword [es:bp]
|
|
||||||
; jmp .new_mode
|
|
||||||
;
|
|
||||||
;.exit: add si,12
|
|
||||||
; jmp .new_mode
|
|
||||||
;.exxit:
|
|
||||||
popad
|
|
||||||
ret
|
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
draw_current_vmode:
|
|
||||||
push 0
|
|
||||||
pop es
|
|
||||||
|
|
||||||
mov si, word [cursor_pos]
|
|
||||||
|
|
||||||
cmp word [es:si+6], 0x12
|
|
||||||
je .no_vesa_0x12
|
|
||||||
|
|
||||||
cmp word [es:si+6], 0x13
|
|
||||||
je .no_vesa_0x13
|
|
||||||
|
|
||||||
mov di, loader_block_error
|
|
||||||
movzx eax, word[es:si+0]
|
|
||||||
mov ecx, 10
|
|
||||||
call int2strnz
|
|
||||||
mov byte[es:di], 'x'
|
|
||||||
inc di
|
|
||||||
movzx eax, word[es:si+2]
|
|
||||||
call int2strnz
|
|
||||||
mov byte[es:di], 'x'
|
|
||||||
inc di
|
|
||||||
movzx eax, word[es:si+8]
|
|
||||||
call int2strnz
|
|
||||||
mov dword[es:di], 0x00000d0a
|
|
||||||
mov si, loader_block_error
|
|
||||||
push ds
|
|
||||||
push es
|
|
||||||
pop ds
|
|
||||||
call printplain
|
|
||||||
pop ds
|
|
||||||
ret
|
|
||||||
.no_vesa_0x13:
|
|
||||||
mov si, mode0
|
|
||||||
jmp .print
|
|
||||||
.no_vesa_0x12:
|
|
||||||
mov si, mode9
|
|
||||||
.print:
|
|
||||||
call printplain
|
|
||||||
ret
|
|
||||||
;-----------------------------------------------------------------------------
|
|
||||||
check_first_parm:
|
|
||||||
mov si, word [preboot_graph]
|
|
||||||
test si, si
|
|
||||||
jnz .no_zero ;if no zero
|
|
||||||
.zerro:
|
|
||||||
; mov ax,modes_table
|
|
||||||
; mov word [cursor_pos],ax
|
|
||||||
; mov word [home_cursor],ax
|
|
||||||
; mov word [preboot_graph],ax
|
|
||||||
;SET default video of mode first probe will fined a move of work 1024x768@32
|
|
||||||
|
|
||||||
mov ax, 1024
|
|
||||||
mov bx, 768
|
|
||||||
mov si, modes_table
|
|
||||||
call .loops
|
|
||||||
test ax, ax
|
|
||||||
jz .ok_found_mode
|
|
||||||
mov ax, 800
|
|
||||||
mov bx, 600
|
|
||||||
mov si, modes_table
|
|
||||||
call .loops
|
|
||||||
test ax, ax
|
|
||||||
jz .ok_found_mode
|
|
||||||
mov ax, 640
|
|
||||||
mov bx, 480
|
|
||||||
mov si, modes_table
|
|
||||||
call .loops
|
|
||||||
test ax, ax
|
|
||||||
jz .ok_found_mode
|
|
||||||
|
|
||||||
mov si, modes_table
|
|
||||||
jmp .ok_found_mode
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.no_zero:
|
|
||||||
mov bp, word [number_vm]
|
|
||||||
cmp bp, word [es:si+6]
|
|
||||||
jz .ok_found_mode
|
|
||||||
mov ax, word [x_save]
|
|
||||||
mov bx, word [y_save]
|
|
||||||
mov si, modes_table
|
|
||||||
call .loops
|
|
||||||
test ax, ax
|
|
||||||
jz .ok_found_mode
|
|
||||||
|
|
||||||
mov si, modes_table
|
|
||||||
; cmp ax,modes_table
|
|
||||||
; jb .zerro ;check on correct if bellow
|
|
||||||
; cmp ax,word [end_cursor]
|
|
||||||
; ja .zerro ;check on correct if anymore
|
|
||||||
|
|
||||||
.ok_found_mode:
|
|
||||||
mov word [home_cursor], si
|
|
||||||
; mov word [cursor_pos],si
|
|
||||||
mov word [preboot_graph], si
|
|
||||||
mov ax, si
|
|
||||||
|
|
||||||
mov ecx, long_v_table
|
|
||||||
|
|
||||||
.loop:
|
|
||||||
add ax, size_of_step
|
|
||||||
cmp ax, word [end_cursor]
|
|
||||||
jae .next_step
|
|
||||||
loop .loop
|
|
||||||
.next_step:
|
|
||||||
sub ax, size_of_step*long_v_table
|
|
||||||
cmp ax, modes_table
|
|
||||||
jae @f
|
|
||||||
mov ax, modes_table
|
|
||||||
@@:
|
|
||||||
|
|
||||||
mov word [home_cursor], ax
|
|
||||||
mov si, [preboot_graph]
|
|
||||||
mov word [cursor_pos], si
|
|
||||||
|
|
||||||
push word [es:si]
|
|
||||||
pop word [x_save]
|
|
||||||
push word [es:si+2]
|
|
||||||
pop word [y_save]
|
|
||||||
push word [es:si+6]
|
|
||||||
pop word [number_vm]
|
|
||||||
|
|
||||||
ret
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
.loops:
|
|
||||||
cmp ax, word [es:si]
|
|
||||||
jne .next
|
|
||||||
cmp bx, word [es:si+2]
|
|
||||||
jne .next
|
|
||||||
cmp word [es:si+8], 32
|
|
||||||
je .ok
|
|
||||||
cmp word [es:si+8], 24
|
|
||||||
je .ok
|
|
||||||
.next:
|
|
||||||
add si, size_of_step
|
|
||||||
cmp word [es:si], -1
|
|
||||||
je .exit
|
|
||||||
jmp .loops
|
|
||||||
.ok:
|
|
||||||
xor ax, ax
|
|
||||||
ret
|
|
||||||
.exit:
|
|
||||||
or ax, -1
|
|
||||||
ret
|
|
||||||
|
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
;default_vmode:
|
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
|
||||||
draw_vmodes_table:
|
|
||||||
_setcursor 9, 2
|
|
||||||
mov si, gr_mode
|
|
||||||
call printplain
|
|
||||||
|
|
||||||
mov si, _st
|
|
||||||
call printplain
|
|
||||||
|
|
||||||
push word [cursor_pos]
|
|
||||||
pop ax
|
|
||||||
push word [home_cursor]
|
|
||||||
pop si
|
|
||||||
mov cx, si
|
|
||||||
|
|
||||||
cmp ax, si
|
|
||||||
je .ok
|
|
||||||
jb .low
|
|
||||||
|
|
||||||
|
|
||||||
add cx, size_of_step*long_v_table
|
|
||||||
|
|
||||||
cmp ax, cx
|
|
||||||
jb .ok
|
|
||||||
|
|
||||||
sub cx, size_of_step*long_v_table
|
|
||||||
add cx, size_of_step
|
|
||||||
cmp cx, word[end_cursor]
|
|
||||||
jae .ok
|
|
||||||
add si, size_of_step
|
|
||||||
push si
|
|
||||||
pop word [home_cursor]
|
|
||||||
jmp .ok
|
|
||||||
|
|
||||||
|
|
||||||
.low:
|
|
||||||
sub cx, size_of_step
|
|
||||||
cmp cx, modes_table
|
|
||||||
jb .ok
|
|
||||||
push cx
|
|
||||||
push cx
|
|
||||||
pop word [home_cursor]
|
|
||||||
pop si
|
|
||||||
|
|
||||||
|
|
||||||
.ok:
|
|
||||||
; calculate scroll position
|
|
||||||
push si
|
|
||||||
mov ax, [end_cursor]
|
|
||||||
sub ax, modes_table
|
|
||||||
mov bx, size_of_step
|
|
||||||
cwd
|
|
||||||
div bx
|
|
||||||
mov si, ax ; si = size of list
|
|
||||||
mov ax, [home_cursor]
|
|
||||||
sub ax, modes_table
|
|
||||||
cwd
|
|
||||||
div bx
|
|
||||||
mov di, ax
|
|
||||||
mov ax, scroll_area_size*long_v_table
|
|
||||||
cwd
|
|
||||||
div si
|
|
||||||
test ax, ax
|
|
||||||
jnz @f
|
|
||||||
inc ax
|
|
||||||
@@:
|
|
||||||
cmp al, scroll_area_size
|
|
||||||
jb @f
|
|
||||||
mov al, scroll_area_size
|
|
||||||
@@:
|
|
||||||
mov cx, ax
|
|
||||||
; cx = scroll height
|
|
||||||
; calculate scroll pos
|
|
||||||
xor bx, bx ; initialize scroll pos
|
|
||||||
sub al, scroll_area_size+1
|
|
||||||
neg al
|
|
||||||
sub si, long_v_table-1
|
|
||||||
jbe @f
|
|
||||||
mul di
|
|
||||||
div si
|
|
||||||
mov bx, ax
|
|
||||||
@@:
|
|
||||||
inc bx
|
|
||||||
imul ax, bx, size_of_step
|
|
||||||
add ax, [home_cursor]
|
|
||||||
mov [scroll_start], ax
|
|
||||||
imul cx, size_of_step
|
|
||||||
add ax, cx
|
|
||||||
mov [scroll_end], ax
|
|
||||||
pop si
|
|
||||||
mov bp, long_v_table ;show rows
|
|
||||||
.@@_next_bit:
|
|
||||||
;clear cursor
|
|
||||||
mov ax, ' '
|
|
||||||
mov word[ds:_r1+21], ax
|
|
||||||
mov word[ds:_r1+50], ax
|
|
||||||
|
|
||||||
mov word[ds:_r2+21], ax
|
|
||||||
mov word[ds:_r2+45], ax
|
|
||||||
|
|
||||||
mov word[ds:_rs+21], ax
|
|
||||||
mov word[ds:_rs+46], ax
|
|
||||||
; draw string
|
|
||||||
cmp word [es:si+6], 0x12
|
|
||||||
je .show_0x12
|
|
||||||
cmp word [es:si+6], 0x13
|
|
||||||
je .show_0x13
|
|
||||||
|
|
||||||
movzx eax, word[es:si]
|
|
||||||
cmp ax, -1
|
|
||||||
je .@@_end
|
|
||||||
mov di, _rs+23
|
|
||||||
mov ecx, 10
|
|
||||||
mov bl, 4
|
|
||||||
call int2str
|
|
||||||
movzx eax, word[es:si+2]
|
|
||||||
inc di
|
|
||||||
mov bl, 4
|
|
||||||
call int2str
|
|
||||||
|
|
||||||
movzx eax, word[es:si+8]
|
|
||||||
inc di
|
|
||||||
mov bl, 2
|
|
||||||
call int2str
|
|
||||||
|
|
||||||
cmp si, word [cursor_pos]
|
|
||||||
jne .next
|
|
||||||
;draw cursor
|
|
||||||
mov word[ds:_rs+21], '>>'
|
|
||||||
mov word[ds:_rs+46], '<<'
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.next:
|
|
||||||
push si
|
|
||||||
mov si, _rs
|
|
||||||
.@@_sh:
|
|
||||||
; add to the string pseudographics for scrollbar
|
|
||||||
pop bx
|
|
||||||
push bx
|
|
||||||
mov byte [si+53], ' '
|
|
||||||
cmp bx, [scroll_start]
|
|
||||||
jb @f
|
|
||||||
cmp bx, [scroll_end]
|
|
||||||
jae @f
|
|
||||||
mov byte [si+53], 0xDB ; filled bar
|
|
||||||
@@:
|
|
||||||
push bx
|
|
||||||
add bx, size_of_step
|
|
||||||
cmp bx, [end_cursor]
|
|
||||||
jnz @f
|
|
||||||
mov byte [si+53], 31 ; 'down arrow' symbol
|
|
||||||
@@:
|
|
||||||
sub bx, [home_cursor]
|
|
||||||
cmp bx, size_of_step*long_v_table
|
|
||||||
jnz @f
|
|
||||||
mov byte [si+53], 31 ; 'down arrow' symbol
|
|
||||||
@@:
|
|
||||||
pop bx
|
|
||||||
cmp bx, [home_cursor]
|
|
||||||
jnz @f
|
|
||||||
mov byte [si+53], 30 ; 'up arrow' symbol
|
|
||||||
@@:
|
|
||||||
call printplain
|
|
||||||
pop si
|
|
||||||
add si, size_of_step
|
|
||||||
|
|
||||||
dec bp
|
|
||||||
jnz .@@_next_bit
|
|
||||||
|
|
||||||
.@@_end:
|
|
||||||
mov si, _bt
|
|
||||||
call printplain
|
|
||||||
ret
|
|
||||||
.show_0x13:
|
|
||||||
push si
|
|
||||||
|
|
||||||
cmp si, word [cursor_pos]
|
|
||||||
jne @f
|
|
||||||
mov word[ds:_r1+21], '>>'
|
|
||||||
mov word[ds:_r1+50], '<<'
|
|
||||||
@@:
|
|
||||||
mov si, _r1
|
|
||||||
jmp .@@_sh
|
|
||||||
.show_0x12:
|
|
||||||
push si
|
|
||||||
cmp si, word [cursor_pos]
|
|
||||||
jne @f
|
|
||||||
|
|
||||||
mov word[ds:_r2+21], '>>'
|
|
||||||
mov word[ds:_r2+45], '<<'
|
|
||||||
@@:
|
|
||||||
mov si, _r2
|
|
||||||
jmp .@@_sh
|
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
|
||||||
;Clear arrea of current video page (0xb800)
|
|
||||||
clear_vmodes_table:
|
|
||||||
pusha
|
|
||||||
; draw frames
|
|
||||||
push es
|
|
||||||
push 0xb800
|
|
||||||
pop es
|
|
||||||
mov di, 1444
|
|
||||||
xor ax, ax
|
|
||||||
mov ah, 1*16+15
|
|
||||||
mov cx, 70
|
|
||||||
mov bp, 12
|
|
||||||
.loop_start:
|
|
||||||
rep stosw
|
|
||||||
mov cx, 70
|
|
||||||
add di, 20
|
|
||||||
dec bp
|
|
||||||
jns .loop_start
|
|
||||||
pop es
|
|
||||||
popa
|
|
||||||
ret
|
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
set_vmode:
|
|
||||||
push 0 ;0;x1000
|
|
||||||
pop es
|
|
||||||
|
|
||||||
mov si, word [preboot_graph] ;[preboot_graph]
|
|
||||||
mov cx, word [es:si+6] ; number of mode
|
|
||||||
|
|
||||||
|
|
||||||
mov ax, word [es:si+0] ; resolution X
|
|
||||||
mov bx, word [es:si+2] ; resolution Y
|
|
||||||
|
|
||||||
|
|
||||||
mov word [es:BOOT_X_RES], ax ; resolution X
|
|
||||||
mov word [es:BOOT_Y_RES], bx ; resolution Y
|
|
||||||
mov word [es:BOOT_VESA_MODE], cx ; number of mode
|
|
||||||
|
|
||||||
cmp cx, 0x12
|
|
||||||
je .mode0x12_0x13
|
|
||||||
cmp cx, 0x13
|
|
||||||
je .mode0x12_0x13
|
|
||||||
|
|
||||||
|
|
||||||
cmp byte [s_vesa.ver], '2'
|
|
||||||
jb .vesa12
|
|
||||||
|
|
||||||
; VESA 2 and Vesa 3
|
|
||||||
|
|
||||||
mov ax, 0x4f01
|
|
||||||
and cx, 0xfff
|
|
||||||
mov di, mi;0xa000
|
|
||||||
int 0x10
|
|
||||||
; LFB
|
|
||||||
mov eax, [es:mi.PhysBasePtr];di+0x28]
|
|
||||||
mov [es:BOOT_LFB], eax
|
|
||||||
; ---- vbe voodoo
|
|
||||||
BytesPerLine equ 0x10
|
|
||||||
mov ax, [es:di+BytesPerLine]
|
|
||||||
mov [es:BOOT_PITCH], ax
|
|
||||||
; BPP
|
|
||||||
cmp [es:mi.BitsPerPixel], 16
|
|
||||||
jne .l0
|
|
||||||
cmp [es:mi.GreenMaskSize], 5
|
|
||||||
jne .l0
|
|
||||||
mov [es:mi.BitsPerPixel], 15
|
|
||||||
.l0:
|
|
||||||
mov al, byte [es:di+0x19]
|
|
||||||
mov [es:BOOT_BPP], al
|
|
||||||
jmp .exit
|
|
||||||
|
|
||||||
.mode0x12_0x13:
|
|
||||||
mov byte [es:BOOT_BPP], 32
|
|
||||||
or dword [es:BOOT_LFB], 0xFFFFFFFF; 0x800000
|
|
||||||
|
|
||||||
|
|
||||||
; VESA 1.2 PM BANK SWITCH ADDRESS
|
|
||||||
|
|
||||||
.vesa12:
|
|
||||||
|
|
||||||
|
|
||||||
mov ax, 0x4f0A
|
|
||||||
xor bx, bx
|
|
||||||
int 0x10
|
|
||||||
xor eax, eax
|
|
||||||
xor ebx, ebx
|
|
||||||
mov ax, es
|
|
||||||
shl eax, 4
|
|
||||||
mov bx, di
|
|
||||||
add eax, ebx
|
|
||||||
movzx ebx, word[es:di]
|
|
||||||
add eax, ebx
|
|
||||||
push 0x0000
|
|
||||||
pop es
|
|
||||||
mov [es:0x9014], eax
|
|
||||||
.exit:
|
|
||||||
ret
|
|
||||||
|
|
||||||
|
|
||||||
;=============================================================================
|
|
||||||
;=============================================================================
|
|
||||||
;=============================================================================
|
|
||||||
|
|
@ -1,89 +0,0 @@
|
|||||||
@echo off
|
|
||||||
|
|
||||||
set languages=en ru ge et
|
|
||||||
call :Check_Lang %1
|
|
||||||
for %%a in (ru) do if %%a==%target%
|
|
||||||
call :Target_%target%
|
|
||||||
|
|
||||||
if ERRORLEVEL 0 goto Exit_OK
|
|
||||||
|
|
||||||
echo There was an error executing script.
|
|
||||||
echo For any help, please send a report.
|
|
||||||
pause
|
|
||||||
goto :eof
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
:Check_Lang
|
|
||||||
set res=%1
|
|
||||||
:Check_Lang_loop
|
|
||||||
for %%a in (%languages%) do if %%a==%res% set lang=%res%
|
|
||||||
if defined lang call :make_all goto :eof
|
|
||||||
|
|
||||||
echo Language '%res%' is incorrect
|
|
||||||
echo Enter valid language [ %languages% ]:
|
|
||||||
|
|
||||||
set /P res=">
|
|
||||||
goto Check_Lang_loop
|
|
||||||
goto :eof
|
|
||||||
|
|
||||||
|
|
||||||
:make_all
|
|
||||||
echo *** building module Kolibri.ldm for Secondary Loader with language '%lang%' ...
|
|
||||||
|
|
||||||
if not exist bin mkdir bin
|
|
||||||
echo lang fix %lang% > lang.inc
|
|
||||||
fasm -m 65536 kolibri_ldm.asm bin\kolibri.ldm
|
|
||||||
if not %errorlevel%==0 goto :Error_FasmFailed
|
|
||||||
erase lang.inc
|
|
||||||
goto Exit_OK
|
|
||||||
|
|
||||||
|
|
||||||
:Target_all
|
|
||||||
call :Target_kernel
|
|
||||||
call :Target_drivers
|
|
||||||
call :Target_skins
|
|
||||||
goto :eof
|
|
||||||
|
|
||||||
|
|
||||||
:Target_drivers
|
|
||||||
echo *** building drivers ...
|
|
||||||
|
|
||||||
if not exist bin\drivers mkdir bin\drivers
|
|
||||||
cd drivers
|
|
||||||
for %%a in (%drivers%) do (
|
|
||||||
fasm -m 65536 %%a.asm ..\bin\drivers\%%a.obj
|
|
||||||
if not %errorlevel%==0 goto :Error_FasmFailed
|
|
||||||
)
|
|
||||||
cd ..
|
|
||||||
move bin\drivers\vmode.obj bin\drivers\vmode.mdr
|
|
||||||
goto :eof
|
|
||||||
|
|
||||||
|
|
||||||
:Target_skins
|
|
||||||
echo *** building skins ...
|
|
||||||
|
|
||||||
if not exist bin\skins mkdir bin\skins
|
|
||||||
cd skin
|
|
||||||
fasm -m 65536 default.asm ..\bin\skins\default.skn
|
|
||||||
if not %errorlevel%==0 goto :Error_FasmFailed
|
|
||||||
cd ..
|
|
||||||
goto :eof
|
|
||||||
|
|
||||||
:Target_clean
|
|
||||||
echo *** cleaning ...
|
|
||||||
rmdir /S /Q bin
|
|
||||||
goto :Exit_OK
|
|
||||||
|
|
||||||
|
|
||||||
:Error_FasmFailed
|
|
||||||
echo error: fasm execution failed
|
|
||||||
erase lang.inc
|
|
||||||
pause
|
|
||||||
exit 1
|
|
||||||
|
|
||||||
:Exit_OK
|
|
||||||
echo all operations has been done
|
|
||||||
pause
|
|
||||||
exit 0
|
|
@ -1,14 +0,0 @@
|
|||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
;; ;;
|
|
||||||
;; Copyright (C) KolibriOS team 2004-2007. All rights reserved. ;;
|
|
||||||
;; Distributed under terms of the GNU General Public License ;;
|
|
||||||
;; ;;
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
|
|
||||||
|
|
||||||
; Full ASCII code font
|
|
||||||
; only õ and ä added
|
|
||||||
; Kaitz
|
|
||||||
ET_FNT:
|
|
||||||
fontfile file "ETFONT.FNT"
|
|
||||||
|
|
@ -1,814 +0,0 @@
|
|||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
;; ;;
|
|
||||||
;; Last modify Alexey Teplov <Lrz> 2008. All rights reserved. ;;
|
|
||||||
;; Copyright (C) KolibriOS team 2004-2007. All rights reserved. ;;
|
|
||||||
;; Copyright (C) MenuetOS 2000-2004 Ville Mikael Turjanmaa ;;
|
|
||||||
;; Distributed under terms of the GNU General Public License ;;
|
|
||||||
;; ;;
|
|
||||||
;; kolibri_ldm.asm the module for Secondary Loader ;;
|
|
||||||
;; ;;
|
|
||||||
;; KolibriOS 16-bit loader module, ;;
|
|
||||||
;; based on bootcode for KolibriOS ;;
|
|
||||||
;; ;;
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
|
|
||||||
include "lang.inc"
|
|
||||||
|
|
||||||
macro _setcursor row,column
|
|
||||||
{
|
|
||||||
mov dx, row*256 + column
|
|
||||||
call setcursor
|
|
||||||
}
|
|
||||||
long_v_table equ 9 ;long of visible video table
|
|
||||||
size_of_step equ 10
|
|
||||||
d80x25_bottom_num equ 3
|
|
||||||
d80x25_top_num equ 4
|
|
||||||
;It's a module for Secondary Loader to load kolibri OS
|
|
||||||
;
|
|
||||||
start_of_code:
|
|
||||||
cld
|
|
||||||
; \begin{diamond}[02.12.2005]
|
|
||||||
; if bootloader sets ax = 'KL', then ds:si points to loader block
|
|
||||||
; cmp ax, 'KL'
|
|
||||||
; jnz @f
|
|
||||||
; mov word [cs:cfgmanager.loader_block], si
|
|
||||||
; mov word [cs:cfgmanager.loader_block+2], ds
|
|
||||||
;@@:
|
|
||||||
; \end{diamond}[02.12.2005]
|
|
||||||
|
|
||||||
; if bootloader sets cx = 'HA' and dx = 'RD', then bx contains identifier of source hard disk
|
|
||||||
; (see comment to bx_from_load)
|
|
||||||
; cmp cx, 'HA'
|
|
||||||
; jnz no_hd_load
|
|
||||||
; cmp dx,'RD'
|
|
||||||
; jnz no_hd_load
|
|
||||||
; mov word [cs:bx_from_load], bx ; {SPraid}[13.03.2007]
|
|
||||||
;no_hd_load:
|
|
||||||
|
|
||||||
; set up stack
|
|
||||||
push cs
|
|
||||||
pop ss
|
|
||||||
xor ax, ax
|
|
||||||
mov sp, ax
|
|
||||||
; mov ax, 3000h
|
|
||||||
; mov ss, ax
|
|
||||||
; mov sp, 0EC00h
|
|
||||||
; set up segment registers
|
|
||||||
push cs
|
|
||||||
pop ds
|
|
||||||
push cs
|
|
||||||
pop es
|
|
||||||
|
|
||||||
; set videomode
|
|
||||||
mov ax, 3
|
|
||||||
int 0x10
|
|
||||||
|
|
||||||
;if lang eq ru
|
|
||||||
; Load & set russian VGA font (RU.INC)
|
|
||||||
mov bp, RU_FNT1 ; RU_FNT1 - First part
|
|
||||||
mov bx, 1000h ; 768 bytes
|
|
||||||
mov cx, 30h ; 48 symbols
|
|
||||||
mov dx, 80h ; 128 - position of first symbol
|
|
||||||
mov ax, 1100h
|
|
||||||
int 10h
|
|
||||||
|
|
||||||
mov bp, RU_FNT2 ; RU_FNT2 -Second part
|
|
||||||
mov bx, 1000h ; 512 bytes
|
|
||||||
mov cx, 20h ; 32 symbols
|
|
||||||
mov dx, 0E0h ; 224 - position of first symbol
|
|
||||||
mov ax, 1100h
|
|
||||||
int 10h
|
|
||||||
; End set VGA russian font
|
|
||||||
;else if lang eq et
|
|
||||||
; mov bp, ET_FNT ; ET_FNT1
|
|
||||||
; mov bx, 1000h ;
|
|
||||||
; mov cx, 255 ; 256 symbols
|
|
||||||
; xor dx, dx ; 0 - position of first symbol
|
|
||||||
; mov ax, 1100h
|
|
||||||
; int 10h
|
|
||||||
;end if
|
|
||||||
|
|
||||||
; draw frames
|
|
||||||
push 0xb800
|
|
||||||
pop es
|
|
||||||
xor di, di
|
|
||||||
mov ah, 1*16+15
|
|
||||||
|
|
||||||
; draw top
|
|
||||||
mov si, d80x25_top
|
|
||||||
mov cx, d80x25_top_num * 80
|
|
||||||
@@:
|
|
||||||
lodsb
|
|
||||||
stosw
|
|
||||||
loop @b
|
|
||||||
; draw spaces
|
|
||||||
mov si, space_msg
|
|
||||||
mov dx, 25 - d80x25_top_num - d80x25_bottom_num
|
|
||||||
dfl1:
|
|
||||||
push si
|
|
||||||
mov cx, 80
|
|
||||||
@@:
|
|
||||||
lodsb
|
|
||||||
stosw
|
|
||||||
loop @b
|
|
||||||
pop si
|
|
||||||
dec dx
|
|
||||||
jnz dfl1
|
|
||||||
; draw bottom
|
|
||||||
mov si, d80x25_bottom
|
|
||||||
mov cx, d80x25_bottom_num * 80
|
|
||||||
@@:
|
|
||||||
lodsb
|
|
||||||
stosw
|
|
||||||
loop @b
|
|
||||||
|
|
||||||
mov byte [space_msg+80], 0 ; now space_msg is null terminated
|
|
||||||
|
|
||||||
_setcursor d80x25_top_num,0
|
|
||||||
|
|
||||||
|
|
||||||
; TEST FOR 386+
|
|
||||||
|
|
||||||
mov bx, 0x4000
|
|
||||||
pushf
|
|
||||||
pop ax
|
|
||||||
mov dx, ax
|
|
||||||
xor ax, bx
|
|
||||||
push ax
|
|
||||||
popf
|
|
||||||
pushf
|
|
||||||
pop ax
|
|
||||||
and ax, bx
|
|
||||||
and dx, bx
|
|
||||||
cmp ax, dx
|
|
||||||
jnz cpugood
|
|
||||||
mov si, not386
|
|
||||||
sayerr:
|
|
||||||
call print
|
|
||||||
jmp $
|
|
||||||
cpugood:
|
|
||||||
|
|
||||||
push 0
|
|
||||||
popf
|
|
||||||
sti
|
|
||||||
|
|
||||||
; set up esp
|
|
||||||
movzx esp, sp
|
|
||||||
|
|
||||||
push 0
|
|
||||||
pop es
|
|
||||||
and word [es:BOOT_IDE_BASE_ADDR], 0
|
|
||||||
; \begin{Mario79}
|
|
||||||
; find HDD IDE DMA PCI device
|
|
||||||
; check for PCI BIOS
|
|
||||||
mov ax, 0xB101
|
|
||||||
int 0x1A
|
|
||||||
jc .nopci
|
|
||||||
cmp edx, 'PCI '
|
|
||||||
jnz .nopci
|
|
||||||
; find PCI class code
|
|
||||||
; class 1 = mass storage
|
|
||||||
; subclass 1 = IDE controller
|
|
||||||
; a) class 1, subclass 1, programming interface 0x80
|
|
||||||
mov ax, 0xB103
|
|
||||||
mov ecx, 1*10000h + 1*100h + 0x80
|
|
||||||
xor si, si ; device index = 0
|
|
||||||
int 0x1A
|
|
||||||
jnc .found
|
|
||||||
; b) class 1, subclass 1, programming interface 0x8A
|
|
||||||
mov ax, 0xB103
|
|
||||||
mov ecx, 1*10000h + 1*100h + 0x8A
|
|
||||||
xor si, si ; device index = 0
|
|
||||||
int 0x1A
|
|
||||||
jnc .found
|
|
||||||
; c) class 1, subclass 1, programming interface 0x85
|
|
||||||
mov ax, 0xB103
|
|
||||||
mov ecx, 1*10000h + 1*100h + 0x85
|
|
||||||
xor si, si
|
|
||||||
int 0x1A
|
|
||||||
jc .nopci
|
|
||||||
.found:
|
|
||||||
; get memory base
|
|
||||||
mov ax, 0xB10A
|
|
||||||
mov di, 0x20 ; memory base is config register at 0x20
|
|
||||||
int 0x1A
|
|
||||||
jc .nopci
|
|
||||||
and cx, 0xFFF0 ; clear address decode type
|
|
||||||
mov [es:BOOT_IDE_BASE_ADDR], cx
|
|
||||||
.nopci:
|
|
||||||
; \end{Mario79}
|
|
||||||
|
|
||||||
mov al, 0xf6 ; Ñáðîñ êëàâèàòóðû, ðàçðåøèòü ñêàíèðîâàíèå
|
|
||||||
out 0x60, al
|
|
||||||
xor cx, cx
|
|
||||||
wait_loop: ; variant 2
|
|
||||||
; reading state of port of 8042 controller
|
|
||||||
in al, 64h
|
|
||||||
and al, 00000010b ; ready flag
|
|
||||||
; wait until 8042 controller is ready
|
|
||||||
loopnz wait_loop
|
|
||||||
|
|
||||||
;;;/diamond today 5.02.2008
|
|
||||||
; set keyboard typematic rate & delay
|
|
||||||
mov al, 0xf3
|
|
||||||
out 0x60, al
|
|
||||||
xor cx, cx
|
|
||||||
@@:
|
|
||||||
in al, 64h
|
|
||||||
test al, 2
|
|
||||||
loopnz @b
|
|
||||||
mov al, 0
|
|
||||||
out 0x60, al
|
|
||||||
xor cx, cx
|
|
||||||
@@:
|
|
||||||
in al, 64h
|
|
||||||
test al, 2
|
|
||||||
loopnz @b
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
; --------------- APM ---------------------
|
|
||||||
and word [es:BOOT_APM_VERSION], 0 ; ver = 0.0 (APM not found)
|
|
||||||
mov ax, 0x5300
|
|
||||||
xor bx, bx
|
|
||||||
int 0x15
|
|
||||||
jc apm_end ; APM not found
|
|
||||||
test cx, 2
|
|
||||||
jz apm_end ; APM 32-bit protected-mode interface not supported
|
|
||||||
mov [es:BOOT_APM_VERSION], ax ; Save APM Version
|
|
||||||
mov [es:BOOT_APM_FLAGS], cx ; Save APM flags
|
|
||||||
|
|
||||||
; Write APM ver ----
|
|
||||||
and ax, 0xf0f
|
|
||||||
add ax, '00'
|
|
||||||
mov si, msg_apm
|
|
||||||
mov [si + 5], ah
|
|
||||||
mov [si + 7], al
|
|
||||||
_setcursor 0, 3
|
|
||||||
call printplain
|
|
||||||
; ------------------
|
|
||||||
|
|
||||||
mov ax, 0x5304 ; Disconnect interface
|
|
||||||
xor bx, bx
|
|
||||||
int 0x15
|
|
||||||
mov ax, 0x5303 ; Connect 32 bit mode interface
|
|
||||||
xor bx, bx
|
|
||||||
int 0x15
|
|
||||||
|
|
||||||
mov [es:BOOT_APM_ENTRY], ebx
|
|
||||||
mov [es:BOOT_APM_CODE_32], ax
|
|
||||||
mov [es:BOOT_APM_CODE_16], cx
|
|
||||||
mov [es:BOOT_APM_DATA_16], dx
|
|
||||||
|
|
||||||
apm_end:
|
|
||||||
_setcursor d80x25_top_num, 0
|
|
||||||
|
|
||||||
;CHECK current of code
|
|
||||||
cmp [cfgmanager.loader_block], -1
|
|
||||||
jz noloaderblock
|
|
||||||
les bx, [cfgmanager.loader_block]
|
|
||||||
cmp byte [es:bx], 1
|
|
||||||
mov si, loader_block_error
|
|
||||||
jnz sayerr
|
|
||||||
push 0
|
|
||||||
pop es
|
|
||||||
|
|
||||||
noloaderblock:
|
|
||||||
; DISPLAY VESA INFORMATION
|
|
||||||
call print_vesa_info
|
|
||||||
call calc_vmodes_table
|
|
||||||
call check_first_parm ;check and enable cursor_pos
|
|
||||||
|
|
||||||
|
|
||||||
; \begin{diamond}[30.11.2005]
|
|
||||||
cfgmanager:
|
|
||||||
; settings:
|
|
||||||
; a) preboot_graph = graphical mode
|
|
||||||
; preboot_gprobe = probe this mode?
|
|
||||||
; b) preboot_dma = use DMA access?
|
|
||||||
; c) preboot_vrrm = use VRR?
|
|
||||||
|
|
||||||
; determine default settings
|
|
||||||
mov [.bSettingsChanged], 0
|
|
||||||
|
|
||||||
;.preboot_gr_end:
|
|
||||||
mov di, preboot_device
|
|
||||||
; if image in memory is present and [preboot_device] is uninitialized,
|
|
||||||
; set it to use this preloaded image
|
|
||||||
cmp byte [di], 0
|
|
||||||
jnz .preboot_device_inited
|
|
||||||
cmp [.loader_block], -1
|
|
||||||
jz @f
|
|
||||||
les bx, [.loader_block]
|
|
||||||
test byte [es:bx+1], 1
|
|
||||||
jz @f
|
|
||||||
mov byte [di], 3
|
|
||||||
jmp .preboot_device_inited
|
|
||||||
@@:
|
|
||||||
; otherwise, set [preboot_device] to 1 (default value - boot from floppy)
|
|
||||||
mov byte [di], 1
|
|
||||||
.preboot_device_inited:
|
|
||||||
; following 6 lines set variables to 1 if its current value is 0
|
|
||||||
cmp byte [di+preboot_dma-preboot_device], 1
|
|
||||||
adc byte [di+preboot_dma-preboot_device], 0
|
|
||||||
cmp byte [di+preboot_biosdisk-preboot_device], 1
|
|
||||||
adc byte [di+preboot_biosdisk-preboot_device], 0
|
|
||||||
cmp byte [di+preboot_vrrm-preboot_device], 1
|
|
||||||
adc byte [di+preboot_vrrm-preboot_device], 0
|
|
||||||
; notify user
|
|
||||||
_setcursor 5,2
|
|
||||||
|
|
||||||
mov si, linef
|
|
||||||
call printplain
|
|
||||||
mov si, start_msg
|
|
||||||
call print
|
|
||||||
mov si, time_msg
|
|
||||||
call print
|
|
||||||
; get start time
|
|
||||||
call .gettime
|
|
||||||
mov [.starttime], eax
|
|
||||||
mov word [.timer], .newtimer
|
|
||||||
mov word [.timer+2], cs
|
|
||||||
.printcfg:
|
|
||||||
_setcursor 9,0
|
|
||||||
mov si, current_cfg_msg
|
|
||||||
call print
|
|
||||||
mov si, curvideo_msg
|
|
||||||
call print
|
|
||||||
|
|
||||||
call draw_current_vmode
|
|
||||||
|
|
||||||
mov si, usebd_msg
|
|
||||||
cmp [preboot_biosdisk], 1
|
|
||||||
call .say_on_off
|
|
||||||
mov si, vrrm_msg
|
|
||||||
cmp [preboot_vrrm], 1
|
|
||||||
call .say_on_off
|
|
||||||
; mov si, preboot_device_msg
|
|
||||||
; call print
|
|
||||||
; mov al, [preboot_device]
|
|
||||||
; and eax, 7
|
|
||||||
; mov si, [preboot_device_msgs+eax*2]
|
|
||||||
; call printplain
|
|
||||||
.show_remarks:
|
|
||||||
; show remarks in gray color
|
|
||||||
mov di, ((21-num_remarks)*80 + 2)*2
|
|
||||||
push 0xB800
|
|
||||||
pop es
|
|
||||||
mov cx, num_remarks
|
|
||||||
mov si, remarks
|
|
||||||
.write_remarks:
|
|
||||||
lodsw
|
|
||||||
push si
|
|
||||||
xchg ax, si
|
|
||||||
mov ah, 1*16+7 ; background: blue (1), foreground: gray (7)
|
|
||||||
push di
|
|
||||||
.write_remark:
|
|
||||||
lodsb
|
|
||||||
test al, al
|
|
||||||
jz @f
|
|
||||||
stosw
|
|
||||||
jmp .write_remark
|
|
||||||
@@:
|
|
||||||
pop di
|
|
||||||
pop si
|
|
||||||
add di, 80*2
|
|
||||||
loop .write_remarks
|
|
||||||
.wait:
|
|
||||||
_setcursor 25,0 ; out of screen
|
|
||||||
; set timer interrupt handler
|
|
||||||
cli
|
|
||||||
push 0
|
|
||||||
pop es
|
|
||||||
push dword [es:8*4]
|
|
||||||
pop dword [.oldtimer]
|
|
||||||
push dword [.timer]
|
|
||||||
pop dword [es:8*4]
|
|
||||||
; mov eax, [es:8*4]
|
|
||||||
; mov [.oldtimer], eax
|
|
||||||
; mov eax, [.timer]
|
|
||||||
; mov [es:8*4], eax
|
|
||||||
sti
|
|
||||||
; wait for keypressed
|
|
||||||
xor ax, ax
|
|
||||||
int 16h
|
|
||||||
push ax
|
|
||||||
; restore timer interrupt
|
|
||||||
; push 0
|
|
||||||
; pop es
|
|
||||||
mov eax, [.oldtimer]
|
|
||||||
mov [es:8*4], eax
|
|
||||||
mov [.timer], eax
|
|
||||||
_setcursor 7,0
|
|
||||||
mov si, space_msg
|
|
||||||
call printplain
|
|
||||||
; clear remarks and restore normal attributes
|
|
||||||
push es
|
|
||||||
mov di, ((21-num_remarks)*80 + 2)*2
|
|
||||||
push 0xB800
|
|
||||||
pop es
|
|
||||||
mov cx, num_remarks
|
|
||||||
mov ax, ' ' + (1*16 + 15)*100h
|
|
||||||
@@:
|
|
||||||
push cx
|
|
||||||
mov cx, 76
|
|
||||||
rep stosw
|
|
||||||
pop cx
|
|
||||||
add di, 4*2
|
|
||||||
loop @b
|
|
||||||
pop es
|
|
||||||
pop ax
|
|
||||||
; switch on key
|
|
||||||
cmp al, 13
|
|
||||||
jz .continue
|
|
||||||
or al, 20h
|
|
||||||
cmp al, 'a'
|
|
||||||
jz .change_a
|
|
||||||
cmp al, 'b'
|
|
||||||
jz .change_b
|
|
||||||
cmp al, 'c'
|
|
||||||
jnz .show_remarks
|
|
||||||
|
|
||||||
_setcursor 15,0
|
|
||||||
mov si, vrrmprint
|
|
||||||
call print
|
|
||||||
mov bx, '12'
|
|
||||||
call getkey
|
|
||||||
mov [preboot_vrrm], al
|
|
||||||
_setcursor 12,0
|
|
||||||
.d:
|
|
||||||
mov [.bSettingsChanged], 1
|
|
||||||
call clear_vmodes_table ;clear vmodes_table
|
|
||||||
jmp .printcfg
|
|
||||||
.change_a:
|
|
||||||
.loops:
|
|
||||||
call draw_vmodes_table
|
|
||||||
_setcursor 25,0 ; out of screen
|
|
||||||
xor ax, ax
|
|
||||||
int 0x16
|
|
||||||
; call clear_table_cursor ;clear current position of cursor
|
|
||||||
|
|
||||||
mov si, word [cursor_pos]
|
|
||||||
|
|
||||||
cmp ah, 0x48;x,0x48E0 ; up
|
|
||||||
jne .down
|
|
||||||
cmp si, modes_table
|
|
||||||
jbe .loops
|
|
||||||
sub word [cursor_pos], size_of_step
|
|
||||||
jmp .loops
|
|
||||||
|
|
||||||
.down:
|
|
||||||
cmp ah, 0x50;x,0x50E0 ; down
|
|
||||||
jne .pgup
|
|
||||||
cmp word[es:si+10], -1
|
|
||||||
je .loops
|
|
||||||
add word [cursor_pos], size_of_step
|
|
||||||
jmp .loops
|
|
||||||
|
|
||||||
.pgup:
|
|
||||||
cmp ah, 0x49 ; page up
|
|
||||||
jne .pgdn
|
|
||||||
sub si, size_of_step*long_v_table
|
|
||||||
cmp si, modes_table
|
|
||||||
jae @f
|
|
||||||
mov si, modes_table
|
|
||||||
@@:
|
|
||||||
mov word [cursor_pos], si
|
|
||||||
mov si, word [home_cursor]
|
|
||||||
sub si, size_of_step*long_v_table
|
|
||||||
cmp si, modes_table
|
|
||||||
jae @f
|
|
||||||
mov si, modes_table
|
|
||||||
@@:
|
|
||||||
mov word [home_cursor], si
|
|
||||||
jmp .loops
|
|
||||||
|
|
||||||
.pgdn:
|
|
||||||
cmp ah, 0x51 ; page down
|
|
||||||
jne .enter
|
|
||||||
mov ax, [end_cursor]
|
|
||||||
add si, size_of_step*long_v_table
|
|
||||||
cmp si, ax
|
|
||||||
jb @f
|
|
||||||
mov si, ax
|
|
||||||
sub si, size_of_step
|
|
||||||
@@:
|
|
||||||
mov word [cursor_pos], si
|
|
||||||
mov si, word [home_cursor]
|
|
||||||
sub ax, size_of_step*long_v_table
|
|
||||||
add si, size_of_step*long_v_table
|
|
||||||
cmp si, ax
|
|
||||||
jb @f
|
|
||||||
mov si, ax
|
|
||||||
@@:
|
|
||||||
mov word [home_cursor], si
|
|
||||||
jmp .loops
|
|
||||||
|
|
||||||
.enter:
|
|
||||||
cmp al, 0x0D;x,0x1C0D ; enter
|
|
||||||
jne .loops
|
|
||||||
push word [cursor_pos]
|
|
||||||
pop bp
|
|
||||||
push word [es:bp]
|
|
||||||
pop word [x_save]
|
|
||||||
push word [es:bp+2]
|
|
||||||
pop word [y_save]
|
|
||||||
push word [es:bp+6]
|
|
||||||
pop word [number_vm]
|
|
||||||
mov word [preboot_graph], bp ;save choose
|
|
||||||
|
|
||||||
jmp .d
|
|
||||||
|
|
||||||
.change_b:
|
|
||||||
_setcursor 15,0
|
|
||||||
; mov si, ask_dma
|
|
||||||
; call print
|
|
||||||
; mov bx, '13'
|
|
||||||
; call getkey
|
|
||||||
; mov [preboot_dma], al
|
|
||||||
mov si, ask_bd
|
|
||||||
call print
|
|
||||||
mov bx, '12'
|
|
||||||
call getkey
|
|
||||||
mov [preboot_biosdisk], al
|
|
||||||
_setcursor 11,0
|
|
||||||
jmp .d
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
.say_on_off:
|
|
||||||
pushf
|
|
||||||
call print
|
|
||||||
mov si, on_msg
|
|
||||||
popf
|
|
||||||
jz @f
|
|
||||||
mov si, off_msg
|
|
||||||
@@:
|
|
||||||
jmp printplain
|
|
||||||
; novesa and vervesa strings are not used at the moment of executing this code
|
|
||||||
virtual at novesa
|
|
||||||
.oldtimer dd ?
|
|
||||||
.starttime dd ?
|
|
||||||
.bSettingsChanged db ?
|
|
||||||
.timer dd ?
|
|
||||||
end virtual
|
|
||||||
.loader_block dd -1
|
|
||||||
.gettime:
|
|
||||||
mov ah, 0
|
|
||||||
int 1Ah
|
|
||||||
xchg ax, cx
|
|
||||||
shl eax, 10h
|
|
||||||
xchg ax, dx
|
|
||||||
ret
|
|
||||||
.newtimer:
|
|
||||||
push ds
|
|
||||||
push cs
|
|
||||||
pop ds
|
|
||||||
pushf
|
|
||||||
call [.oldtimer]
|
|
||||||
pushad
|
|
||||||
call .gettime
|
|
||||||
sub eax, [.starttime]
|
|
||||||
sub ax, 18*5
|
|
||||||
jae .timergo
|
|
||||||
neg ax
|
|
||||||
add ax, 18-1
|
|
||||||
mov bx, 18
|
|
||||||
xor dx, dx
|
|
||||||
div bx
|
|
||||||
if lang eq ru
|
|
||||||
; ¯®¤®¦¤¨â¥ 5 ᥪã¤, 4/3/2 ᥪã¤ë, 1 ᥪã¤ã
|
|
||||||
cmp al, 5
|
|
||||||
mov cl, ' '
|
|
||||||
jae @f
|
|
||||||
cmp al, 1
|
|
||||||
mov cl, 'ã'
|
|
||||||
jz @f
|
|
||||||
mov cl, 'ë'
|
|
||||||
@@:
|
|
||||||
mov [time_str+9], cl
|
|
||||||
else if lang eq et
|
|
||||||
cmp al, 1
|
|
||||||
ja @f
|
|
||||||
mov [time_str+9], ' '
|
|
||||||
mov [time_str+10], ' '
|
|
||||||
@@:
|
|
||||||
else
|
|
||||||
; wait 5/4/3/2 seconds, 1 second
|
|
||||||
cmp al, 1
|
|
||||||
mov cl, 's'
|
|
||||||
ja @f
|
|
||||||
mov cl, ' '
|
|
||||||
@@:
|
|
||||||
mov [time_str+9], cl
|
|
||||||
end if
|
|
||||||
add al, '0'
|
|
||||||
mov [time_str+1], al
|
|
||||||
mov si, time_msg
|
|
||||||
_setcursor 7,0
|
|
||||||
call print
|
|
||||||
_setcursor 25,0
|
|
||||||
popad
|
|
||||||
pop ds
|
|
||||||
iret
|
|
||||||
.timergo:
|
|
||||||
push 0
|
|
||||||
pop es
|
|
||||||
mov eax, [.oldtimer]
|
|
||||||
mov [es:8*4], eax
|
|
||||||
mov sp, 0EC00h
|
|
||||||
.continue:
|
|
||||||
sti
|
|
||||||
_setcursor 6,0
|
|
||||||
mov si, space_msg
|
|
||||||
call printplain
|
|
||||||
call printplain
|
|
||||||
_setcursor 6,0
|
|
||||||
mov si, loading_msg
|
|
||||||
call print
|
|
||||||
_setcursor 15,0
|
|
||||||
cmp [.bSettingsChanged], 0
|
|
||||||
jz .load
|
|
||||||
cmp [.loader_block], -1
|
|
||||||
jz .load
|
|
||||||
les bx, [.loader_block]
|
|
||||||
mov eax, [es:bx+3]
|
|
||||||
push ds
|
|
||||||
pop es
|
|
||||||
test eax, eax
|
|
||||||
jz .load
|
|
||||||
push eax
|
|
||||||
mov si, save_quest
|
|
||||||
call print
|
|
||||||
.waityn:
|
|
||||||
mov ah, 0
|
|
||||||
int 16h
|
|
||||||
or al, 20h
|
|
||||||
cmp al, 'n'
|
|
||||||
jz .loadc
|
|
||||||
cmp al, 'y'
|
|
||||||
jnz .waityn
|
|
||||||
call putchar
|
|
||||||
mov byte [space_msg+80], 186
|
|
||||||
pop eax
|
|
||||||
push cs
|
|
||||||
push .cont
|
|
||||||
push eax
|
|
||||||
retf
|
|
||||||
.loadc:
|
|
||||||
pop eax
|
|
||||||
.cont:
|
|
||||||
push cs
|
|
||||||
pop ds
|
|
||||||
mov si, space_msg
|
|
||||||
mov byte [si+80], 0
|
|
||||||
_setcursor 15,0
|
|
||||||
call printplain
|
|
||||||
_setcursor 15,0
|
|
||||||
.load:
|
|
||||||
; \end{diamond}[02.12.2005]
|
|
||||||
|
|
||||||
; ASK GRAPHICS MODE
|
|
||||||
|
|
||||||
call set_vmode
|
|
||||||
|
|
||||||
; GRAPHICS ACCELERATION
|
|
||||||
; force yes
|
|
||||||
mov [es:BOOT_MTRR], byte 1
|
|
||||||
|
|
||||||
; DMA ACCESS TO HD
|
|
||||||
|
|
||||||
mov al, [preboot_dma]
|
|
||||||
mov [es:BOOT_DMA], al
|
|
||||||
|
|
||||||
; VRR_M USE
|
|
||||||
|
|
||||||
; mov al, [preboot_vrrm]
|
|
||||||
; mov [es:0x9030], al
|
|
||||||
|
|
||||||
; BOOT DEVICE
|
|
||||||
|
|
||||||
mov al, [preboot_device]
|
|
||||||
dec al
|
|
||||||
mov [boot_dev], al
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;;;;;;;;;;; set videomode
|
|
||||||
xor ax, ax
|
|
||||||
mov es, ax
|
|
||||||
|
|
||||||
mov ax, [es:BOOT_VESA_MODE] ; vga & 320x200
|
|
||||||
mov bx, ax
|
|
||||||
cmp ax, 0x13
|
|
||||||
je setgr
|
|
||||||
cmp ax, 0x12
|
|
||||||
je setgr
|
|
||||||
mov ax, 0x4f02 ; Vesa
|
|
||||||
setgr:
|
|
||||||
int 0x10
|
|
||||||
test ah, ah
|
|
||||||
mov si, fatalsel
|
|
||||||
jnz v_mode_error
|
|
||||||
; set mode 0x12 graphics registers:
|
|
||||||
cmp bx, 0x12
|
|
||||||
jne gmok2
|
|
||||||
|
|
||||||
mov al, 0x05
|
|
||||||
mov dx, 0x03ce
|
|
||||||
push dx
|
|
||||||
out dx, al ; select GDC mode register
|
|
||||||
mov al, 0x02
|
|
||||||
inc dx
|
|
||||||
out dx, al ; set write mode 2
|
|
||||||
|
|
||||||
mov al, 0x02
|
|
||||||
mov dx, 0x03c4
|
|
||||||
out dx, al ; select VGA sequencer map mask register
|
|
||||||
mov al, 0x0f
|
|
||||||
inc dx
|
|
||||||
out dx, al ; set mask for all planes 0-3
|
|
||||||
|
|
||||||
mov al, 0x08
|
|
||||||
pop dx
|
|
||||||
out dx, al ; select GDC bit mask register
|
|
||||||
; for writes to 0x03cf
|
|
||||||
gmok2:
|
|
||||||
push ds
|
|
||||||
pop es
|
|
||||||
|
|
||||||
jmp $
|
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
;data
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
include "lang.inc"
|
|
||||||
include "bootstr.inc" ; language-independent boot messages
|
|
||||||
;if lang eq en
|
|
||||||
;include "booteng.inc" ; english system boot messages
|
|
||||||
;else if lang eq ru
|
|
||||||
include "bootru.inc" ; russian system boot messages
|
|
||||||
include "ru.inc" ; Russian font
|
|
||||||
;else if lang eq et
|
|
||||||
;include "bootet.inc" ; estonian system boot messages
|
|
||||||
;include "et.inc" ; Estonian font
|
|
||||||
;else
|
|
||||||
;include "bootge.inc" ; german system boot messages
|
|
||||||
;end if
|
|
||||||
|
|
||||||
include 'macros.inc'
|
|
||||||
include 'bootvesa.inc'
|
|
||||||
|
|
||||||
include "preboot.inc"
|
|
||||||
|
|
||||||
|
|
||||||
setcursor:
|
|
||||||
; in: dl=column, dh=row
|
|
||||||
mov ah, 2
|
|
||||||
mov bh, 0
|
|
||||||
int 10h
|
|
||||||
ret
|
|
||||||
|
|
||||||
putchar:
|
|
||||||
; in: al=character
|
|
||||||
mov ah, 0Eh
|
|
||||||
mov bh, 0
|
|
||||||
int 10h
|
|
||||||
ret
|
|
||||||
|
|
||||||
print:
|
|
||||||
; in: si->string
|
|
||||||
mov al, 186
|
|
||||||
call putchar
|
|
||||||
mov al, ' '
|
|
||||||
call putchar
|
|
||||||
|
|
||||||
printplain:
|
|
||||||
; in: si->string
|
|
||||||
pusha
|
|
||||||
lodsb
|
|
||||||
@@:
|
|
||||||
call putchar
|
|
||||||
lodsb
|
|
||||||
cmp al, 0
|
|
||||||
jnz @b
|
|
||||||
popa
|
|
||||||
ret
|
|
||||||
|
|
||||||
getkey:
|
|
||||||
; get number in range [bl,bh] (bl,bh in ['0'..'9'])
|
|
||||||
; in: bx=range
|
|
||||||
; out: ax=digit (1..9, 10 for 0)
|
|
||||||
mov ah, 0
|
|
||||||
int 16h
|
|
||||||
cmp al, bl
|
|
||||||
jb getkey
|
|
||||||
cmp al, bh
|
|
||||||
ja getkey
|
|
||||||
push ax
|
|
||||||
call putchar
|
|
||||||
pop ax
|
|
||||||
and ax, 0Fh
|
|
||||||
jnz @f
|
|
||||||
mov al, 10
|
|
||||||
@@:
|
|
||||||
ret
|
|
@ -1,86 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
; structure definition helper
|
|
||||||
macro struct name, [arg]
|
|
||||||
{
|
|
||||||
common
|
|
||||||
name@struct equ name
|
|
||||||
struc name arg {
|
|
||||||
}
|
|
||||||
|
|
||||||
macro struct_helper name
|
|
||||||
{
|
|
||||||
match xname,name
|
|
||||||
\{
|
|
||||||
virtual at 0
|
|
||||||
xname xname
|
|
||||||
sizeof.#xname = $ - xname
|
|
||||||
name equ sizeof.#xname
|
|
||||||
end virtual
|
|
||||||
\}
|
|
||||||
}
|
|
||||||
|
|
||||||
ends fix } struct_helper name@struct
|
|
||||||
|
|
||||||
;// mike.dld, 2006-29-01 [
|
|
||||||
|
|
||||||
; macros definition
|
|
||||||
macro diff16 title,l1,l2
|
|
||||||
{
|
|
||||||
local s,d
|
|
||||||
s = l2-l1
|
|
||||||
display title,': 0x'
|
|
||||||
repeat 16
|
|
||||||
d = 48 + s shr ((16-%) shl 2) and $0F
|
|
||||||
if d > 57
|
|
||||||
d = d + 65-57-1
|
|
||||||
end if
|
|
||||||
display d
|
|
||||||
end repeat
|
|
||||||
display 13,10
|
|
||||||
}
|
|
||||||
macro diff10 title,l1,l2
|
|
||||||
{
|
|
||||||
local s,d,z,m
|
|
||||||
s = l2-l1
|
|
||||||
z = 0
|
|
||||||
m = 1000000000
|
|
||||||
display title,': '
|
|
||||||
repeat 10
|
|
||||||
d = '0' + s / m
|
|
||||||
s = s - (s/m)*m
|
|
||||||
m = m / 10
|
|
||||||
if d <> '0'
|
|
||||||
z = 1
|
|
||||||
end if
|
|
||||||
if z <> 0
|
|
||||||
display d
|
|
||||||
end if
|
|
||||||
end repeat
|
|
||||||
display 13,10
|
|
||||||
}
|
|
||||||
|
|
||||||
; \begin{diamond}[29.09.2006]
|
|
||||||
; may be useful for kernel debugging
|
|
||||||
; example 1:
|
|
||||||
; dbgstr 'Hello, World!'
|
|
||||||
; example 2:
|
|
||||||
; dbgstr 'Hello, World!', save_flags
|
|
||||||
macro dbgstr string*, f
|
|
||||||
{
|
|
||||||
local a
|
|
||||||
iglobal_nested
|
|
||||||
a db 'K : ',string,13,10,0
|
|
||||||
endg_nested
|
|
||||||
if ~ f eq
|
|
||||||
pushfd
|
|
||||||
end if
|
|
||||||
push esi
|
|
||||||
mov esi, a
|
|
||||||
call sys_msg_board_str
|
|
||||||
pop esi
|
|
||||||
if ~ f eq
|
|
||||||
popfd
|
|
||||||
end if
|
|
||||||
}
|
|
||||||
; \end{diamond}[29.09.2006]
|
|
@ -1,36 +0,0 @@
|
|||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
;; ;;
|
|
||||||
;; Copyright (C) KolibriOS team 2004-2007. All rights reserved. ;;
|
|
||||||
;; Distributed under terms of the GNU General Public License ;;
|
|
||||||
;; ;;
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
|
|
||||||
|
|
||||||
display_modechg db 0 ; display mode change for text, yes/no (0 or 2)
|
|
||||||
;
|
|
||||||
; !! Important note !!
|
|
||||||
;
|
|
||||||
; Must be set to 2, to avoid two screenmode
|
|
||||||
; changes within a very short period of time.
|
|
||||||
|
|
||||||
display_atboot db 0 ; show boot screen messages ( 2-no )
|
|
||||||
|
|
||||||
preboot_graph dw 0 ; graph mode
|
|
||||||
x_save dw 0 ; x
|
|
||||||
y_save dw 0 ; y
|
|
||||||
number_vm dw 0 ;
|
|
||||||
;pixel_save dw 0 ; per to pixel
|
|
||||||
preboot_gprobe db 0 ; probe vesa3 videomodes (1-no, 2-yes)
|
|
||||||
preboot_vrrm db 0 ; use VRR_M (1-yes, 2- no)
|
|
||||||
preboot_dma db 0 ; use DMA for access to HDD (1-always, 2-only for read, 3-never)
|
|
||||||
preboot_device db 0 ; boot device
|
|
||||||
; (1-floppy 2-harddisk 3-kernel restart 4-format ram disk)
|
|
||||||
;!!!! 0 - autodetect !!!!
|
|
||||||
preboot_blogesc = 0 ; start immediately after bootlog
|
|
||||||
preboot_biosdisk db 0 ; use V86 to access disks through BIOS (1-yes, 2-no)
|
|
||||||
|
|
||||||
; if $>0x200
|
|
||||||
;ERROR: prebooting parameters must fit in first sector!!!
|
|
||||||
; end if
|
|
||||||
;hdsysimage db 'KOLIBRI IMG' ; load from
|
|
||||||
;image_save db 'KOLIBRI IMG' ; save to
|
|
@ -1,123 +0,0 @@
|
|||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
;; ;;
|
|
||||||
;; Copyright (C) KolibriOS team 2004-2007. All rights reserved. ;;
|
|
||||||
;; Distributed under terms of the GNU General Public License ;;
|
|
||||||
;; ;;
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
|
|
||||||
|
|
||||||
; READ RAMDISK IMAGE FROM HD
|
|
||||||
|
|
||||||
cmp [boot_dev+OS_BASE+0x10000], 1
|
|
||||||
jne no_sys_on_hd
|
|
||||||
|
|
||||||
test [DRIVE_DATA+1], byte 0x40
|
|
||||||
jz position_2
|
|
||||||
mov [hdbase], 0x1f0
|
|
||||||
mov [hdid], 0x0
|
|
||||||
mov [hdpos], 1
|
|
||||||
mov [fat32part], 0
|
|
||||||
position_1_1:
|
|
||||||
inc [fat32part]
|
|
||||||
call search_and_read_image
|
|
||||||
cmp [image_retrieved], 1
|
|
||||||
je yes_sys_on_hd
|
|
||||||
movzx eax, byte [DRIVE_DATA+2]
|
|
||||||
cmp [fat32part], eax
|
|
||||||
jle position_1_1
|
|
||||||
position_2:
|
|
||||||
test [DRIVE_DATA+1], byte 0x10
|
|
||||||
jz position_3
|
|
||||||
mov [hdbase], 0x1f0
|
|
||||||
mov [hdid], 0x10
|
|
||||||
mov [hdpos], 2
|
|
||||||
mov [fat32part], 0
|
|
||||||
position_2_1:
|
|
||||||
inc [fat32part]
|
|
||||||
call search_and_read_image
|
|
||||||
cmp [image_retrieved], 1
|
|
||||||
je yes_sys_on_hd
|
|
||||||
movzx eax, byte [DRIVE_DATA+3]
|
|
||||||
cmp eax, [fat32part]
|
|
||||||
jle position_2_1
|
|
||||||
position_3:
|
|
||||||
test [DRIVE_DATA+1], byte 0x4
|
|
||||||
jz position_4
|
|
||||||
mov [hdbase], 0x170
|
|
||||||
mov [hdid], 0x0
|
|
||||||
mov [hdpos], 3
|
|
||||||
mov [fat32part], 0
|
|
||||||
position_3_1:
|
|
||||||
inc [fat32part]
|
|
||||||
call search_and_read_image
|
|
||||||
cmp [image_retrieved], 1
|
|
||||||
je yes_sys_on_hd
|
|
||||||
movzx eax, byte [DRIVE_DATA+4]
|
|
||||||
cmp eax, [fat32part]
|
|
||||||
jle position_3_1
|
|
||||||
position_4:
|
|
||||||
test [DRIVE_DATA+1], byte 0x1
|
|
||||||
jz no_sys_on_hd
|
|
||||||
mov [hdbase], 0x170
|
|
||||||
mov [hdid], 0x10
|
|
||||||
mov [hdpos], 4
|
|
||||||
mov [fat32part], 0
|
|
||||||
position_4_1:
|
|
||||||
inc [fat32part]
|
|
||||||
call search_and_read_image
|
|
||||||
cmp [image_retrieved], 1
|
|
||||||
je yes_sys_on_hd
|
|
||||||
movzx eax, byte [DRIVE_DATA+5]
|
|
||||||
cmp eax, [fat32part]
|
|
||||||
jle position_4_1
|
|
||||||
jmp yes_sys_on_hd
|
|
||||||
|
|
||||||
search_and_read_image:
|
|
||||||
call set_FAT32_variables
|
|
||||||
mov edx, bootpath
|
|
||||||
call read_image
|
|
||||||
test eax, eax
|
|
||||||
jz image_present
|
|
||||||
mov edx, bootpath2
|
|
||||||
call read_image
|
|
||||||
test eax, eax
|
|
||||||
jz image_present
|
|
||||||
ret
|
|
||||||
image_present:
|
|
||||||
mov [image_retrieved], 1
|
|
||||||
ret
|
|
||||||
|
|
||||||
read_image:
|
|
||||||
mov eax, hdsysimage+OS_BASE+0x10000
|
|
||||||
mov ebx, 1474560/512
|
|
||||||
mov ecx, RAMDISK
|
|
||||||
mov esi, 0
|
|
||||||
mov edi, 12
|
|
||||||
call file_read
|
|
||||||
ret
|
|
||||||
|
|
||||||
image_retrieved db 0
|
|
||||||
counter_of_partitions db 0
|
|
||||||
no_sys_on_hd:
|
|
||||||
; test_to_format_ram_disk (need if not using ram disk)
|
|
||||||
cmp [boot_dev+OS_BASE+0x10000], 3
|
|
||||||
jne not_format_ram_disk
|
|
||||||
; format_ram_disk
|
|
||||||
mov edi, RAMDISK
|
|
||||||
mov ecx, 0x1080
|
|
||||||
xor eax, eax
|
|
||||||
@@:
|
|
||||||
stosd
|
|
||||||
loop @b
|
|
||||||
|
|
||||||
mov ecx, 0x58F7F
|
|
||||||
mov eax, 0xF6F6F6F6
|
|
||||||
@@:
|
|
||||||
stosd
|
|
||||||
loop @b
|
|
||||||
|
|
||||||
mov [RAMDISK+0x200], dword 0xFFFFF0 ; fat table
|
|
||||||
mov [RAMDISK+0x4200], dword 0xFFFFF0
|
|
||||||
|
|
||||||
not_format_ram_disk:
|
|
||||||
yes_sys_on_hd:
|
|
@ -1,100 +0,0 @@
|
|||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
;; ;;
|
|
||||||
;; Copyright (C) KolibriOS team 2004-2007. All rights reserved. ;;
|
|
||||||
;; Distributed under terms of the GNU General Public License ;;
|
|
||||||
;; ;;
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
|
|
||||||
|
|
||||||
; Generated by RUFNT.EXE
|
|
||||||
; By BadBugsKiller (C)
|
|
||||||
; Modifyed by BadBugsKiller 12.01.2004 17:45
|
|
||||||
; Øðèôò óìåíüøåí â ðàçìåðå è òåïåðü ñîñòîèò èç 2-óõ ÷àñòåé,
|
|
||||||
; ñîäåðæàùèõ òîëüêî ñèìâîëû ðóññêîãî àëôàâèòà.
|
|
||||||
; ñèìâîëû â êîäèðîâêå ASCII (ÄÎÑ'îâñêàÿ), êîäîâàÿ ñòðàíèöà 866.
|
|
||||||
RU_FNT1:
|
|
||||||
db 0x00, 0x00, 0x1E, 0x36, 0x66, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0xFE, 0x62, 0x60, 0x60, 0x7C, 0x66, 0x66, 0x66, 0x66, 0xFC, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0xFC, 0x66, 0x66, 0x66, 0x7C, 0x66, 0x66, 0x66, 0x66, 0xFC, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0xFE, 0x66, 0x62, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xF0, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0x1E, 0x36, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xFF, 0xC3, 0x81, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0xFE, 0x66, 0x62, 0x68, 0x78, 0x68, 0x60, 0x62, 0x66, 0xFE, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0xDB, 0xDB, 0x5A, 0x5A, 0x7E, 0x7E, 0x5A, 0xDB, 0xDB, 0xDB, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0x7C, 0xC6, 0x06, 0x06, 0x3C, 0x06, 0x06, 0x06, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xCE, 0xDE, 0xF6, 0xE6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x6C, 0x38, 0xC6, 0xC6, 0xC6, 0xCE, 0xDE, 0xF6, 0xE6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0xE6, 0x66, 0x6C, 0x6C, 0x78, 0x78, 0x6C, 0x6C, 0x66, 0xE6, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0x1F, 0x36, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xCF, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0xC6, 0xEE, 0xFE, 0xFE, 0xD6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00
|
|
||||||
|
|
||||||
db 0x00, 0x00, 0xFC, 0x66, 0x66, 0x66, 0x66, 0x7C, 0x60, 0x60, 0x60, 0xF0, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xC0, 0xC0, 0xC0, 0xC0, 0xC2, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0xFF, 0xDB, 0x99, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x06, 0x06, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0x7E, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x7E, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0xC6, 0xC6, 0x6C, 0x7C, 0x38, 0x38, 0x7C, 0x6C, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xFF, 0x03, 0x03, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xFE, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xFF, 0x03, 0x03, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0xF8, 0xF0, 0xB0, 0x30, 0x3E, 0x33, 0x33, 0x33, 0x33, 0x7E, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0xC3, 0xC3, 0xC3, 0xC3, 0xF3, 0xDB, 0xDB, 0xDB, 0xDB, 0xF3, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0xF0, 0x60, 0x60, 0x60, 0x7C, 0x66, 0x66, 0x66, 0x66, 0xFC, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0x7C, 0xC6, 0x06, 0x26, 0x3E, 0x26, 0x06, 0x06, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0xCE, 0xDB, 0xDB, 0xDB, 0xFB, 0xDB, 0xDB, 0xDB, 0xDB, 0xCE, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0x3F, 0x66, 0x66, 0x66, 0x3E, 0x3E, 0x66, 0x66, 0x66, 0xE7, 0x00, 0x00, 0x00, 0x00
|
|
||||||
|
|
||||||
db 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0C, 0x7C, 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x02, 0x06, 0x7C, 0xC0, 0xC0, 0xFC, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x66, 0x66, 0x7C, 0x66, 0x66, 0xFC, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x62, 0x62, 0x60, 0x60, 0x60, 0xF0, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x36, 0x66, 0x66, 0x66, 0x66, 0xFF, 0xC3, 0xC3, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xFE, 0xC0, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0x00, 0x00, 0x00, 0xD6, 0xD6, 0x54, 0x7C, 0x54, 0xD6, 0xD6, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xC6, 0x06, 0x3C, 0x06, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xC6, 0xCE, 0xD6, 0xE6, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0x00, 0x6C, 0x38, 0xC6, 0xC6, 0xCE, 0xD6, 0xE6, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0x00, 0x00, 0x00, 0xE6, 0x6C, 0x78, 0x78, 0x6C, 0x66, 0xE6, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x36, 0x66, 0x66, 0x66, 0x66, 0xE6, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xEE, 0xFE, 0xFE, 0xD6, 0xD6, 0xC6, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00
|
|
||||||
|
|
||||||
RU_FNT2:
|
|
||||||
db 0x00, 0x00, 0x00, 0x00, 0x00, 0xDC, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7C, 0x60, 0x60, 0xF0, 0x00
|
|
||||||
db 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xC6, 0xC0, 0xC0, 0xC0, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x5A, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x06, 0x06, 0xC6, 0x7C, 0x00
|
|
||||||
db 0x00, 0x00, 0x00, 0x3C, 0x18, 0x7E, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x7E, 0x18, 0x18, 0x3C, 0x00
|
|
||||||
db 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0x6C, 0x38, 0x38, 0x38, 0x6C, 0xC6, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xFF, 0x03, 0x03, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0x00, 0x00, 0x00, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xFE, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0x00, 0x00, 0x00, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xFE, 0x03, 0x03, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xB0, 0xB0, 0x3E, 0x33, 0x33, 0x7E, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xF6, 0xDE, 0xDE, 0xF6, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x60, 0x60, 0x7C, 0x66, 0x66, 0xFC, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xC6, 0x06, 0x3E, 0x06, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0x00, 0x00, 0x00, 0xCE, 0xDB, 0xDB, 0xFB, 0xDB, 0xDB, 0xCE, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xC6, 0xC6, 0x7E, 0x36, 0x66, 0xE7, 0x00, 0x00, 0x00, 0x00
|
|
||||||
|
|
||||||
db 0x6C, 0x00, 0xFE, 0x66, 0x62, 0x68, 0x78, 0x68, 0x60, 0x62, 0x66, 0xFE, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0x00, 0x6C, 0x00, 0x7C, 0xC6, 0xC6, 0xFC, 0xC0, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0x7C, 0xC6, 0xC0, 0xC8, 0xF8, 0xC8, 0xC0, 0xC0, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xC6, 0xC0, 0xF8, 0xC0, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x66, 0x00, 0x3C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0x00, 0x6C, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x6C, 0x38, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x06, 0x06, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0x00, 0x6C, 0x38, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x06, 0x06, 0xC6, 0x7C, 0x00
|
|
||||||
db 0x00, 0x38, 0x6C, 0x6C, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xEC, 0x6C, 0x3C, 0x1C, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0xCF, 0xCD, 0xEF, 0xEC, 0xFF, 0xDC, 0xDC, 0xCC, 0xCC, 0xCC, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0x00, 0xC6, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0xC6, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0x00, 0x00, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
||||||
db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
@ -1,207 +0,0 @@
|
|||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
;; ;;
|
|
||||||
;; Copyright (C) KolibriOS team 2004-2007. All rights reserved. ;;
|
|
||||||
;; Distributed under terms of the GNU General Public License ;;
|
|
||||||
;; ;;
|
|
||||||
;; Shutdown for Menuet ;;
|
|
||||||
;; ;;
|
|
||||||
;; Distributed under General Public License ;;
|
|
||||||
;; See file COPYING for details. ;;
|
|
||||||
;; Copyright 2003 Ville Turjanmaa ;;
|
|
||||||
;; ;;
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
|
|
||||||
|
|
||||||
align 4
|
|
||||||
pr_mode_exit:
|
|
||||||
|
|
||||||
; setup stack
|
|
||||||
mov ax, 0x3000
|
|
||||||
mov ss, ax
|
|
||||||
mov esp, 0x0EC00
|
|
||||||
; setup ds
|
|
||||||
push cs
|
|
||||||
pop ds
|
|
||||||
|
|
||||||
lidt [old_ints_h]
|
|
||||||
;remap IRQs
|
|
||||||
mov al, 0x11
|
|
||||||
out 0x20, al
|
|
||||||
call rdelay
|
|
||||||
out 0xA0, al
|
|
||||||
call rdelay
|
|
||||||
|
|
||||||
mov al, 0x08
|
|
||||||
out 0x21, al
|
|
||||||
call rdelay
|
|
||||||
mov al, 0x70
|
|
||||||
out 0xA1, al
|
|
||||||
call rdelay
|
|
||||||
|
|
||||||
mov al, 0x04
|
|
||||||
out 0x21, al
|
|
||||||
call rdelay
|
|
||||||
mov al, 0x02
|
|
||||||
out 0xA1, al
|
|
||||||
call rdelay
|
|
||||||
|
|
||||||
mov al, 0x01
|
|
||||||
out 0x21, al
|
|
||||||
call rdelay
|
|
||||||
out 0xA1, al
|
|
||||||
call rdelay
|
|
||||||
|
|
||||||
mov al, 0xB8
|
|
||||||
out 0x21, al
|
|
||||||
call rdelay
|
|
||||||
mov al, 0xBD
|
|
||||||
out 0xA1, al
|
|
||||||
sti
|
|
||||||
|
|
||||||
temp_3456:
|
|
||||||
xor ax, ax
|
|
||||||
mov es, ax
|
|
||||||
mov al, byte [es:0x9030]
|
|
||||||
cmp al, 1
|
|
||||||
jl nbw
|
|
||||||
cmp al, 4
|
|
||||||
jle nbw32
|
|
||||||
|
|
||||||
nbw:
|
|
||||||
in al, 0x60
|
|
||||||
cmp al, 6
|
|
||||||
jae nbw
|
|
||||||
mov bl, al
|
|
||||||
nbw2:
|
|
||||||
in al, 0x60
|
|
||||||
cmp al, bl
|
|
||||||
je nbw2
|
|
||||||
cmp al, 240;ax,240
|
|
||||||
jne nbw31
|
|
||||||
mov al, bl
|
|
||||||
dec ax
|
|
||||||
jmp nbw32
|
|
||||||
nbw31:
|
|
||||||
add bl, 128
|
|
||||||
cmp al, bl
|
|
||||||
jne nbw
|
|
||||||
sub al, 129
|
|
||||||
|
|
||||||
nbw32:
|
|
||||||
|
|
||||||
dec ax
|
|
||||||
dec ax ; 2 = power off
|
|
||||||
jnz no_apm_off
|
|
||||||
call APM_PowerOff
|
|
||||||
jmp $
|
|
||||||
no_apm_off:
|
|
||||||
|
|
||||||
dec ax ; 3 = reboot
|
|
||||||
jnz restart_kernel ; 4 = restart kernel
|
|
||||||
push 0x40
|
|
||||||
pop ds
|
|
||||||
mov word[0x0072], 0x1234
|
|
||||||
jmp 0xF000:0xFFF0
|
|
||||||
|
|
||||||
|
|
||||||
rdelay:
|
|
||||||
ret
|
|
||||||
|
|
||||||
APM_PowerOff:
|
|
||||||
mov ax, 5304h
|
|
||||||
xor bx, bx
|
|
||||||
int 15h
|
|
||||||
;!!!!!!!!!!!!!!!!!!!!!!!!
|
|
||||||
mov ax, 0x5300
|
|
||||||
xor bx, bx
|
|
||||||
int 0x15
|
|
||||||
push ax
|
|
||||||
|
|
||||||
mov ax, 0x5301
|
|
||||||
xor bx, bx
|
|
||||||
int 0x15
|
|
||||||
|
|
||||||
mov ax, 0x5308
|
|
||||||
mov bx, 1
|
|
||||||
mov cx, bx
|
|
||||||
int 0x15
|
|
||||||
|
|
||||||
mov ax, 0x530E
|
|
||||||
xor bx, bx
|
|
||||||
pop cx
|
|
||||||
int 0x15
|
|
||||||
|
|
||||||
mov ax, 0x530D
|
|
||||||
mov bx, 1
|
|
||||||
mov cx, bx
|
|
||||||
int 0x15
|
|
||||||
|
|
||||||
mov ax, 0x530F
|
|
||||||
mov bx, 1
|
|
||||||
mov cx, bx
|
|
||||||
int 0x15
|
|
||||||
|
|
||||||
mov ax, 0x5307
|
|
||||||
mov bx, 1
|
|
||||||
mov cx, 3
|
|
||||||
int 0x15
|
|
||||||
;!!!!!!!!!!!!!!!!!!!!!!!!
|
|
||||||
ret
|
|
||||||
|
|
||||||
restart_kernel:
|
|
||||||
|
|
||||||
mov ax, 0x0003 ; set text mode for screen
|
|
||||||
int 0x10
|
|
||||||
jmp 0x4000:0000
|
|
||||||
|
|
||||||
restart_kernel_4000:
|
|
||||||
cli
|
|
||||||
|
|
||||||
push ds
|
|
||||||
pop es
|
|
||||||
mov cx, 0x8000
|
|
||||||
push cx
|
|
||||||
push 0x7000
|
|
||||||
pop ds
|
|
||||||
xor si, si
|
|
||||||
xor di, di
|
|
||||||
rep movsw
|
|
||||||
pop cx
|
|
||||||
mov ds, cx
|
|
||||||
push 0x2000
|
|
||||||
pop es
|
|
||||||
rep movsw
|
|
||||||
push 0x9000
|
|
||||||
pop ds
|
|
||||||
push 0x3000
|
|
||||||
pop es
|
|
||||||
mov cx, 0xE000/2
|
|
||||||
rep movsw
|
|
||||||
|
|
||||||
wbinvd ; write and invalidate cache
|
|
||||||
|
|
||||||
mov al, 00110100b
|
|
||||||
out 43h, al
|
|
||||||
jcxz $+2
|
|
||||||
mov al, 0xFF
|
|
||||||
out 40h, al
|
|
||||||
jcxz $+2
|
|
||||||
out 40h, al
|
|
||||||
jcxz $+2
|
|
||||||
sti
|
|
||||||
|
|
||||||
; (hint by Black_mirror)
|
|
||||||
; We must read data from keyboard port,
|
|
||||||
; because there may be situation when previous keyboard interrupt is lost
|
|
||||||
; (due to return to real mode and IRQ reprogramming)
|
|
||||||
; and next interrupt will not be generated (as keyboard waits for handling)
|
|
||||||
in al, 0x60
|
|
||||||
|
|
||||||
; bootloader interface
|
|
||||||
push 0x1000
|
|
||||||
pop ds
|
|
||||||
mov si, kernel_restart_bootblock
|
|
||||||
mov ax, 'KL'
|
|
||||||
jmp 0x1000:0000
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user