diff --git a/kernel/trunk/boot/bootcode.inc b/kernel/trunk/boot/bootcode.inc index cfc36891d0..98d619e00f 100644 --- a/kernel/trunk/boot/bootcode.inc +++ b/kernel/trunk/boot/bootcode.inc @@ -863,6 +863,14 @@ else if lang eq et mov [time_str+9], ' ' mov [time_str+10], ' ' @@: +else if lang eq sp +; esperar 5/4/3/2 segundos, 1 segundo + cmp al, 1 + mov cl, 's' + ja @f + mov cl, ' ' +@@: + mov [time_str+10], cl else ; wait 5/4/3/2 seconds, 1 second cmp al, 1 diff --git a/kernel/trunk/boot/booten.inc b/kernel/trunk/boot/booten.inc new file mode 100644 index 0000000000..c3d203a305 --- /dev/null +++ b/kernel/trunk/boot/booten.inc @@ -0,0 +1,101 @@ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; ;; +;; Copyright (C) KolibriOS team 2004-2011. All rights reserved. ;; +;; Distributed under terms of the GNU General Public License ;; +;; ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;====================================================================== +; +; BOOT DATA +; +;====================================================================== + +$Revision: 2455 $ + + +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 +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 + +ask_bd db "Add disks visible by BIOS emulated in V86-mode? [1-yes, 2-no]: ",0 + +if defined extended_primary_loader +bdev db "Load ramdisk from [1-floppy; 2-kolibri.img]: ",0 +else +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 +end if + +prnotfnd db "Fatal - Videomode not found.",0 + +not386 db "Fatal - CPU 386+ required.",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 [abcd] 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 + +preboot_device_msg db " [c] Floppy image: ",0 + +if defined extended_primary_loader +preboot_device_msgs dw 0,pdm1,pdm2,0 +pdm1 db "real floppy",13,10,0 +pdm2 db "C:\kolibri.img (FAT32)",13,10,0 +else +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 +end if + +loading_msg db "Loading KolibriOS...",0 + +if ~ defined extended_primary_loader +save_quest db "Remember current settings? [y/n]: ",0 +loader_block_error db "Bootloader data invalid, I cannot continue. Stopped.",0 +end if + +_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 the system does not boot, try to disable the item [b].",0 +remarks dw remark1, remark2 +num_remarks = 2 diff --git a/kernel/trunk/boot/bootsp.inc b/kernel/trunk/boot/bootsp.inc new file mode 100644 index 0000000000..4e5c0e8d1c --- /dev/null +++ b/kernel/trunk/boot/bootsp.inc @@ -0,0 +1,103 @@ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; ;; +;; Copyright (C) KolibriOS team 2004-2011. All rights reserved. ;; +;; Distributed under terms of the GNU General Public License ;; +;; ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;====================================================================== +; +; BOOT DATA +; +;====================================================================== + +; Para modificar ‚ste archivo es necesario abrirlo con codificaci¢n CP850 + +$Revision: 2455 $ + + +d80x25_bottom: + db 186,' KolibriOS est  basado en MenuetOS y viene ABSOLUTAMENTE ' + db 'SIN GARANT¡A ',186 + db 186,' Lee el archivo COPYING por m s detalles ' + db ' ',186 + line_full_bottom +d80x25_bottom_num = 3 + +msg_apm db " APM x.x ", 0 +novesa db "Monitor: EGA/CGA",13,10,0 +s_vesa db "Versi¢n de VESA: " + .ver db "?.?",13,10,0 + +gr_mode db "Selecciona un modo de video: ",13,10,0 + +ask_bd db "¨Agregar discos visibles por el BIOS emulados en modo V86? [1-si, 2-no]: ",0 + +if defined extended_primary_loader +bdev db "Cargar ramdisk desde [1-disquete; 2-kolibri.img]: ",0 +else +bdev db "Cargar ramdisk desde [1-disquete; 2-C:\kolibri.img (FAT32);" + db 13,10,186," " + db "3-usar imagen precargada en el reinicio del kernel;" + db 13,10,186," " + db "4-crear imagen vac¡a]: ",0 +end if + +prnotfnd db "Fatal - Modo de video no encontrado.",0 + +not386 db "Fatal - CPU 386+ requerido.",0 +fatalsel db "Fatal - Modo de gr ficos no soportado por hardware.",0 +pres_key db "Presiona una tecla para seleccionar otro modo de video.",0 +badsect db 13,10,186," Fatal - Sector mal. Reemplaze el disquete.",0 +memmovefailed db 13,10,186," Fatal - Int 0x15 move failed.",0 +okt db " ... BIEN" +linef db 13,10,0 +diskload db "Cargando disquete: 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 "Presiona [abcd] para cambiar la configuraci¢n, [Enter] para continuar",13,10,0 +time_msg db " o espera " +time_str db " 5 segundos" + db " para que inicie autom ticamente",13,10,0 +current_cfg_msg db "Configuraci¢n actual:",13,10,0 +curvideo_msg db " [a] Modo de video: ",0 + +mode0 db "320x200, EGA/CGA 256 colores",13,10,0 +mode9 db "640x480, VGA 16 colores",13,10,0 + +usebd_msg db " [b] Agregar discos visibles por el BIOS:",0 +on_msg db " activado",13,10,0 +off_msg db " desactivado",13,10,0 + +preboot_device_msg db " [c] Imagen de disquete: ",0 + +if defined extended_primary_loader +preboot_device_msgs dw 0,pdm1,pdm2,0 +pdm1 db "disquete real",13,10,0 +pdm2 db "C:\kolibri.img (FAT32)",13,10,0 +else +preboot_device_msgs dw 0,pdm1,pdm2,pdm3 +pdm1 db "disquete real",13,10,0 +pdm2 db "C:\kolibri.img (FAT32)",13,10,0 +pdm3 db "usar imagen ya cargada",13,10,0 +pdm4 db "crear imagen vac¡a",13,10,0 +end if + +loading_msg db "Cargando KolibriOS...",0 + +if ~ defined extended_primary_loader +save_quest db "¨Recordar configuraci¢n actual? [s/n]: ",0 +loader_block_error db "Bootloader inv lido, no puedo continuar. Detenido.",0 +end if + +_st db 186,' ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄ¿',13,10,0 +_r1 db 186,' ³ 320x200 EGA/CGA 256 colores ³ ³',13,10,0 +_r2 db 186,' ³ 640x480 VGA 16 colores ³ ³',13,10,0 +_rs db 186,' ³ ????x????@?? SVGA VESA ³ ³',13,10,0 +_bt db 186,' ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÙ',13,10,0 + +remark1 db "Los valores por defecto puede que no funcionen en algunas configuraciones.",0 +remark2 db "Si el sistema no inicia, prueba deshabilitar la opci¢n [b].",0 +remarks dw remark1, remark2 +num_remarks = 2 diff --git a/kernel/trunk/bootloader/boot_fat12.asm b/kernel/trunk/bootloader/boot_fat12.asm index 3e341746e7..749583f9fb 100644 --- a/kernel/trunk/bootloader/boot_fat12.asm +++ b/kernel/trunk/bootloader/boot_fat12.asm @@ -15,6 +15,8 @@ ; ; Version 1.0 +include "lang.inc" + lf equ 0ah cr equ 0dh @@ -262,7 +264,11 @@ conv_abs_to_THS: retn ;------------------------------------------ +if lang eq sp +loading db cr,lf,'Iniciando el sistema ',00h +else loading db cr,lf,'Starting system ',00h +end if error_message db 13,10 kernel_name db 'KERNEL MNT ?',cr,lf,00h FirstRootDirSecNum dw ? diff --git a/kernel/trunk/build.bat b/kernel/trunk/build.bat index 54f98c2dab..4e4d9aed10 100644 --- a/kernel/trunk/build.bat +++ b/kernel/trunk/build.bat @@ -1,129 +1,129 @@ -@echo off -cls -set languages=en ru ge et -set drivers=com_mouse emu10k1x fm801 infinity sis sound viasound vt823x -set targets=all kernel drivers clean - -call :Check_Target %1 -for %%a in (all kernel) do if %%a==%target% call :Check_Lang %2 -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 goto :eof - - echo Language '%res%' is incorrect - echo Enter valid language [ %languages% ]: - - set /P res="> - goto Check_Lang_loop -goto :eof - -:Check_Target - set res=%1 - :Check_Target_loop - for %%a in (%targets%) do if %%a==%res% set target=%res% - if defined target goto :eof - - echo Target '%res%' is incorrect - echo Enter valid target [ %targets% ]: - - set /P res="> - goto Check_Target_loop -goto :eof - - -:Target_kernel - echo *** building kernel with language '%lang%' ... - - if not exist bin mkdir bin - echo lang fix %lang% > lang.inc - fasm -m 65536 kernel.asm bin\kernel.mnt - if not %errorlevel%==0 goto :Error_FasmFailed - erase lang.inc -goto :eof - - -:Target_all - call :Target_kernel - call :Target_drivers -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 .. - -kpack >nul 2>&1 - -if %errorlevel%==9009 goto :Error_KpackFailed - -echo * -echo ############################################## -echo * -echo Kpack KolibriOS drivers? -echo * - -set /P res=[y/n]? - -if "%res%"=="y" ( - - echo * - echo Compressing system - - echo * - for %%a in (bin\drivers\*.obj) do ( - echo ================== kpack %%a - kpack %%a - if not %errorlevel%==0 goto :Error_KpackFailed - ) - -) -goto :eof - - -:Target_clean - echo *** cleaning ... - rmdir /S /Q bin -goto :Exit_OK - - -:Error_FasmFailed -echo error: fasm execution failed -erase lang.inc >nul 2>&1 -echo. -pause -exit 1 - -:Error_KpackFailed -echo *** NOTICE *** -echo If you want to pack all applications you may -echo place "kpack" in accessible directory or system %PATH%. -echo You can get this tool from KolibriOS distribution kit. -pause -exit 1 - -:Exit_OK -echo. -echo all operations have been done -pause -exit 0 +@echo off +cls +set languages=en ru ge et sp +set drivers=com_mouse emu10k1x fm801 infinity sis sound viasound vt823x +set targets=all kernel drivers clean + +call :Check_Target %1 +for %%a in (all kernel) do if %%a==%target% call :Check_Lang %2 +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 goto :eof + + echo Language '%res%' is incorrect + echo Enter valid language [ %languages% ]: + + set /P res="> + goto Check_Lang_loop +goto :eof + +:Check_Target + set res=%1 + :Check_Target_loop + for %%a in (%targets%) do if %%a==%res% set target=%res% + if defined target goto :eof + + echo Target '%res%' is incorrect + echo Enter valid target [ %targets% ]: + + set /P res="> + goto Check_Target_loop +goto :eof + + +:Target_kernel + echo *** building kernel with language '%lang%' ... + + if not exist bin mkdir bin + echo lang fix %lang% > lang.inc + fasm -m 65536 kernel.asm bin\kernel.mnt + if not %errorlevel%==0 goto :Error_FasmFailed + erase lang.inc +goto :eof + + +:Target_all + call :Target_kernel + call :Target_drivers +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 .. + +kpack >nul 2>&1 + +if %errorlevel%==9009 goto :Error_KpackFailed + +echo * +echo ############################################## +echo * +echo Kpack KolibriOS drivers? +echo * + +set /P res=[y/n]? + +if "%res%"=="y" ( + + echo * + echo Compressing system + + echo * + for %%a in (bin\drivers\*.obj) do ( + echo ================== kpack %%a + kpack %%a + if not %errorlevel%==0 goto :Error_KpackFailed + ) + +) +goto :eof + + +:Target_clean + echo *** cleaning ... + rmdir /S /Q bin +goto :Exit_OK + + +:Error_FasmFailed +echo error: fasm execution failed +erase lang.inc >nul 2>&1 +echo. +pause +exit 1 + +:Error_KpackFailed +echo *** NOTICE *** +echo If you want to pack all applications you may +echo place "kpack" in accessible directory or system %PATH%. +echo You can get this tool from KolibriOS distribution kit. +pause +exit 1 + +:Exit_OK +echo. +echo all operations have been done +pause +exit 0 diff --git a/kernel/trunk/data32.inc b/kernel/trunk/data32.inc index a0100b9ba5..0799674276 100644 --- a/kernel/trunk/data32.inc +++ b/kernel/trunk/data32.inc @@ -87,6 +87,8 @@ if lang eq ru if preboot_blogesc boot_tasking db '‚ᥠ£®â®¢® ¤«ï § ¯ã᪠, ­ ¦¬¨âॠESC ¤«ï áâ àâ ',0 end if +else if lang eq sp + include 'data32sp.inc' else boot_initirq db 'Initialize IRQ',0 boot_picinit db 'Initialize PIC',0 diff --git a/kernel/trunk/data32sp.inc b/kernel/trunk/data32sp.inc new file mode 100644 index 0000000000..1638295e1e --- /dev/null +++ b/kernel/trunk/data32sp.inc @@ -0,0 +1,35 @@ + boot_initirq db 'Inicializar IRQ',0 + boot_picinit db 'Inicializar PIC',0 + boot_v86machine db 'Inicializar sistema V86',0 + boot_inittimer db 'Inicializar reloj del sistema (IRQ0)',0 + boot_initapic db 'Prueba inicializar APIC',0 + boot_enableirq db 'Habilitar interrupciones 2, 6, 13, 14, 15',0 + boot_enablint_ide db 'Habiliar interrupciones en controladores IDE',0 + boot_detectfloppy db 'Buscar unidades de disquete',0 + boot_detecthdcd db 'Buscar discos duros y unidades ATAPI',0 + boot_getcache db 'Tomar memoria para cach‚',0 + boot_detectpart db 'Buscar particiones en discos',0 + boot_init_sys db 'Inicializar directorio del sistema /sys',0 + boot_loadlibs db 'Cargando librer¡as (.obj)',0 + boot_memdetect db 'Determinando cantidad de memoria',0 + boot_tss db 'Configurando TSSs',0 + boot_cpuid db 'Leyendo CPUIDs',0 +; boot_devices db 'Detectando dispositivos',0 + boot_setmouse db 'Configurando el rat¢n',0 + boot_windefs db 'Setting window defaults',0 + boot_bgr db 'Calculating background',0 + boot_resirqports db 'Reservando IRQs y puertos',0 + boot_setostask db 'Configurando tarea OS',0 + boot_allirqs db 'Desenmascarando IRQs',0 + boot_tsc db 'Leyendo TSC',0 + boot_cpufreq db 'La frequencia del CPU es ',' ',' MHz',0 + boot_pal_ega db 'Configurando paleta EGA/CGA 320x200',0 + boot_pal_vga db 'Configurando paleta VGA 640x480',0 + boot_failed db 'Fallo al iniciar la primer aplicaci¢n',0 + boot_mtrr db 'Configurando MTRR',0 + + boot_APIC_found db 'APIC habilitado', 0 + boot_APIC_nfound db 'APIC no encontrado', 0 +if preboot_blogesc + boot_tasking db 'Todo configurado - presiona ESC para iniciar',0 +end if diff --git a/kernel/trunk/kernel.asm b/kernel/trunk/kernel.asm index 2357748871..54ba73415c 100644 --- a/kernel/trunk/kernel.asm +++ b/kernel/trunk/kernel.asm @@ -136,8 +136,10 @@ version db 'Kolibri OS version 0.7.7.0+ ',13,10,13,10,0 include "boot/bootstr.inc" ; language-independent boot messages include "boot/preboot.inc" -if lang eq en -include "boot/booteng.inc" ; english system boot messages +if lang eq ge +include "boot/bootge.inc" ; german system boot messages +else if lang eq sp +include "boot/bootsp.inc" ; spanish system boot messages else if lang eq ru include "boot/bootru.inc" ; russian system boot messages include "boot/ru.inc" ; Russian font @@ -145,7 +147,7 @@ else if lang eq et include "boot/bootet.inc" ; estonian system boot messages include "boot/et.inc" ; Estonian font else -include "boot/bootge.inc" ; german system boot messages +include "boot/booten.inc" ; english system boot messages end if include "boot/bootcode.inc" ; 16 bit system boot code @@ -723,9 +725,11 @@ end if movzx ecx, word [boot_y] if lang eq ru or ecx, (10+30*6) shl 16 - else + else if lang eq sp + or ecx, (10+33*6) shl 16 + else or ecx, (10+29*6) shl 16 - end if + end if sub ecx, 10 mov edx, 0xFFFFFF mov ebx, [MEM_AMOUNT] @@ -846,9 +850,11 @@ end if movzx ecx, word [boot_y] if lang eq ru add ecx, (10+19*6) shl 16 - 10 ; 'Determining amount of memory' - else + else if lang eq sp + add ecx, (10+25*6) shl 16 - 10 ; 'Determining amount of memory' + else add ecx, (10+17*6) shl 16 - 10 ; 'Determining amount of memory' - end if + end if mov edx, 0xFFFFFF xor edi, edi mov eax, 0x00040000 diff --git a/kernel/trunk/makefile b/kernel/trunk/makefile index 29cb9cb5ed..b71154a1f5 100644 --- a/kernel/trunk/makefile +++ b/kernel/trunk/makefile @@ -1,12 +1,11 @@ FASM=fasm FLAGS=-m 65536 -languages=en|ru|ge|et -drivers_src=com_mouse emu10k1x ensoniq fm801 infinity sis sound uart viasound vmode vt823\(x\) -skins_src=default +languages=en|ru|ge|et|sp +drivers_src=com_mouse emu10k1x fm801 infinity sis sound vt823x -.PHONY: all kernel drivers skins clean +.PHONY: all kernel drivers bootloader clean -all: kernel drivers skins +all: kernel drivers bootloader kernel: check_lang @echo "*** building kernel with language '$(lang)' ..." @@ -23,15 +22,15 @@ drivers: echo "--- building 'bin/drivers/$${f}.obj' ..."; \ $(FASM) $(FLAGS) "$${f}.asm" "../bin/drivers/$${f}.obj" || exit $?; \ done - @mv bin/drivers/vmode.obj bin/drivers/vmode.mdr -skins: - @echo "*** building skins ..." - @mkdir -p bin/skins - @cd skin; for f in $(skins_src); do \ - echo "--- building 'bin/skins/$${f}.skn' ..."; \ - $(FASM) $(FLAGS) $${f}.asm ../bin/skins/$${f}.skn || exit $?; \ - done +bootloader: check_lang + @echo "*** building bootloader with language '$(lang)' ..." + @mkdir -p bin + @echo "lang fix $(lang)" > lang.inc + @echo "--- building 'bin/boot_fat12.bin' ..." + @$(FASM) $(FLAGS) bootloader/boot_fat12.asm bin/boot_fat12.bin + @rm -f lang.inc + check_lang: @case "$(lang)" in \