Files
kolibrios/programs/system/setup/trunk/setup.asm
pathoswithin e423045d6f Setup: total code refactoring
git-svn-id: svn://kolibrios.org@5849 a494cfbc-eb01-0410-851d-a64ba20cac60
2015-10-15 15:26:59 +00:00

457 lines
7.7 KiB
NASM
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
;;;;;;;;;;;;;;;;;;;;;;;
;; SYSTEM SETTINGS ;;
;;;;;;;;;;;;;;;;;;;;;;;
format binary as ""
use32
org 0
db 'MENUET01'
dd 1
dd START
dd IM_END
dd I_END
dd stack_area
dd boot_param
dd 0
include '../../../macros.inc'
;---------------------------------------------------------------
set_language_and_exit:
mcall 26,2,9
cmp eax,1
je russian
xor eax,eax
@@:
mov [keyboard],eax
call _keyboard
jmp close
russian:
mov eax,3
jmp @b
;---------------------------------------------------------------
set_syslanguage_and_exit:
mcall 26,5
cmp eax,6
jne @f
xor eax,eax
@@:
inc eax
mov [syslang],eax
call _syslang
jmp close
;---------------------------------------------------------------
apply_all_and_exit:
mov byte[fileinfo],0
mcall 70,fileinfo
call apply_all
jmp close
;---------------------------------------------------------------
apply_all:
call fontApply
call _syslang
call _lba_read
call _pci_acc
call _speaker_mute
call _keyboard
ret
;---------------------------------------------------------------
_syslang:
mcall 21,5,[syslang]
jmp loadtxt
;---------------------------------------------------------------
_lba_read:
mcall 21,11,[lba_read]
ret
;---------------------------------------------------------------
_pci_acc:
mcall 21,12,[pci_acc]
ret
;---------------------------------------------------------------
fontApply:
mcall 48,10,[fontSmoothing]
ret
;---------------------------------------------------------------
_speaker_mute:
mcall 18,8,1
cmp [speaker_mute],eax
je @f
inc ecx
mcall 18
@@:
ret
;---------------------------------------------------------------
_keyboard:
mov ebp,[keyboard]
mov edx,[ebp*4+keymapTab]
mcall 21,2,1
inc ecx
mov edx,[ebp*4+shiftKeymapTab]
mcall 21
inc ecx
mov edx,[ebp*4+altKeymapTab]
mcall 21
mov edx,ebp
inc edx
mov cl, 9
mcall 21
ret
;---------------------------------------------------------------
START:
mov eax,boot_param
cmp [eax],dword 'SLAN'
je set_syslanguage_and_exit
cmp [eax],dword 'LANG'
je set_language_and_exit
cmp [eax],dword 'BOOT'
je apply_all_and_exit
; get current settings
mcall 26,2,9
dec eax
mov [keyboard],eax
mcall 26,5
mov [syslang],eax
mcall 26,11
mov [lba_read],eax
mcall 26,12
mov [pci_acc],eax
mcall 18,8,1
mov [speaker_mute],eax
mcall 48,9
mov [fontSmoothing],eax
call loadtxt
draw_infotext:
mov eax,[syslang]
mov edi,[text]
lea esi,[eax*8+langs-8]
add edi,28
movsd
movsd
mov eax,[keyboard]
add edi,LLL-8
lea esi,[eax*8+langs]
movsd
movsd
add edi,LLL-8
mov eax,[lba_read]
call onoff
mov [edi],ebx
mov eax,[pci_acc]
call onoff
mov [edi+LLL],ebx
mov eax,[speaker_mute]
call onoff
mov [edi+LLL*2],ebx
mov ebx,'SUBP'
mov ecx,'IXEL'
cmp [fontSmoothing],2
jz @f
mov eax,[fontSmoothing]
call onoff
mov ecx,' '
@@:
mov [edi+LLL*3],ebx
mov [edi+LLL*3+4],ecx
draw_window:
mcall 12,1
mov ecx,50*65536+32*(4+stringsAmount)
mcall 0,<50,700>,,0xB4111199,0,title
; Main buttons
mov eax,8
mov ecx,6*65536+26
mov edx,4
mov esi,0x5580c0
mov ebp,stringsAmount
@@:
mcall ,<490,24>
inc edx
mcall ,<526,24>
inc edx
mcall ,<562,120>
inc edx
add ecx,32*65536
dec ebp
jnz @b
; APPLY ALL
add ecx,32*65536
mcall ,<514,168>,,3,0x005588dd
; SAVE ALL
add ecx,32*65536
dec edx
mcall
; text
mov eax,4
mov ebx,6*65536+11
mov ecx,1ffffffh
mov edx,[text]
mov esi,LLL
mov ebp,stringsAmount
newline:
mcall
add ebx,32
add edx,esi
dec ebp
jnz newline
mov ebp,2
add ebx,32
@@:
mcall
add ebx,32
add edx,esi
dec ebp
jnz @b
mcall 12,2
still:
mcall 10
cmp eax,1
jz draw_window
cmp eax,2
jz key
cmp eax,3
jz button
jmp still
;---------------------------------------------------------------
key:
mcall 2
jmp still
;---------------------------------------------------------------
button:
mcall 17
shr eax,8
call dword[eax*4+buttonTab-4]
jmp draw_infotext
close:
pop eax
mcall -1
saveAll:
mov byte[fileinfo],2
mcall 70,fileinfo
ret
language1:
dec [syslang]
jnz @f
mov [syslang],6
ret
language2:
inc [syslang]
cmp [syslang],7
jnz @f
mov [syslang],1
ret
layout1:
dec [keyboard]
jns @f
mov [keyboard],7
ret
layout2:
inc [keyboard]
cmp [keyboard],8
jnz @f
mov [keyboard],0
ret
LBA1:
btr [lba_read],0
ret
LBA2:
bts [lba_read],0
ret
PCI1:
btr [pci_acc],0
ret
PCI2:
bts [pci_acc],0
ret
SPEAKER1:
btr [speaker_mute],0
ret
SPEAKER2:
bts [speaker_mute],0
ret
font1:
cmp [fontSmoothing],0
jz @f
dec [fontSmoothing]
ret
font2:
cmp [fontSmoothing],2
jz @f
inc [fontSmoothing]
@@:
ret
;---------------------------------------------------------------
loadtxt:
cmp [syslang],4
jne @f
mov [text],textrus
ret
@@:
cmp [syslang],6
jne @f
mov [text],textet
ret
@@:
mov [text],texteng
ret
;---------------------------------------------------------------
onoff:
cmp [syslang],4
jne norus1
mov ebx,'„€ '
cmp eax,1
je exitsub
mov ebx,'<27> '
ret
norus1:
cmp [syslang],6
jne noet1
mov ebx,'SEES'
cmp eax,1
je exitsub
mov ebx,'VÄL.'
ret
noet1:
mov ebx,'ON '
cmp eax,1
je exitsub
mov ebx,'OFF '
exitsub:
ret
;---------------------------------------------------------------
align 4
buttonTab: ; button handler pointers: -,+,apply
dd close
dd saveAll
dd apply_all
dd language1
dd language2
dd _syslang
dd layout1
dd layout2
dd _keyboard
dd LBA1
dd LBA2
dd _lba_read
dd PCI1
dd PCI2
dd _pci_acc
dd SPEAKER1
dd SPEAKER2
dd _speaker_mute
dd font1
dd font2
dd fontApply
keymapTab:
dd en_keymap
dd fi_keymap
dd ge_keymap
dd ru_keymap
dd fr_keymap
dd et_keymap
dd be_keymap
dd it_keymap
shiftKeymapTab:
dd en_keymap_shift
dd fi_keymap_shift
dd ge_keymap_shift
dd ru_keymap_shift
dd fr_keymap_shift
dd et_keymap_shift
dd be_keymap_shift
dd it_keymap_shift
altKeymapTab:
dd alt_general
dd alt_general
dd alt_general
dd alt_general
dd fr_keymap_alt_gr
dd alt_general
dd be_keymap_alt_gr
dd it_keymap_alt_gr
setup.dat: ; file structure
syslang dd 0
keyboard dd 0
lba_read dd 0
pci_acc dd 0
speaker_mute dd 0
fontSmoothing dd 0
fileinfo:
dd 0
dd 0
dd 0
dd 4*6
dd setup.dat
db '/SYS/SETTINGS/SETUP.DAT',0
title db 'System settings',0
hex db '0123456789ABCDEF'
LLL = 56
stringsAmount = 6
align 4
text dd 0
langs:
db 'ENGLISH FINNISH GERMAN RUSSIAN FRENCH ESTONIANBELGIAN ITALIAN '
textrus:
db 'Ÿ§ëª á¨á⥬ë : < > <20>ਬ¥­¨âì'
db '<27> áª« ¤ª  ª« ¢¨ âãàë : < > <20>ਬ¥­¨âì'
db '‚ª«îç¨âì LBA : - + <20>ਬ¥­¨âì'
db '„®áâ㯠ª 設¥ PCI : - + <20>ਬ¥­¨âì'
db '‚몫îç¨âì SPEAKER : - + <20>ਬ¥­¨âì'
db '‘£« ¦¨¢ ­¨¥ èà¨ä⮢ : - + <20>ਬ¥­¨âì'
db '<>ˆŒ€<C592>ˆ…: <20>ਬ¥­¨âì ¢á¥'
db '<27>… ‡€<E280A1>“„œŽ•<C5BD><EFBFBD>ˆœ <20><E28098>Ž‰Šˆ ‘®åà ­¨âì ¢á¥'
texteng:
db 'System language : < > Apply '
db 'Keyboard layout : < > Apply '
db 'LBA read enabled : - + Apply '
db 'PCI access for appl. : - + Apply '
db 'SPEAKER disabled : - + Apply '
db 'Font smoothing : - + Apply '
db 'NOTE: Apply all '
db 'SAVE YOUR SETTINGS BEFORE QUITING KOLIBRI Save all '
textet:
db 'Süsteemi keel : < > Kinnita '
db 'Klaviatuuri paigutus : < > Kinnita '
db 'LBA lugemine lubatud : - + Kinnita '
db 'PCI juurdepääs programm. : - + Kinnita '
db 'SPEAKER disabled : - + Kinnita '
db 'Font smoothing : - + Kinnita '
db 'MÄRKUS: Kinnita kõik '
db 'SALVESTA SEADED ENNE KOLIBRIST VÄLJUMIST Salvesta kõik'
include 'keymaps.inc'
IM_END:
boot_param:
rb 1024
stack_area:
I_END: