3,13 → 3,13 |
;; DEVICE SETUP ;; |
;; ;; |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
; version: 1.15 |
; version: 1.15 |
; last update: 20/04/2012 |
; changed by: Marat Zakiyanov aka Mario79, aka Mario |
; changes: Add the flag of speaker mute. |
; Correcting setup.dat |
;--------------------------------------------------------------------- |
; version: 1.14 |
; version: 1.14 |
; last update: 20/03/2012 |
; changed by: Marat Zakiyanov aka Mario79, aka Mario |
; changes: optimisations and code refactoring |
20,17 → 20,19 |
; I. Poddubny - fixed russian keymap |
;14/08/06 Mario79 - added regulation of mouse features |
;------------------------------------------------------------------------------- |
use32 |
org 0x0 |
format binary as "" |
|
db 'MENUET01' ; 8 byte identifier |
dd 0x01 ; header version |
dd START ; pointer to program start |
dd IM_END ; size of image |
dd I_END ; reguired amount of memory |
dd stack_area ; stack pointer (esp) |
dd boot_param ; boot parameters |
dd 0x0 ; path |
use32 |
org 0x0 |
|
db 'MENUET01' ; 8 byte identifier |
dd 0x01 ; header version |
dd START ; pointer to program start |
dd IM_END ; size of image |
dd I_END ; reguired amount of memory |
dd stack_area ; stack pointer (esp) |
dd boot_param ; boot parameters |
dd 0x0 ; path |
;------------------------------------------------------------------------------- |
include '..\..\..\macros.inc' |
;------------------------------------------------------------------------------- |
38,776 → 40,796 |
BBB equ 25 |
;------------------------------------------------------------------------------- |
apply_all: |
call _pci_acc ;12 |
call _syslang ;5 |
call _keyboard ;2 |
call _mouse_speed |
call _mouse_delay |
call _speaker_mute |
ret |
call _pci_acc ;12 |
call _syslang ;5 |
call _keyboard ;2 |
call _mouse_speed |
call _mouse_delay |
call _speaker_mute |
ret |
;------------------------------------------------------------------------------- |
apply_all_and_exit: |
mcall 70,read_fileinfo |
call apply_all |
jmp close |
mcall 70,read_fileinfo |
call apply_all |
jmp close |
;------------------------------------------------------------------------------- |
set_language_and_exit: |
mcall 26,2,9 |
cmp eax,1 |
je russian |
mcall 26,2,9 |
cmp eax,1 |
je russian |
|
xor eax,eax |
xor eax,eax |
;-------------------------------------- |
set_lang_now: |
mov [keyboard],eax |
call _keyboard |
jmp close |
mov [keyboard],eax |
call _keyboard |
jmp close |
;-------------------------------------- |
russian: |
mov eax,3 |
jmp set_lang_now |
mov eax,3 |
jmp set_lang_now |
;------------------------------------------------------------------------------- |
set_syslanguage_and_exit: |
mcall 26,5 |
cmp eax,6 |
jne temp |
xor eax,eax |
mcall 26,5 |
cmp eax,6 |
jne temp |
xor eax,eax |
;-------------------------------------- |
temp: |
inc eax |
mov [syslang],eax |
call _syslang |
jmp close |
inc eax |
mov [syslang],eax |
call _syslang |
jmp close |
;------------------------------------------------------------------------------- |
get_setup_values: |
mcall 26,2,9 |
dec eax |
mov [keyboard],eax |
mcall 26,2,9 |
dec eax |
mov [keyboard],eax |
|
mcall 26,5 |
mov [syslang],eax |
mcall 26,5 |
mov [syslang],eax |
|
mcall 26,11 |
mov [lba_read],eax |
mcall 26,11 |
mov [lba_read],eax |
|
mcall 26,12 |
mov [pci_acc],eax |
mcall 26,12 |
mov [pci_acc],eax |
|
mcall 18,19,0 |
mov [mouse_speed],eax |
mcall 18,19,0 |
mov [mouse_speed],eax |
|
mcall 18,19,2 |
mov [mouse_delay],eax |
|
mcall 18,8,1 |
mov [speaker_mute],eax |
ret |
mcall 18,19,2 |
mov [mouse_delay],eax |
|
mcall 18,8,1 |
mov [speaker_mute],eax |
ret |
;------------------------------------------------------------------------------- |
START: |
mov eax,boot_param |
cmp [eax],dword 'SLAN' |
je set_syslanguage_and_exit |
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 'LANG' |
je set_language_and_exit |
|
cmp [eax],dword 'BOOT' |
je apply_all_and_exit |
cmp [eax],dword 'BOOT' |
je apply_all_and_exit |
|
call get_setup_values |
call loadtxt |
call draw_infotext |
call get_setup_values |
call loadtxt |
call draw_infotext |
;------------------------------------------------------------------------------- |
red: |
call draw_window |
call draw_window |
;------------------------------------------------------------------------------- |
still: |
sysevent: |
mcall 23,8 ; wait here for event with timeout |
cmp eax,1 |
jz red |
mcall 23,8 ; wait here for event with timeout |
cmp eax,1 |
jz red |
|
cmp eax,2 |
jz key |
cmp eax,2 |
jz key |
|
cmp eax,3 |
jz button |
cmp eax,3 |
jz button |
|
jmp still |
jmp still |
;------------------------------------------------------------------------------- |
key: |
mcall 2 |
jmp still |
mcall 2 |
jmp still |
;------------------------------------------------------------------------------- |
button: |
mcall 17 |
cmp ah,99 |
jne nosaveall |
mcall 70,save_fileinfo |
jmp still |
mcall 17 |
cmp ah,99 |
jne nosaveall |
mcall 70,save_fileinfo |
jmp still |
;-------------------------------------- |
nosaveall: |
cmp ah,100 |
jne no_apply_all |
call apply_all |
jmp still |
cmp ah,100 |
jne no_apply_all |
call apply_all |
jmp still |
;-------------------------------------- |
no_apply_all: |
cmp ah,1 ; CLOSE APPLICATION |
jne no_close |
cmp ah,1 ; CLOSE APPLICATION |
jne no_close |
;-------------------------------------- |
close: |
or eax,-1 |
mcall |
or eax,-1 |
mcall |
;-------------------------------------- |
no_close: |
cmp ah,4 ; SET KEYBOARD |
jnz nokm |
mov eax,[keyboard] |
test eax,eax |
je downuplbl |
dec eax |
jmp nodownup |
cmp ah,4 ; SET KEYBOARD |
jnz nokm |
mov eax,[keyboard] |
test eax,eax |
je downuplbl |
dec eax |
jmp nodownup |
;-------------------------------------- |
downuplbl: |
mov eax,5 |
mov eax,6 |
;-------------------------------------- |
nodownup: |
mov [keyboard],eax |
call draw_infotext |
mov [keyboard],eax |
call draw_infotext |
;-------------------------------------- |
nokm: |
cmp ah,5 |
jnz nokp |
mov eax,[keyboard] |
cmp eax,5 |
je updownlbl |
inc eax |
jmp noupdown |
cmp ah,5 |
jnz nokp |
mov eax,[keyboard] |
cmp eax,6 |
je updownlbl |
inc eax |
jmp noupdown |
;-------------------------------------- |
updownlbl: |
xor eax,eax |
xor eax,eax |
;-------------------------------------- |
noupdown: |
mov [keyboard],eax |
call draw_infotext |
mov [keyboard],eax |
call draw_infotext |
;-------------------------------------- |
nokp: |
cmp ah,92 ; SET LBA READ |
jne no_lba_d |
cmp ah,92 ; SET LBA READ |
jne no_lba_d |
;-------------------------------------- |
slbal: |
btc [lba_read],0 |
call draw_infotext |
jmp still |
btc [lba_read],0 |
call draw_infotext |
jmp still |
;-------------------------------------- |
no_lba_d: |
cmp ah,93 |
jne no_lba_i |
jmp slbal |
cmp ah,93 |
jne no_lba_i |
jmp slbal |
;-------------------------------------- |
no_lba_i: |
cmp ah,91 |
jne no_set_lba_read |
call _lba_read |
jmp still |
cmp ah,91 |
jne no_set_lba_read |
call _lba_read |
jmp still |
;-------------------------------------- |
no_set_lba_read: |
cmp ah,102 ; SET PCI ACCESS |
jne no_pci_d |
cmp ah,102 ; SET PCI ACCESS |
jne no_pci_d |
;-------------------------------------- |
pcip: |
btc [pci_acc],0 |
call draw_infotext |
jmp still |
btc [pci_acc],0 |
call draw_infotext |
jmp still |
;-------------------------------------- |
no_pci_d: |
cmp ah,103 |
jne no_pci_i |
jmp pcip |
cmp ah,103 |
jne no_pci_i |
jmp pcip |
;-------------------------------------- |
no_pci_i: |
cmp ah,101 |
jne no_set_pci_acc |
call _pci_acc |
jmp still |
cmp ah,101 |
jne no_set_pci_acc |
call _pci_acc |
jmp still |
;-------------------------------------- |
no_set_pci_acc: |
cmp ah,42 ; SET SYSTEM LANGUAGE BASE |
jnz nosysm |
mov eax,[syslang] |
dec eax |
jz still |
mov [syslang],eax |
call draw_infotext |
cmp ah,42 ; SET SYSTEM LANGUAGE BASE |
jnz nosysm |
mov eax,[syslang] |
dec eax |
jz still |
mov [syslang],eax |
call draw_infotext |
;-------------------------------------- |
nosysm: |
cmp ah,43 |
jnz nosysp |
mov eax,[syslang] |
cmp eax,6 |
je nosysp |
inc eax |
mov [syslang],eax |
call draw_infotext |
cmp ah,43 |
jnz nosysp |
mov eax,[syslang] |
cmp eax,6 |
je nosysp |
inc eax |
mov [syslang],eax |
call draw_infotext |
;-------------------------------------- |
nosysp: |
cmp ah,41 |
jnz nosyss |
call _syslang |
call cleantxt |
call loadtxt |
call draw_window |
cmp ah,41 |
jnz nosyss |
call _syslang |
call cleantxt |
call loadtxt |
call draw_window |
;-------------------------------------- |
nosyss: |
cmp ah,132 ; SET MOUSE SPEED |
jnz .nominus |
mov eax,[mouse_speed] |
sub eax,2 |
cmp eax,9 |
jb @f |
mov eax,8 |
cmp ah,132 ; SET MOUSE SPEED |
jnz .nominus |
mov eax,[mouse_speed] |
sub eax,2 |
cmp eax,9 |
jb @f |
mov eax,8 |
;-------------------------------------- |
@@: |
inc eax |
mov [mouse_speed],eax |
call draw_infotext |
inc eax |
mov [mouse_speed],eax |
call draw_infotext |
;-------------------------------------- |
.nominus: |
cmp ah,133 |
jnz .noplus |
mov eax,[mouse_speed] |
cmp eax,9 |
jb @f |
mov eax,0 |
cmp ah,133 |
jnz .noplus |
mov eax,[mouse_speed] |
cmp eax,9 |
jb @f |
mov eax,0 |
;-------------------------------------- |
@@: |
inc eax |
mov [mouse_speed],eax |
call draw_infotext |
inc eax |
mov [mouse_speed],eax |
call draw_infotext |
;-------------------------------------- |
.noplus: |
cmp ah,131 |
jnz .noapply |
call _mouse_speed |
cmp ah,131 |
jnz .noapply |
call _mouse_speed |
;-------------------------------------- |
.noapply: |
mousedelay: |
cmp ah,142 ; SET MOUSE DELAY |
jnz .nominus |
mov eax,[mouse_delay] |
sub eax,2 |
cmp eax,0xfff |
jb @f |
mov eax,0xffe |
cmp ah,142 ; SET MOUSE DELAY |
jnz .nominus |
mov eax,[mouse_delay] |
sub eax,2 |
cmp eax,0xfff |
jb @f |
mov eax,0xffe |
;-------------------------------------- |
@@: |
inc eax |
mov [mouse_delay],eax |
call draw_infotext |
inc eax |
mov [mouse_delay],eax |
call draw_infotext |
;-------------------------------------- |
.nominus: |
cmp ah,143 |
jnz .noplus |
mov eax,[mouse_delay] |
cmp eax,0xfff |
jb @f |
mov eax,0 |
cmp ah,143 |
jnz .noplus |
mov eax,[mouse_delay] |
cmp eax,0xfff |
jb @f |
mov eax,0 |
;-------------------------------------- |
@@: |
inc eax |
mov [mouse_delay],eax |
call draw_infotext |
inc eax |
mov [mouse_delay],eax |
call draw_infotext |
;-------------------------------------- |
.noplus: |
cmp ah,141 |
jnz speakermute |
call _mouse_delay |
cmp ah,141 |
jnz speakermute |
call _mouse_delay |
;-------------------------------------- |
speakermute: |
cmp ah,152 ; SET SPEAKER |
jne no_speaker_d |
cmp ah,152 ; SET SPEAKER |
jne no_speaker_d |
;-------------------------------------- |
speaker_p: |
btc [speaker_mute],0 |
call draw_infotext |
jmp still |
btc [speaker_mute],0 |
call draw_infotext |
jmp still |
;-------------------------------------- |
no_speaker_d: |
cmp ah,153 |
jne no_speaker_i |
jmp speaker_p |
cmp ah,153 |
jne no_speaker_i |
jmp speaker_p |
;-------------------------------------- |
no_speaker_i: |
cmp ah,151 |
jne .noapply |
call _speaker_mute |
jmp still |
cmp ah,151 |
jne .noapply |
call _speaker_mute |
jmp still |
;-------------------------------------- |
.noapply: |
cmp ah,3 ; SET KEYMAP |
jne still |
call _keyboard |
jmp still |
cmp ah,3 ; SET KEYMAP |
jne still |
call _keyboard |
jmp still |
;------------------------------------------------------------------------------- |
_keyboard: |
cmp [keyboard],0 ; english |
jnz nosetkeyle |
|
mcall 21,2,1,en_keymap |
|
inc ecx |
mcall 21,,,en_keymap_shift |
cmp [keyboard],0 ; english |
jnz nosetkeyle |
|
mcall 21,2,1,en_keymap |
|
inc ecx |
mcall 21,,,en_keymap_shift |
|
mcall 21,,9,1 |
call alt_gen |
mcall 21,,9,1 |
call alt_gen |
;-------------------------------------- |
nosetkeyle: |
cmp [keyboard],1 ; finnish |
jnz nosetkeylfi |
cmp [keyboard],1 ; finnish |
jnz nosetkeylfi |
|
mcall 21,2,1,fi_keymap |
|
inc ecx |
mcall 21,,,fi_keymap_shift |
mcall 21,2,1,fi_keymap |
|
inc ecx |
mcall 21,,,fi_keymap_shift |
|
mcall 21,,9,2 |
call alt_gen |
mcall 21,,9,2 |
call alt_gen |
;-------------------------------------- |
nosetkeylfi: |
cmp [keyboard],2 ; german |
jnz nosetkeylge |
cmp [keyboard],2 ; german |
jnz nosetkeylge |
|
mcall 21,2,1,ge_keymap |
|
inc ecx |
mcall 21,,,ge_keymap_shift |
mcall 21,2,1,ge_keymap |
|
inc ecx |
mcall 21,,,ge_keymap_shift |
|
mcall 21,,9,3 |
call alt_gen |
mcall 21,,9,3 |
call alt_gen |
;-------------------------------------- |
nosetkeylge: |
cmp [keyboard],3 ; russian |
jnz nosetkeylru |
cmp [keyboard],3 ; russian |
jnz nosetkeylru |
|
mcall 21,2,1,ru_keymap |
|
inc ecx |
mcall 21,,,ru_keymap_shift |
mcall 21,2,1,ru_keymap |
|
inc ecx |
mcall 21,,,ru_keymap_shift |
|
mcall 21,,9,4 |
call alt_gen |
mcall 21,,9,4 |
call alt_gen |
;-------------------------------------- |
nosetkeylru: |
cmp [keyboard],4 ;french |
jnz nosetkeylfr |
cmp [keyboard],4 ;french |
jnz nosetkeylfr |
|
mcall 21,2,1,fr_keymap |
|
inc ecx |
mcall 21,,,fr_keymap_shift |
mcall 21,2,1,fr_keymap |
|
inc ecx |
mcall 21,,,fr_keymap_shift |
|
inc ecx |
mcall 21,,,fr_keymap_alt_gr |
inc ecx |
mcall 21,,,fr_keymap_alt_gr |
|
mcall 21,,9,5 |
mcall 21,,9,5 |
;-------------------------------------- |
nosetkeylfr: |
cmp [keyboard],5 ; estonian |
jnz nosetkeylet |
cmp [keyboard],5 ; estonian |
jnz nosetkeylet |
|
mcall 21,2,1,et_keymap |
|
inc ecx |
mcall 21,,,et_keymap_shift |
mcall 21,2,1,et_keymap |
|
inc ecx |
mcall 21,,,et_keymap_shift |
|
mcall 21,,9,6 |
call alt_gen |
mcall 21,,9,6 |
call alt_gen |
;-------------------------------------- |
nosetkeylet: |
ret |
cmp [keyboard],6 ;belgian |
jnz nosetkeylbe |
|
mcall 21,2,1,be_keymap |
|
inc ecx |
mcall 21,,,be_keymap_shift |
|
inc ecx |
mcall 21,,,be_keymap_alt_gr |
|
mcall 21,,9,5 |
;-------------------------------------- |
nosetkeylbe: |
ret |
;------------------------------------------------------------------------------- |
alt_gen: |
mcall 21,,3,alt_general |
ret |
mcall 21,,3,alt_general |
ret |
;------------------------------------------------------------------------------- |
draw_buttons: |
pusha |
shl ecx,16 |
add ecx,12 |
mcall 8,<(350-57),(46+BBB)> |
pusha |
shl ecx,16 |
add ecx,12 |
mcall 8,<(350-57),(46+BBB)> |
|
inc edx |
mcall ,<(350-85),9> |
inc edx |
mcall ,<(350-85),9> |
|
inc edx |
mcall ,<(350-73),9> |
inc edx |
mcall ,<(350-73),9> |
|
popa |
ret |
popa |
ret |
;------------------------------------------------------------------------------- |
; ******************************************** |
; ******* WINDOW DEFINITIONS AND DRAW ******* |
; ******************************************** |
draw_window: |
pusha |
mcall 12,1 |
pusha |
mcall 12,1 |
|
xor eax,eax ; DRAW WINDOW |
xor esi,esi |
mcall ,<40,(355+BBB)>,<40,(12*16)>,0xB4111199,,title |
|
mcall 9,procinfo,-1 |
|
mov eax,[ebx+70] ;status of window |
test eax,100b |
jne .end |
xor eax,eax ; DRAW WINDOW |
xor esi,esi |
mcall ,<40,(355+BBB)>,<40,(12*16)>,0xB4111199,,title |
|
mcall 9,procinfo,-1 |
|
mov eax,[ebx+70] ;status of window |
test eax,100b |
jne .end |
|
mcall 8,<(350-85),100>,<(5+16*8),12>,100,0x005588dd ; APPLY ALL |
mcall 8,<(350-85),100>,<(5+16*8),12>,100,0x005588dd ; APPLY ALL |
|
add ecx,16*65536 ; SAVE ALL |
dec edx |
mcall |
add ecx,16*65536 ; SAVE ALL |
dec edx |
mcall |
|
mov esi,0x5580c0 |
mov esi,0x5580c0 |
|
mov edx,41 |
mov ecx,5+0*8 |
call draw_buttons |
mov edx,41 |
mov ecx,5+0*8 |
call draw_buttons |
|
mov edx,3 |
mov ecx,5+2*8 |
call draw_buttons |
mov edx,3 |
mov ecx,5+2*8 |
call draw_buttons |
|
mov edx,91 |
mov ecx,5+4*8 |
call draw_buttons |
mov edx,91 |
mov ecx,5+4*8 |
call draw_buttons |
|
mov edx,101 |
mov ecx,5+6*8 |
call draw_buttons |
mov edx,101 |
mov ecx,5+6*8 |
call draw_buttons |
|
mov edx,131 |
mov ecx,5+8*8 |
call draw_buttons |
mov edx,131 |
mov ecx,5+8*8 |
call draw_buttons |
|
mov edx,141 |
mov ecx,5+10*8 |
call draw_buttons |
|
mov edx,151 |
mov ecx,5+12*8 |
call draw_buttons |
mov edx,141 |
mov ecx,5+10*8 |
call draw_buttons |
|
mov edx,151 |
mov ecx,5+12*8 |
call draw_buttons |
|
call draw_infotext |
call draw_infotext |
.end: |
mcall 12,2 |
popa |
ret |
mcall 12,2 |
popa |
ret |
;------------------------------------------------------------------------------- |
draw_infotext: |
pusha |
mov eax,[keyboard] ; KEYBOARD |
test eax,eax |
jnz noen |
mov [text00+LLL*1+28],dword 'ENGL' |
mov [text00+LLL*1+32],dword 'ISH ' |
pusha |
mov eax,[keyboard] ; KEYBOARD |
test eax,eax |
jnz noen |
mov [text00+LLL*1+28],dword 'ENGL' |
mov [text00+LLL*1+32],dword 'ISH ' |
;-------------------------------------- |
noen: |
cmp eax,1 |
jnz nofi |
mov [text00+LLL*1+28],dword 'FINN' |
mov [text00+LLL*1+32],dword 'ISH ' |
cmp eax,1 |
jnz nofi |
mov [text00+LLL*1+28],dword 'FINN' |
mov [text00+LLL*1+32],dword 'ISH ' |
;-------------------------------------- |
nofi: |
cmp eax,2 |
jnz noge |
mov [text00+LLL*1+28],dword 'GERM' |
mov [text00+LLL*1+32],dword 'AN ' |
cmp eax,2 |
jnz noge |
mov [text00+LLL*1+28],dword 'GERM' |
mov [text00+LLL*1+32],dword 'AN ' |
;-------------------------------------- |
noge: |
cmp eax,3 |
jnz nogr |
mov [text00+LLL*1+28],dword 'RUSS' |
mov [text00+LLL*1+32],dword 'IAN ' |
cmp eax,3 |
jnz nogr |
mov [text00+LLL*1+28],dword 'RUSS' |
mov [text00+LLL*1+32],dword 'IAN ' |
;-------------------------------------- |
nogr: |
cmp eax,4 |
jnz nofr |
mov [text00+LLL*1+28],dword 'FREN' |
mov [text00+LLL*1+32],dword 'CH ' |
cmp eax,4 |
jnz nofr |
mov [text00+LLL*1+28],dword 'FREN' |
mov [text00+LLL*1+32],dword 'CH ' |
;-------------------------------------- |
nofr: |
cmp eax,5 |
jnz noet |
mov [text00+LLL*1+28],dword 'ESTO' |
mov [text00+LLL*1+32],dword 'NIAN' |
cmp eax,5 |
jnz noet |
mov [text00+LLL*1+28],dword 'ESTO' |
mov [text00+LLL*1+32],dword 'NIAN' |
;-------------------------------------- |
noet: |
mov eax,[syslang] ; SYSTEM LANGUAGE |
dec eax |
test eax,eax |
jnz noen5 |
mov [text00+LLL*0+28],dword 'ENGL' |
mov [text00+LLL*0+32],dword 'ISH ' |
cmp eax,6 |
jnz nobe |
mov [text00+LLL*1+28],dword 'BELG' |
mov [text00+LLL*1+32],dword 'IAN ' |
;-------------------------------------- |
nobe: |
mov eax,[syslang] ; SYSTEM LANGUAGE |
dec eax |
test eax,eax |
jnz noen5 |
mov [text00+LLL*0+28],dword 'ENGL' |
mov [text00+LLL*0+32],dword 'ISH ' |
;-------------------------------------- |
noen5: |
cmp eax,1 |
jnz nofi5 |
mov [text00+LLL*0+28],dword 'FINN' |
mov [text00+LLL*0+32],dword 'ISH ' |
cmp eax,1 |
jnz nofi5 |
mov [text00+LLL*0+28],dword 'FINN' |
mov [text00+LLL*0+32],dword 'ISH ' |
;-------------------------------------- |
nofi5: |
cmp eax,2 |
jnz noge5 |
mov [text00+LLL*0+28],dword 'GERM' |
mov [text00+LLL*0+32],dword 'AN ' |
cmp eax,2 |
jnz noge5 |
mov [text00+LLL*0+28],dword 'GERM' |
mov [text00+LLL*0+32],dword 'AN ' |
;-------------------------------------- |
noge5: |
cmp eax,3 |
jnz nogr5 |
mov [text00+LLL*0+28],dword 'RUSS' |
mov [text00+LLL*0+32],dword 'IAN ' |
cmp eax,3 |
jnz nogr5 |
mov [text00+LLL*0+28],dword 'RUSS' |
mov [text00+LLL*0+32],dword 'IAN ' |
;-------------------------------------- |
nogr5: |
cmp eax,4 |
jne nofr5 |
mov [text00+LLL*0+28],dword 'FREN' |
mov [text00+LLL*0+32],dword 'CH ' |
cmp eax,4 |
jne nofr5 |
mov [text00+LLL*0+28],dword 'FREN' |
mov [text00+LLL*0+32],dword 'CH ' |
;-------------------------------------- |
nofr5: |
cmp eax,5 |
jne noet5 |
mov [text00+LLL*0+28],dword 'ESTO' |
mov [text00+LLL*0+32],dword 'NIAN' |
cmp eax,5 |
jne noet5 |
mov [text00+LLL*0+28],dword 'ESTO' |
mov [text00+LLL*0+32],dword 'NIAN' |
;-------------------------------------- |
noet5: |
mov eax,[lba_read] |
call onoff ; LBA READ |
mov [text00+LLL*2+28],ebx |
mov eax,[lba_read] |
call onoff ; LBA READ |
mov [text00+LLL*2+28],ebx |
|
mov eax,[pci_acc] |
call onoff ; PCI ACCESS |
mov [text00+LLL*3+28],ebx |
|
mov eax,[speaker_mute] |
call onoff ; SPEAKER |
mov [text00+LLL*6+28],ebx |
mov eax,[pci_acc] |
call onoff ; PCI ACCESS |
mov [text00+LLL*3+28],ebx |
|
mov eax,[speaker_mute] |
call onoff ; SPEAKER |
mov [text00+LLL*6+28],ebx |
|
mov eax,[mouse_speed] ; MOUSE SPEED |
add al,48 |
mov [text00+LLL*4+28],al |
mov eax,[mouse_speed] ; MOUSE SPEED |
add al,48 |
mov [text00+LLL*4+28],al |
|
mov eax,[mouse_delay] |
mov esi,text00+LLL*5+32 |
call hexconvert ; MOUSE DELAY |
call text_out |
|
popa |
ret |
mov eax,[mouse_delay] |
mov esi,text00+LLL*5+32 |
call hexconvert ; MOUSE DELAY |
call text_out |
|
popa |
ret |
;------------------------------------------------------------------------------- |
text_out: |
mcall 13,<165,85>,<0,(14*8)>,0x80111199 ;0x80111199-19 |
mcall 13,<165,85>,<0,(14*8)>,0x80111199 ;0x80111199-19 |
|
mov edx,text00 |
mov ebx,3*65536+7 |
mov eax,4 |
mov ecx,0xffffff |
mov esi,LLL |
mov ebp,text1_strings |
mov edx,text00 |
mov ebx,3*65536+7 |
mov eax,4 |
mov ecx,0xffffff |
mov esi,LLL |
mov ebp,text1_strings |
;-------------------------------------- |
newline: |
mcall |
add ebx,8+8 |
add edx,esi |
dec ebp |
jnz newline |
mcall |
add ebx,8+8 |
add edx,esi |
dec ebp |
jnz newline |
|
mov ebp,text2_strings |
add ebx,8+8 |
mov ebp,text2_strings |
add ebx,8+8 |
;-------------------------------------- |
@@: |
mcall |
add ebx,8+8 |
add edx,esi |
dec ebp |
jnz @b |
ret |
mcall |
add ebx,8+8 |
add edx,esi |
dec ebp |
jnz @b |
ret |
;------------------------------------------------------------------------------- |
hexconvert: ;converting dec to hex in ascii |
xor ebx,ebx |
mov bl,al |
and bl,15 |
add ebx,hex |
mov cl,[ebx] |
mov [esi],cl |
shr eax,4 |
xor ebx,ebx |
mov bl,al |
and bl,15 |
add ebx,hex |
mov cl,[ebx] |
dec esi |
mov [esi],cl |
shr eax,4 |
xor ebx,ebx |
mov bl,al |
and bl,15 |
add ebx,hex |
mov cl,[ebx] |
dec esi |
mov [esi],cl |
ret |
hexconvert: ;converting dec to hex in ascii |
xor ebx,ebx |
mov bl,al |
and bl,15 |
add ebx,hex |
mov cl,[ebx] |
mov [esi],cl |
shr eax,4 |
xor ebx,ebx |
mov bl,al |
and bl,15 |
add ebx,hex |
mov cl,[ebx] |
dec esi |
mov [esi],cl |
shr eax,4 |
xor ebx,ebx |
mov bl,al |
and bl,15 |
add ebx,hex |
mov cl,[ebx] |
dec esi |
mov [esi],cl |
ret |
;------------------------------------------------------------------------------- |
onoff: |
cmp [syslang],4 |
jne norus1 |
mov ebx,' ' |
cmp eax,1 |
je exitsub |
mov ebx,'
' |
ret |
cmp [syslang],4 |
jne norus1 |
mov ebx,' ' |
cmp eax,1 |
je exitsub |
mov ebx,'
' |
ret |
;-------------------------------------- |
norus1: |
mov ebx,'ON ' |
cmp eax,1 |
je exitsub |
mov ebx,'OFF ' |
mov ebx,'ON ' |
cmp eax,1 |
je exitsub |
mov ebx,'OFF ' |
;-------------------------------------- |
exitsub: |
ret |
ret |
;------------------------------------------------------------------------------- |
_lba_read: |
mcall 21,11,[lba_read] |
ret |
mcall 21,11,[lba_read] |
ret |
;------------------------------------------------------------------------------- |
_pci_acc: |
mcall 21,12,[pci_acc] |
ret |
mcall 21,12,[pci_acc] |
ret |
;------------------------------------------------------------------------------- |
_syslang: |
mcall 21,5,[syslang] |
ret |
mcall 21,5,[syslang] |
ret |
;------------------------------------------------------------------------------- |
_mouse_speed: |
mcall 18,19,1,[mouse_speed] |
ret |
mcall 18,19,1,[mouse_speed] |
ret |
;------------------------------------------------------------------------------- |
_mouse_delay: |
mcall 18,19,3,[mouse_delay] |
ret |
mcall 18,19,3,[mouse_delay] |
ret |
;------------------------------------------------------------------------------- |
_speaker_mute: |
mcall 18,8,1 |
cmp [speaker_mute],eax |
je @f |
inc ecx |
mcall 18 |
;-------------------------------------- |
mcall 18,8,1 |
cmp [speaker_mute],eax |
je @f |
inc ecx |
mcall 18 |
;-------------------------------------- |
@@: |
ret |
ret |
;------------------------------------------------------------------------------- |
loadtxt: |
mov edi,text00 |
mov ecx,LLL*(text1_strings + text2_strings)/4+1 |
cmp [syslang],4 |
jne norus |
mov edi,text00 |
mov ecx,LLL*(text1_strings + text2_strings)/4+1 |
cmp [syslang],4 |
jne norus |
|
mov esi,textrus |
jmp sload |
mov esi,textrus |
jmp sload |
;-------------------------------------- |
norus: |
mov esi,texteng |
mov esi,texteng |
;-------------------------------------- |
sload: |
rep movsd |
ret |
rep movsd |
ret |
;------------------------------------------------------------------------------- |
cleantxt: |
xor eax,eax |
mov ecx,LLL*(text1_strings + text2_strings)/4 |
cld |
mov edi,text00 |
rep stosd |
mov [text00+1711],byte 'x' |
ret |
xor eax,eax |
mov ecx,LLL*(text1_strings + text2_strings)/4 |
cld |
mov edi,text00 |
rep stosd |
mov [text00+1711],byte 'x' |
ret |
;------------------------------------------------------------------------------- |
; DATA AREA |
count: db 0x0 |
blinkpar: dd 0x0 |
time: dw 0x0 |
date: dd 0x0 |
count: db 0x0 |
blinkpar: dd 0x0 |
time: dw 0x0 |
date: dd 0x0 |
;------------------------------------------------------------------------------- |
textrus: |
db '§ëª á¨á⥬ë : ENGLISH - + ਬ¥¨âì' |
db ' ᪫ ¤ª ª« ¢¨ âãàë : ENGLISH - + ਬ¥¨âì' |
db 'ª«îç¨âì LBA : OFF - + ਬ¥¨âì' |
db '®áâ㯠ª 訥 PCI : OFF - + ਬ¥¨âì' |
db 'ª®à®áâì ªãàá®à ¬ëè¨ : 1 - + ਬ¥¨âì' |
db ' ¤¥à¦ª ãáª®à¥¨ï ¬ëè¨ : 0x00a - + ਬ¥¨âì' |
db '몫îç¨âì SPEAKER : OFF - + ਬ¥¨âì' |
|
db '
: ਬ¥¨âì ¢á¥ ' |
db '
®åà ¨âì ¢á¥ ' |
db '§ëª á¨á⥬ë : ENGLISH - + ਬ¥¨âì' |
db ' ᪫ ¤ª ª« ¢¨ âãàë : ENGLISH - + ਬ¥¨âì' |
db 'ª«îç¨âì LBA : OFF - + ਬ¥¨âì' |
db '®áâ㯠ª 訥 PCI : OFF - + ਬ¥¨âì' |
db 'ª®à®áâì ªãàá®à ¬ëè¨ : 1 - + ਬ¥¨âì' |
db ' ¤¥à¦ª ãáª®à¥¨ï ¬ëè¨ : 0x00a - + ਬ¥¨âì' |
db '몫îç¨âì SPEAKER : OFF - + ਬ¥¨âì' |
|
db '
: ਬ¥¨âì ¢á¥ ' |
db '
®åà ¨âì ¢á¥ ' |
;------------------------------------------------------------------------------- |
texteng: |
db 'System language : ENGLISH - + Apply ' |
db 'Keyboard layout : ENGLISH - + Apply ' |
db 'LBA read enabled : OFF - + Apply ' |
db 'PCI access for appl. : OFF - + Apply ' |
db 'Mouse pointer speed : 1 - + Apply ' |
db 'Mouse pointer delay : 0x00a - + Apply ' |
db 'SPEAKER disabled : OFF - + Apply ' |
db 'System language : ENGLISH - + Apply ' |
db 'Keyboard layout : ENGLISH - + Apply ' |
db 'LBA read enabled : OFF - + Apply ' |
db 'PCI access for appl. : OFF - + Apply ' |
db 'Mouse pointer speed : 1 - + Apply ' |
db 'Mouse pointer delay : 0x00a - + Apply ' |
db 'SPEAKER disabled : OFF - + Apply ' |
text1_strings = 7 |
|
db 'NOTE: Apply all ' |
db 'SAVE YOUR SETTINGS BEFORE QUITING KOLIBRI Save all ' |
db 'NOTE: Apply all ' |
db 'SAVE YOUR SETTINGS BEFORE QUITING KOLIBRI Save all ' |
text2_strings = 2 |
;------------------------------------------------------------------------------- |
title db 'System setup',0 |
title db 'System setup',0 |
|
hex db '0123456789ABCDEF' |
hex db '0123456789ABCDEF' |
;------------------------------------------------------------------------------- |
include 'keymaps.inc' |
;------------------------------------------------------------------------------- |
read_fileinfo: |
dd 0 |
dd 0 |
dd 0 |
dd 28 |
dd keyboard |
db 0 |
dd file_name |
dd 0 |
dd 0 |
dd 0 |
dd 28 |
dd keyboard |
db 0 |
dd file_name |
;------------------------------------------------------------------------------- |
save_fileinfo: |
dd 2 |
dd 0 |
dd 0 |
dd 28 |
dd keyboard |
file_name: db '/sys/setup.dat',0 |
dd 2 |
dd 0 |
dd 0 |
dd 28 |
dd keyboard |
file_name: db '/sys/setup.dat',0 |
;------------------------------------------------------------------------------- |
keyboard dd 0x0 |
syslang dd 0x4 ; 4 - rus |
lba_read dd 0x1 |
pci_acc dd 0x1 |
mouse_speed dd 0x2 |
mouse_delay dd 0xa |
speaker_mute dd 0 ; 0 - enable, 1 - disable |
keyboard dd 0x0 |
syslang dd 0x4 ; 4 - rus |
lba_read dd 0x1 |
pci_acc dd 0x1 |
mouse_speed dd 0x2 |
mouse_delay dd 0xa |
speaker_mute dd 0 ; 0 - enable, 1 - disable |
;----------------------------------------------------------------------------- |
IM_END: |
;----------------------------------------------------------------------------- |
align 4 |
text00: |
rb LLL*(text1_strings + text2_strings)+4 |
rb LLL*(text1_strings + text2_strings)+4 |
;----------------------------------------------------------------------------- |
align 4 |
boot_param: |
procinfo: |
rb 1024 |
rb 1024 |
;----------------------------------------------------------------------------- |
align 4 |
rb 0x1000 |
rb 0x1000 |
stack_area: |
;----------------------------------------------------------------------------- |
I_END: |