Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
31 halyavin 1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2
;;                               ;;
3
;;          DEVICE SETUP         ;;
4
;;                               ;;
5
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
6
 
7
; Authors: Ville       - original version
8
;          A. Ivushkin - autostart (w launcher)
9
;          M. Lisovin  - added many feauters (apply all, save all, set time...)
10
;          I. Poddubny - fixed russian keymap
11
 
12
;******************************************************************************
13
  use32
14
  org      0x0
15
  db      'MENUET01'   ; 8 byte identifier
16
  dd      0x01           ; header version
17
  dd      START        ; pointer to program start
18
  dd      I_END        ; size of image
19
  dd      0x4000      ; reguired amount of memory
20
  dd      0x4000      ; stack pointer (esp)
21
  dd      I_PARAM,0    ; parameters, reserved
22
  include 'lang.inc'
23
  include 'macros.inc'
24
;******************************************************************************
25
 
26
LLL equ (56+3)
27
BBB equ 25
28
 
29
;******************************************************************************
30
apply_all:
31
 
32
    mov  eax,6            ; load saved settings from SETUP.DAT
33
    mov  ebx,filename
34
    xor  ecx,ecx
35
    or     edx,-1
36
    mov  esi,keyboard
37
    int  0x40
38
 
39
    call _midibase    ;1
40
    call _sound_dma    ;10
41
    call _pci_acc    ;12
42
    call _sb16        ;4
43
    call _wssp        ;6
44
    call _syslang    ;5
45
    call _keyboard    ;2
46
 
47
    call get_disk_info
48
    cmp  [cd],0
49
    jne  no_cd
50
    call _cdbase    ;3
51
  no_cd:
52
    cmp  [hd],0
53
    jne  no_hd
54
    call _lba_read    ;11
55
    call _hdbase    ;7
56
    call _f32p        ;8
57
  no_hd:
58
ret
59
;-------------------------------------------------------------------------------
60
get_disk_info:
61
    mov  [hd],1
62
    mov  [cd],1
63
    mov  [hdbase],0
64
    mov  [cdbase],0
65
    mcall 18,11,1,table_area
66
 
67
  ide_0:
68
    mov  al,[table_area+1]
69
    shr  al,6
70
    cmp  al,0
71
    je    ide_1
72
    cmp  al,01b
73
    jnz  ide_0_cd
74
    mov  [hdbase],1
75
    mov  [hd],0
76
    jmp  ide_1
77
 
78
  ide_0_cd:
79
    cmp  al,10b
80
    jnz  ide_1
81
    mov  [cdbase],1
82
    mov  [cd],0
83
    cmp  [hd],0
84
    je     all_device
85
 
86
  ide_1:
87
    mov  al,[table_area+1]
88
    shl  al,2
89
    shr  al,6
90
    cmp  al,0
91
    je    ide_2
92
    cmp  al,01b
93
    jnz  ide_1_cd
94
    cmp  [hd],0
95
    je     ide_11
96
    mov  [hdbase],2
97
    mov  [hd],0
98
  ide_11:
99
    cmp  [cd],0
100
    je     all_device
101
    jmp  ide_2
102
 
103
  ide_1_cd:
104
    cmp  al,10b
105
    jnz  ide_2
106
    cmp  [cd],0
107
    je     ide_11_cd
108
    mov  [cdbase],2
109
    mov  [cd],0
110
  ide_11_cd:
111
    cmp  [hd],0
112
    je     all_device
113
 
114
 ide_2:
115
    mov  al,[table_area+1]
116
    shl  al,4
117
    shr  al,6
118
    cmp  al,0
119
    je    ide_3
120
    cmp  al,01b
121
    jnz  ide_2_cd
122
    cmp  [hd],0
123
    je     ide_21
124
    mov  [hdbase],3
125
    mov  [hd],0
126
  ide_21:
127
    cmp  [cd],0
128
    je     all_device
129
    jmp  ide_3
130
 
131
  ide_2_cd:
132
    cmp  al,10b
133
    jnz  ide_3
134
    cmp  [cd],0
135
    je     ide_21_cd
136
    mov  [cdbase],3
137
    mov  [cd],0
138
  ide_21_cd:
139
    cmp  [hd],0
140
    je     all_device
141
 
142
  ide_3:
143
    mov  al,[table_area+1]
144
    shl  al,6
145
    shr  al,6
146
    cmp  al,0
147
    je    not_device
148
    cmp  al,01b
149
    jnz  ide_3_cd
150
    cmp  [hd],0
151
    je     ide_31
152
    mov  [hdbase],4
153
    mov  [hd],0
154
  ide_31:
155
    cmp  [cd],0
156
    jmp   all_device
157
 
158
  ide_3_cd:
159
    cmp  al,10b
160
    jnz  not_device
161
    cmp  [cd],0
162
    je     all_device
163
    mov  [cdbase],4
164
    mov  [cd],0
165
 
166
  all_device:
167
  not_device:
168
    ret
169
 
170
hd db 0
171
cd db 0
172
;******************************************************************************
173
apply_all_and_exit:
174
    call apply_all
175
    jmp  close
176
 
177
;******************************************************************************
178
set_language_and_exit:
179
    mov  eax,26
180
    mov  ebx,2
181
    mov  ecx,9
182
    int  0x40
183
;    cmp  eax,5
184
;    jne  @f
185
;    xor  eax,eax
186
;@@: mov  [keyboard],eax
187
    cmp  eax,1
188
    je    russian
189
    xor  eax,eax
190
set_lang_now:
191
    mov  [keyboard],eax
192
    call _keyboard
193
    jmp  close
194
russian:
195
    mov  eax,3
196
    jmp  set_lang_now
197
 
198
set_syslanguage_and_exit:
199
    mov  eax,26
200
    mov  ebx,5
201
;    mov  ecx,9
202
    int  0x40
203
    cmp  eax,4
204
    jne  temp    ;@f
205
    xor  eax,eax
206
;@@: inc  eax
207
temp: inc  eax
208
    mov  [syslang],eax
209
    call _syslang
210
    jmp  close
211
 
212
get_setup_values:
213
    mcall 26,1
214
    mov [midibase],eax
215
    mcall 26,2,9
216
    dec  eax
217
    mov [keyboard],eax
218
    mcall 26,3
219
    mov [cdbase],eax
220
    mcall 26,4
221
    mov [sb16],eax
222
    mcall 26,5
223
    mov [syslang],eax
224
    mcall 26,6
225
    cmp eax,0x530
226
    jne s_wss_2
227
    mov eax,1
228
    jmp get_other
229
s_wss_2:
230
    cmp eax,0x608
231
    jne s_wss_3
232
    mov eax,2
233
    jmp get_other
234
s_wss_3:
235
    cmp eax,0xe80
236
    jne s_wss_4
237
    mov eax,3
238
    jmp get_other
239
s_wss_4:
240
    mov eax,4
241
get_other:
242
    mov [wss],eax
243
    mcall 26,7
244
    mov [hdbase],eax
245
    mcall 26,8
246
    mov [f32p],eax
247
    mcall 26,10
248
    mov [sound_dma],eax
249
    mcall 26,11
250
    mov [lba_read],eax
251
    mcall 26,12
252
    mov [pci_acc],eax
253
    ret
254
 
255
;******************************************************************************
256
 
257
START:
258
    cmp  [I_PARAM], 'SLAN'
259
    je     set_syslanguage_and_exit
260
 
261
    cmp  [I_PARAM], 'LANG'
262
    je     set_language_and_exit
263
 
264
;    mov  eax,6                  ; load saved settings from SETUP.DAT
265
;    mov  ebx,filename
266
;    xor  ecx,ecx
267
;    or   edx,-1
268
;    mov  esi,keyboard
269
;    int  0x40
270
 
271
    cmp  [I_PARAM], 'BOOT'
272
    je     apply_all_and_exit
273
 
274
    call loadtxt
275
    call get_setup_values
276
red:
277
    call draw_window
278
 
279
still:
280
 
281
    cmp  word [blinkpar],0
282
    jne  blinker
283
    mov  eax,29         ;get system date
284
    int  0x40
285
    cmp  eax,[date]
286
    je     gettime
287
    mov  [date],eax
288
 gettime:
289
    mov  eax,3            ;get system time
290
    int  0x40
291
    cmp  ax,[time]
292
    je     sysevent
293
    mov  [time],ax
294
    call drawtime
295
 
296
 sysevent:
297
    mov  eax,23
298
    mov  ebx,8            ; wait here for event with timeout
299
    int  0x40
300
 
301
    cmp  eax,1
302
    jz     red
303
    cmp  eax,2
304
    jz     key
305
    cmp  eax,3
306
    jz     button
307
 
308
    jmp  still
309
 
310
 blinker:
311
    cmp  byte [count],6
312
    jb     noblink
313
    btc  dword [blinkpar],16
314
    mov  byte [count],0
315
    call drawtime
316
 noblink:
317
    inc  byte [count]
318
    jmp  sysevent
319
 
320
incdectime:
321
    cmp byte [blinkpar],0
322
    je    still
323
    mov esi,time
324
    mov bl,0x23  ;border
325
    cmp byte [blinkpar],1
326
    je    hours
327
    mov bl,0x59       ;minutes
328
    inc esi
329
  hours:
330
    mov al,byte [esi]
331
    cmp ah,112
332
    je    dectime
333
    cmp al,bl
334
    je    noinctime
335
     inc al
336
     daa
337
    jmp incdectime1
338
  noinctime:
339
    xor al,al
340
  incdectime1:
341
    mov byte [esi],al
342
    jmp still
343
  dectime:
344
    cmp al,0
345
    je    nodectime
346
    dec al
347
    das
348
    jmp incdectime1
349
  nodectime:
350
    mov al,bl
351
    jmp incdectime1
352
 
353
incdecdate:
354
    cmp byte [blinkpar+1],0
355
    je    still
356
    mov esi,date
357
    mov bl,0      ;border of years
358
    cmp byte [blinkpar+1],1
359
    jne days
360
    mov bl,0x12         ;months
361
    inc esi
362
  days:
363
    cmp byte [blinkpar+1],2
364
    jne nodays
365
    mov bl,0x31
366
    add esi,2
367
  nodays:
368
    mov al,byte [esi]
369
    cmp ah,122
370
    je    decdate
371
    cmp al,bl
372
    je    noincdate
373
    inc al ;add al,1
374
    daa
375
    jmp incdecdate1
376
  noincdate:
377
    mov al,1
378
  incdecdate1:
379
    mov byte [esi],al
380
    jmp still
381
  decdate:
382
    cmp al,1
383
    je    nodecdate
384
    dec al
385
    das
386
    jmp incdecdate1
387
  nodecdate:
388
    mov al,bl
389
    jmp incdecdate1
390
 
391
 
392
  key:
393
    ;mov  eax,2
394
    int  0x40
395
    cmp  ah,27
396
    jne  still
397
    mov  dword [blinkpar],0
398
    call drawtime
399
    jmp  still
400
 
401
  button:
402
 
403
    mov  eax,17
404
    int  0x40
405
 
406
    cmp  ah,112
407
    je     incdectime
408
    cmp  ah,113
409
    je     incdectime
410
    cmp  ah,122
411
    je     incdecdate
412
    cmp  ah,123
413
    je     incdecdate
414
    cmp  ah,111
415
    jne  noseltime
416
    mov  al, [blinkpar]
417
    cmp  al,2
418
    jae  seltime
419
    inc  al
420
    jmp  seltime1
421
  seltime:
422
    xor  al,al
423
  seltime1:
424
    mov  [blinkpar],al
425
    call drawtime
426
    jmp  still
427
noseltime:
428
    cmp  ah,121
429
    jne  noseldate
430
    mov  al,byte [blinkpar+1]
431
    cmp  al,3
432
    jae  seldate
433
    inc  al
434
    jmp  seldate1
435
 seldate:
436
    xor  al,al
437
 seldate1:
438
    mov  [blinkpar+1],al
439
    call drawtime
440
    jmp  still
441
noseldate:
442
    cmp  ah,99
443
    jne  nosaveall
444
    mov  eax,33
445
    mov  ebx,filename
446
    mov  ecx,keyboard
447
    mov  edx,48
448
    xor  esi,esi
449
    int  0x40
450
    call settime
451
    mov  dword [blinkpar],0
452
    call drawtime
453
    jmp  still
454
nosaveall:
455
    cmp  ah,100
456
    jne  no_apply_all
457
    call apply_all
458
    jmp  still
459
no_apply_all:
460
 
461
    cmp  ah,1             ; CLOSE APPLICATION
462
    jne  no_close
463
close:
464
    or     eax,-1
465
    int  0x40
466
  no_close:
467
 
468
    cmp  ah,11             ; SET MIDI BASE
469
    jnz  nosetbase1
470
    call _midibase
471
   nosetbase1:
472
    cmp  ah,12
473
    jnz  nomm
474
    sub  [midibase],2
475
    call draw_infotext
476
  nomm:
477
    cmp  ah,13
478
    jnz  nomp
479
    add  [midibase],2
480
    call draw_infotext
481
  nomp:
482
 
483
 
484
    cmp  ah,4             ; SET KEYBOARD
485
    jnz  nokm
486
    mov  eax,[keyboard]
487
    test eax,eax
488
    je     downuplbl
489
    dec  eax
490
    jmp  nodownup
491
   downuplbl:
492
    mov  eax,4
493
   nodownup:
494
    mov  [keyboard],eax
495
    call draw_infotext
496
  nokm:
497
    cmp  ah,5
498
    jnz  nokp
499
    mov  eax,[keyboard]
500
    cmp  eax,4
501
    je     updownlbl
502
    inc  eax
503
    jmp  noupdown
504
   updownlbl:
505
    xor  eax,eax
506
   noupdown:
507
    mov  [keyboard],eax
508
    call draw_infotext
509
  nokp:
510
 
511
 
512
    cmp  ah,22              ; SET CD BASE
513
    jnz  nocm
514
    mov  eax,[cdbase]
515
    sub  eax,2
516
    and  eax,3
517
    inc  eax
518
    mov  [cdbase],eax
519
    call draw_infotext
520
  nocm:
521
    cmp  ah,23
522
    jnz  nocp
523
    mov  eax,[cdbase]
524
    and  eax,3
525
    inc  eax
526
    mov  [cdbase],eax
527
    call draw_infotext
528
  nocp:
529
    cmp  ah,21
530
    jnz  nocs
531
    call _cdbase
532
  nocs:
533
 
534
    cmp  ah,62            ; SET HD BASE
535
    jnz  hnocm
536
    mov  eax,[hdbase]
537
    sub  eax,2
538
    and  eax,3
539
    inc  eax
540
    mov  [hdbase],eax
541
    call draw_infotext
542
  hnocm:
543
    cmp  ah,63
544
    jnz  hnocp
545
    mov  eax,[hdbase]
546
    and  eax,3
547
    inc  eax
548
    mov  [hdbase],eax
549
    call draw_infotext
550
  hnocp:
551
    cmp  ah,61
552
    jnz  hnocs
553
    call _hdbase
554
  hnocs:
555
 
556
    cmp  ah,82            ; SET SOUND DMA
557
    jne  no_sdma_d
558
    mov  eax,[sound_dma]
559
    dec  eax
560
   sdmal:
561
    and  eax,3
562
    mov  [sound_dma],eax
563
    call draw_infotext
564
    jmp  still
565
  no_sdma_d:
566
    cmp  ah,83
567
    jne  no_sdma_i
568
    mov  eax,[sound_dma]
569
    inc  eax
570
    jmp  sdmal
571
  no_sdma_i:
572
    cmp  ah,81
573
    jne  no_set_sound_dma
574
    call _sound_dma
575
    jmp  still
576
  no_set_sound_dma:
577
 
578
    cmp  ah,92             ; SET LBA READ
579
    jne  no_lba_d
580
  slbal:
581
    btc  [lba_read],0
582
    call draw_infotext
583
    jmp  still
584
   no_lba_d:
585
    cmp  ah,93
586
    jne  no_lba_i
587
    jmp  slbal
588
  no_lba_i:
589
    cmp  ah,91
590
    jne  no_set_lba_read
591
    call _lba_read
592
    jmp  still
593
   no_set_lba_read:
594
 
595
 
596
    cmp  ah,102           ; SET PCI ACCESS
597
    jne  no_pci_d
598
  pcip:
599
    btc  [pci_acc],0
600
    call draw_infotext
601
    jmp  still
602
  no_pci_d:
603
    cmp  ah,103
604
    jne  no_pci_i
605
    jmp  pcip
606
   no_pci_i:
607
    cmp  ah,101
608
    jne  no_set_pci_acc
609
    call _pci_acc
610
    jmp  still
611
  no_set_pci_acc:
612
 
613
 
614
  set_partition:
615
    cmp  ah,72            ; SET FAT32 PARTITION
616
    jnz  .nominus
617
    mov  eax,[f32p]
618
    sub  eax,2
619
;   and  eax,15          ; 3 - four partitions, 7 - eight p., 15 - sixteen, etc.
620
    cmp  eax,15
621
    jb    @f
622
    mov  eax,14
623
@@:
624
    inc  eax
625
    mov  [f32p],eax
626
    call draw_infotext
627
  .nominus:
628
    cmp  ah,73
629
    jnz  .noplus
630
    mov  eax,[f32p]
631
;   and  eax,15          ; 3 - four partitions, 7 - eight p., 15 - sixteen, etc.
632
    cmp  eax,15
633
    jb    @f
634
    mov  eax,0
635
@@:
636
    inc  eax
637
    mov  [f32p],eax
638
    call draw_infotext
639
  .noplus:
640
    cmp  ah,71
641
    jnz  .noapply
642
    call _f32p
643
  .noapply:
644
 
645
    cmp  ah,32            ; SET SOUND BLASTER 16 BASE
646
    jnz  nosbm
647
    sub  [sb16],2
648
    call draw_infotext
649
  nosbm:
650
    cmp  ah,33
651
    jnz  nosbp
652
    add  [sb16],2
653
    call draw_infotext
654
  nosbp:
655
    cmp  ah,31
656
    jnz  nosbs
657
    call _sb16
658
  nosbs:
659
 
660
    cmp  ah,52            ; SET WINDOWS SOUND SYSTEM BASE
661
    jnz  nowssm
662
    mov  eax,[wss]
663
    sub  eax,2
664
    and  eax,3
665
    inc  eax
666
    mov  [wss],eax
667
    call draw_infotext
668
  nowssm:
669
    cmp  ah,53
670
    jnz  nowssp
671
    mov  eax,[wss]
672
    and  eax,3
673
    inc  eax
674
    mov  [wss],eax
675
    call draw_infotext
676
  nowssp:
677
    cmp  ah,51
678
    jnz  nowsss
679
    call _wssp
680
  nowsss:
681
 
682
    cmp  ah,42              ; SET SYSTEM LANGUAGE BASE
683
    jnz  nosysm
684
    mov  eax,[syslang]
685
    dec  eax
686
    jz     still
687
    mov  [syslang],eax
688
    call draw_infotext
689
  nosysm:
690
    cmp  ah,43
691
    jnz  nosysp
692
    mov  eax,[syslang]
693
    cmp  eax,4
694
    je     nosysp
695
    inc  eax
696
    mov  [syslang],eax
697
    call draw_infotext
698
  nosysp:
699
    cmp  ah,41
700
    jnz  nosyss
701
    call _syslang
702
    call cleantxt
703
    call loadtxt
704
    call draw_window
705
    call drawtime
706
  nosyss:
707
 
708
    cmp  ah,3               ; SET KEYMAP
709
    jne  still
710
    call _keyboard
711
    jmp  still
712
 
713
  _keyboard:
714
    cmp [keyboard],0
715
    jnz  nosetkeyle
716
    mov  eax,21       ; english
717
    mov  ebx,2
718
    mov  ecx,1
719
    mov  edx,en_keymap
720
    int  0x40
721
    mov  eax,21
722
    inc  ecx
723
    mov  edx,en_keymap_shift
724
    int  0x40
725
    mov  eax,21
726
    mov  ecx,9
727
    mov  edx,1
728
    int  0x40
729
    call alt_gen
730
  nosetkeyle:
731
    cmp  [keyboard],1
732
    jnz  nosetkeylfi
733
    mov  eax,21       ; finnish
734
    mov  ebx,2
735
    mov  ecx,1
736
    mov  edx,fi_keymap
737
    int  0x40
738
    mov  eax,21
739
    inc  ecx
740
    mov  edx,fi_keymap_shift
741
    int  0x40
742
    mov  eax,21
743
    mov  ecx,9
744
    mov  edx,2
745
    int  0x40
746
    call alt_gen
747
  nosetkeylfi:
748
    cmp  [keyboard],2
749
    jnz  nosetkeylge
750
    mov  eax,21       ; german
751
    mov  ebx,2
752
    mov  ecx,1
753
    mov  edx,ge_keymap
754
    int  0x40
755
    mov  eax,21
756
    inc  ecx
757
    mov  edx,ge_keymap_shift
758
    int  0x40
759
    mov  eax,21
760
    mov  ecx,9
761
    mov  edx,3
762
    int  0x40
763
    call alt_gen
764
  nosetkeylge:
765
    cmp  [keyboard],3
766
    jnz  nosetkeylru
767
    mov  eax,21       ; russian
768
    mov  ebx,2
769
    mov  ecx,1
770
    mov  edx,ru_keymap
771
    int  0x40
772
    mov  eax,21
773
    inc  ecx
774
    mov  edx,ru_keymap_shift
775
    int  0x40
776
    call alt_gen
777
    mov  eax,21
778
    mov  ecx,9
779
    mov  edx,4
780
    int  0x40
781
  nosetkeylru:
782
    cmp  [keyboard],4          ;french
783
    jnz  nosetkeylfr
784
    mov  eax,21
785
    mov  ebx,2
786
    mov  ecx,1
787
    mov  edx,fr_keymap
788
    int  0x40
789
    mov  eax,21
790
    inc  ecx
791
    mov  edx,fr_keymap_shift
792
    int  0x40
793
    mov  eax,21
794
    inc  ecx
795
    mov  edx,fr_keymap_alt_gr
796
    int  0x40
797
    mov  eax,21
798
    mov  ecx,9
799
    mov  edx,5
800
    int  0x40
801
  nosetkeylfr:
802
    ret
803
 
804
 alt_gen:
805
   mov eax,21
806
   mov ecx,3
807
   mov edx,alt_general
808
   int 0x40
809
   ret
810
 
811
 
812
 
813
draw_buttons:
814
 
815
    pusha
816
 
817
    shl  ecx,16
818
    add  ecx,12
819
    mov  ebx,(350-50)*65536+46+BBB
820
 
821
    mov  eax,8
822
    int  0x40
823
 
824
    mov  ebx,(350-79)*65536+9
825
    inc  edx
826
    int  0x40
827
 
828
    mov  ebx,(350-67)*65536+9
829
    inc  edx
830
    int  0x40
831
 
832
    popa
833
    ret
834
 
835
 
836
 
837
; ********************************************
838
; ******* WINDOW DEFINITIONS AND DRAW  *******
839
; ********************************************
840
 
841
 
842
draw_window:
843
 
844
    pusha
845
 
846
    mov  eax,12
847
    mov  ebx,1
848
    int  0x40
849
 
850
    xor  eax,eax           ; DRAW WINDOW
851
    mov  ebx,40*65536+355+BBB
852
    mov  ecx,40*65536+300
853
    mov  edx,0x82111199
854
    mov  esi,0x805588dd
855
    mov  edi,0x005588dd
856
    int  0x40
857
 
858
    mov  eax,4
859
    mov  ebx,8*65536+8
860
    mov  ecx,0x10ffffff
861
    mov  edx,labelt
862
    cmp  [syslang],4
863
    je     ruslabel
864
    add  edx,20
865
  ruslabel:
866
    mov  esi,26
867
    int  0x40
868
 
869
    mov  eax,8               ; CLOSE BUTTON
870
    mov  ebx,(355+BBB-19)*65536+12
871
    mov  ecx,5*65536+12
872
    mov  edx,1
873
    mov  esi,0x005588dd
874
    int  0x40
875
                   ; APPLY ALL
876
    mov  ebx,(350-79)*65536+100
877
    mov  ecx,251*65536+12
878
    mov  edx,100
879
    int  0x40
880
    add  ecx,16*65536           ; SAVE ALL
881
    dec  edx
882
    int  0x40
883
 
884
    mov  esi,0x5580c0
885
 
886
    mov  edx,11
887
    mov  ecx,43
888
    call draw_buttons
889
 
890
    mov  edx,41
891
    mov  ecx,43+8*8
892
    call draw_buttons
893
 
894
    mov  edx,21
895
    mov  ecx,43+4*8
896
    call draw_buttons
897
 
898
    mov  edx,31
899
    mov  ecx,43+2*8
900
    call draw_buttons
901
 
902
    mov  edx,3
903
    mov  ecx,43+10*8
904
    call draw_buttons
905
 
906
    mov  edx,51
907
    mov  ecx,43+12*8
908
    call draw_buttons
909
 
910
    mov  edx,61
911
    mov  ecx,43+6*8
912
    call draw_buttons
913
 
914
    mov  edx,91
915
    mov  ecx,43+18*8
916
    call draw_buttons
917
 
918
    mov  edx,71
919
    mov  ecx,43+14*8
920
    call draw_buttons
921
 
922
    mov  edx,81
923
    mov  ecx,43+16*8
924
    call draw_buttons
925
 
926
    mov  edx,101
927
    mov  ecx,43+20*8
928
    call draw_buttons
929
 
930
    mov  edx,111
931
    mov  ecx,43+22*8 ; 22
932
    call draw_buttons
933
 
934
    mov  edx,121
935
    mov  ecx,43+24*8 ; 24
936
    call draw_buttons
937
 
938
    call draw_infotext
939
 
940
    mov  eax,12
941
    mov  ebx,2
942
    int  0x40
943
 
944
    popa
945
    ret
946
 
947
 
948
 
949
draw_infotext:
950
 
951
    pusha
952
 
953
    mov  eax,[keyboard]               ; KEYBOARD
954
    test eax,eax
955
    jnz  noen
956
    mov  [text00+LLL*10+28],dword 'ENGL'
957
    mov  [text00+LLL*10+32],dword 'ISH '
958
  noen:
959
    cmp  eax,1
960
    jnz  nofi
961
    mov  [text00+LLL*10+28],dword 'FINN'
962
    mov  [text00+LLL*10+32],dword 'ISH '
963
  nofi:
964
    cmp  eax,2
965
    jnz  noge
966
    mov  [text00+LLL*10+28],dword 'GERM'
967
    mov  [text00+LLL*10+32],dword 'AN  '
968
  noge:
969
    cmp  eax,3
970
    jnz  nogr
971
    mov  [text00+LLL*10+28],dword 'RUSS'
972
    mov  [text00+LLL*10+32],dword 'IAN '
973
  nogr:
974
    cmp  eax,4
975
    jnz  nofr
976
    mov  [text00+LLL*10+28],dword 'FREN'
977
    mov  [text00+LLL*10+32],dword 'CH  '
978
  nofr:
979
 
980
 
981
    mov  eax,[syslang]                ; SYSTEM LANGUAGE
982
    dec  eax
983
    test eax,eax
984
    jnz  noen5
985
    mov  [text00+LLL*8+28],dword 'ENGL'
986
    mov  [text00+LLL*8+32],dword 'ISH '
987
  noen5:
988
    cmp  eax,1
989
    jnz  nofi5
990
    mov  [text00+LLL*8+28],dword 'FINN'
991
    mov  [text00+LLL*8+32],dword 'ISH '
992
  nofi5:
993
    cmp  eax,2
994
    jnz  noge5
995
    mov  [text00+LLL*8+28],dword 'GERM'
996
    mov  [text00+LLL*8+32],dword 'AN  '
997
  noge5:
998
    cmp  eax,3
999
    jnz  nogr5
1000
    mov  [text00+LLL*8+28],dword 'RUSS'
1001
    mov  [text00+LLL*8+32],dword 'IAN '
1002
  nogr5:
1003
    cmp  eax,4
1004
    jne  nofr5
1005
    mov  [text00+LLL*8+28],dword 'FREN'
1006
    mov  [text00+LLL*8+32],dword 'CH  '
1007
  nofr5:
1008
 
1009
 
1010
    mov  eax,[midibase]
1011
    mov  esi,text00+LLL*0+32
1012
    call hexconvert                 ; MIDI BASE
1013
 
1014
 
1015
    mov  eax,[sb16]                 ; SB16 BASE
1016
    mov  esi,text00+LLL*2+32
1017
    call hexconvert
1018
 
1019
 
1020
    mov  eax,[wss]                 ; WSS BASE
1021
    cmp  eax,1
1022
    jnz  nowss1
1023
    mov  [wssp],dword 0x530
1024
  nowss1:
1025
    cmp  eax,2
1026
    jnz  nowss2
1027
    mov  [wssp],dword 0x608
1028
  nowss2:
1029
    cmp  eax,3
1030
    jnz  nowss3
1031
    mov  [wssp],dword 0xe80
1032
  nowss3:
1033
    cmp  eax,4
1034
    jnz  nowss4
1035
    mov  [wssp],dword 0xf40
1036
  nowss4:
1037
 
1038
    mov  eax,[wssp]
1039
    mov  esi,text00+LLL*12+32
1040
    call hexconvert
1041
 
1042
    mov  eax,[cdbase]                ; CD BASE
1043
    cmp  eax,1
1044
    jnz  noe1
1045
    mov  [text00+LLL*4+28],dword 'PRI.'
1046
    mov  [text00+LLL*4+32],dword 'MAST'
1047
    mov  [text00+LLL*4+36],dword 'ER  '
1048
  noe1:
1049
    cmp  eax,2
1050
    jnz  nof1
1051
    mov  [text00+LLL*4+28],dword 'PRI.'
1052
    mov  [text00+LLL*4+32],dword 'SLAV'
1053
    mov  [text00+LLL*4+36],dword 'E   '
1054
  nof1:
1055
    cmp  eax,3
1056
    jnz  nog1
1057
    mov  [text00+LLL*4+28],dword 'SEC.'
1058
    mov  [text00+LLL*4+32],dword 'MAST'
1059
    mov  [text00+LLL*4+36],dword 'ER  '
1060
  nog1:
1061
    cmp  eax,4
1062
    jnz  nog2
1063
    mov  [text00+LLL*4+28],dword 'SEC.'
1064
    mov  [text00+LLL*4+32],dword 'SLAV'
1065
    mov  [text00+LLL*4+36],dword 'E   '
1066
  nog2:
1067
 
1068
 
1069
    mov  eax,[hdbase]                  ; HD BASE
1070
    cmp  eax,1
1071
    jnz  hnoe1
1072
    mov  [text00+LLL*6+28],dword 'PRI.'
1073
    mov  [text00+LLL*6+32],dword 'MAST'
1074
    mov  [text00+LLL*6+36],dword 'ER  '
1075
  hnoe1:
1076
    cmp  eax,2
1077
    jnz  hnof1
1078
    mov  [text00+LLL*6+28],dword 'PRI.'
1079
    mov  [text00+LLL*6+32],dword 'SLAV'
1080
    mov  [text00+LLL*6+36],dword 'E   '
1081
  hnof1:
1082
    cmp  eax,3
1083
    jnz  hnog1
1084
    mov  [text00+LLL*6+28],dword 'SEC.'
1085
    mov  [text00+LLL*6+32],dword 'MAST'
1086
    mov  [text00+LLL*6+36],dword 'ER  '
1087
  hnog1:
1088
    cmp  eax,4
1089
    jnz  hnog2
1090
    mov  [text00+LLL*6+28],dword 'SEC.'
1091
    mov  [text00+LLL*6+32],dword 'SLAV'
1092
    mov  [text00+LLL*6+36],dword 'E   '
1093
  hnog2:
1094
 
1095
 
1096
    mov  eax,[f32p]              ; FAT32 PARTITION
1097
    add  al,48
1098
    mov  [text00+LLL*14+28],al
1099
 
1100
    mov  eax,[sound_dma]          ; SOUND DMA
1101
    add  eax,48
1102
    mov  [text00+LLL*16+28],al
1103
 
1104
    mov  eax,[lba_read]
1105
    call onoff                  ; LBA READ
1106
    mov  [text00+LLL*18+28],ebx
1107
 
1108
    mov  eax,[pci_acc]
1109
    call onoff                  ; PCI ACCESS
1110
    mov  [text00+LLL*20+28],ebx
1111
 
1112
    mov  eax,13
1113
    mov  ebx,175*65536+85
1114
    mov  ecx,40*65536+205
1115
    mov  edx,0x80111199-19
1116
    int  0x40
1117
 
1118
    mov  edx,text00
1119
    mov  ebx,10*65536+45
1120
    mov  eax,4
1121
    mov  ecx,0xffffff
1122
    mov  esi,LLL
1123
  newline:
1124
    int  0x40
1125
    add  ebx,8
1126
    add  edx,LLL
1127
    cmp  [edx],byte 'x'
1128
    jnz  newline
1129
 
1130
    popa
1131
    ret
1132
 
1133
  drawtime:
1134
    mov  ax,[time]              ;hours 22
1135
    mov  cl,1
1136
    call unpacktime
1137
    mov  [text00+LLL*22+28],word bx
1138
    mov  al,ah                  ;minutes
1139
    inc  cl
1140
    call unpacktime
1141
    mov  [text00+LLL*22+31],word bx
1142
    mov  eax,[date]
1143
    mov  ch,3
1144
    call unpackdate
1145
    mov  [text00+LLL*24+34],word bx      ;year   24
1146
    mov  al,ah
1147
    mov  ch,1
1148
    call unpackdate
1149
    mov  [text00+LLL*24+28],word bx      ;month
1150
    bswap eax
1151
    mov  al,ah
1152
    inc  ch
1153
    call unpackdate
1154
    mov  [text00+LLL*24+31],word bx      ;day
1155
 
1156
    mov  eax,13
1157
    mov  ebx,175*65536+85
1158
    mov  ecx,40*65536+205
1159
    mov  edx,0x80111199-19
1160
    int  0x40
1161
 
1162
    mov  edx,text00
1163
    mov  ebx,10*65536+45
1164
    mov  eax,4
1165
    mov  ecx,0xffffff
1166
    mov  esi,LLL
1167
  newline1:
1168
    int  0x40
1169
    add  ebx,8
1170
    add  edx,LLL
1171
    cmp  [edx],byte 'x'
1172
    jnz  newline1
1173
    ret
1174
 
1175
  unpacktime:
1176
    cmp  byte [blinkpar],cl      ;translate packed number to ascii
1177
    jne  unpack1
1178
  chkblink:
1179
    bt dword [blinkpar],16
1180
    jnc  unpack1
1181
    xor  bx,bx
1182
    ret
1183
  unpackdate:
1184
    cmp  byte [blinkpar+1],ch
1185
    je     chkblink
1186
  unpack1:
1187
    xor  bx,bx
1188
    mov  bh,al
1189
    mov  bl,al
1190
    and  bh,0x0f
1191
    shr  bl,4
1192
    add  bx,0x3030
1193
    ret
1194
 
1195
  hexconvert:          ;converting dec to hex in ascii
1196
    xor  ebx,ebx
1197
    mov  bl,al
1198
    and  bl,15
1199
    add  ebx,hex
1200
    mov  cl,[ebx]
1201
    mov  [esi],cl
1202
    shr  eax,4
1203
    xor  ebx,ebx
1204
    mov  bl,al
1205
    and  bl,15
1206
    add  ebx,hex
1207
    mov  cl,[ebx]
1208
    dec  esi
1209
    mov  [esi],cl
1210
    shr  eax,4
1211
    xor  ebx,ebx
1212
    mov  bl,al
1213
    and  bl,15
1214
    add  ebx,hex
1215
    mov  cl,[ebx]
1216
    dec  esi
1217
    mov  [esi],cl
1218
    ret
1219
 
1220
onoff:
1221
    cmp [syslang],4
1222
    jne norus1
1223
    mov ebx,'„€  '
1224
    cmp eax,1
1225
    je    exitsub
1226
    mov ebx,'…’ '
1227
    ret
1228
 norus1:
1229
    mov ebx,'ON  '
1230
    cmp eax,1
1231
    je    exitsub
1232
    mov ebx,'OFF '
1233
 exitsub:
1234
    ret
1235
 
1236
_midibase:
1237
    mov  eax,21
1238
    mov  ebx,1
1239
    mov  ecx,[midibase]
1240
    int  0x40
1241
 ret
1242
 
1243
_cdbase:
1244
    mov  eax,21
1245
    mov  ebx,3
1246
    mov  ecx,[cdbase]
1247
    int  0x40
1248
 ret
1249
 
1250
_hdbase:
1251
    mov  eax,21
1252
    mov  ebx,7
1253
    mov  ecx,[hdbase]
1254
    int  0x40
1255
    ret
1256
 
1257
_sound_dma:
1258
    mov  eax,21
1259
    mov  ebx,10
1260
    mov  ecx,[sound_dma]
1261
    int  0x40
1262
    ret
1263
 
1264
_lba_read:
1265
    mov  eax,21
1266
    mov  ebx,11
1267
    mov  ecx,[lba_read]
1268
    int  0x40
1269
    ret
1270
 
1271
_pci_acc:
1272
    mov  eax,21
1273
    mov  ebx,12
1274
    mov  ecx,[pci_acc]
1275
    int  0x40
1276
    ret
1277
 
1278
_f32p:
1279
    mov  eax,21
1280
    mov  ebx,8
1281
    mov  ecx,[f32p]
1282
    int  0x40
1283
 ret
1284
 
1285
_sb16:
1286
    mov  eax,21
1287
    mov  ebx,4
1288
    mov  ecx,[sb16]
1289
    int  0x40
1290
    ret
1291
 
1292
_wssp:
1293
    mov  eax,21
1294
    mov  ebx,6
1295
    mov  ecx,[wssp]
1296
    int  0x40
1297
 ret
1298
 
1299
_syslang:
1300
    mov  eax,21
1301
    mov  ebx,5
1302
    mov  ecx,[syslang]
1303
    int  0x40
1304
 ret
1305
 
1306
loadtxt:
1307
    cld
1308
    mov  edi,text00
1309
    mov  ecx,428
1310
    cmp  [syslang],4
1311
    jne  norus
1312
    mov  esi,textrus
1313
    jmp  sload
1314
  norus:
1315
    mov  esi,texteng
1316
  sload:
1317
    rep  movsd
1318
    ret
1319
 
1320
cleantxt:
1321
    xor  eax,eax
1322
    mov  ecx,428
1323
    cld
1324
    mov  edi,text00
1325
    rep stosd
1326
    mov  [text00+1711],byte 'x'
1327
    ret
1328
 
1329
settime:
1330
    mov  dx,0x70
1331
    call startstopclk
1332
    dec  dx
1333
    mov  al,2         ;set minutes
1334
    out  dx,al
1335
    inc  dx
1336
    mov  al,byte [time+1]
1337
    out  dx,al
1338
    dec  dx
1339
    mov  al,4         ;set hours
1340
    out  dx,al
1341
    inc  dx
1342
    mov  al,byte [time]
1343
    out  dx,al
1344
    dec  dx
1345
    mov  al,7         ;set day
1346
    out  dx,al
1347
    inc  dx
1348
    mov  al,byte [date+2]
1349
    out  dx,al
1350
    dec  dx
1351
    mov  al,8         ;set month
1352
    out  dx,al
1353
    inc  dx
1354
    mov  al,byte [date+1]
1355
    out  dx,al
1356
    dec  dx
1357
    mov  al,9         ;set year
1358
    out  dx,al
1359
    inc  dx
1360
    mov  al,byte [date]
1361
    out  dx,al
1362
    dec  dx
1363
    call startstopclk
1364
    ret
1365
 
1366
startstopclk:
1367
    mov  al,0x0b
1368
    out  dx,al
1369
    inc  dx
1370
    in     al,dx
1371
    btc  ax,7
1372
    out  dx,al
1373
    ret
1374
 
1375
; DATA AREA
1376
count:      db 0x0
1377
blinkpar: dd 0x0
1378
time:      dw 0x0
1379
date:      dd 0x0
1380
 
1381
filename: db 'SETUP   DAT',0
1382
 
1383
textrus:
1384
 
1385
    db ' §  MIDI ROLAND MPU-401  : 0x320           - +   ਬ¥­¨âì'
1386
    db '                                                           '
1387
    db ' §  SoundBlaster 16      : 0x240           - +   ਬ¥­¨âì'
1388
    db '                                                           '
1389
    db ' §  CD-ROM               : PRI.SLAVE       - +   ਬ¥­¨âì'
1390
    db '                                                           '
1391
    db ' §  †„-1                 : PRI.MASTER      - +   ਬ¥­¨âì'
1392
    db '                                                           '
1393
    db 'Ÿ§ëª á¨áâ¥¬ë              : ENGLISH         - +   ਬ¥­¨âì'
1394
    db '                                                           '
1395
    db ' áª« ¤ª  ª« ¢¨ âãàë      : ENGLISH         - +   ਬ¥­¨âì'
1396
    db '                                                           '
1397
    db ' §  WSS                  : 0x200           - +   ਬ¥­¨âì'
1398
    db '                                                           '
1399
    db ' §¤¥« FAT32 ­  †„-1      : 1               - +   ਬ¥­¨âì'
1400
    db '                                                           '
1401
    db '‡¢ãª®¢®© ª ­ « DMA        : 1               - +   ਬ¥­¨âì'
1402
    db '                                                           '
1403
    db '‚ª«îç¨âì LBA              : OFF             - +   ਬ¥­¨âì'
1404
    db '                                                           '
1405
    db '„®áâ㯠ª 設¥ PCI         : OFF             - +   ਬ¥­¨âì'
1406
    db '                                                           '
1407
    db '‘¨á⥬­®¥ ¢à¥¬ï           :  0:00           - +     ‚ë¡®à  '
1408
    db '                                                           '
1409
    db '‘¨á⥬­ ï ¤ â  (¬,¤,£)    : 00/00/00        - +     ‚ë¡®à  '
1410
    db '                                                           '
1411
    db '‚ˆŒ€ˆ…:                                    ਬ¥­¨âì ¢á¥ '
1412
    db 'ˆ‘Ž‹œ‡“‰’… „Ž‘’“ Š FAT-32 Ž‘’ŽŽ†Ž!                     '
1413
    db '… ‡€“„œ’… ‘Ž•€ˆ’œ €‘’Ž‰Šˆ              ‘®åà ­¨âì ¢á¥ '
1414
    db 'x'
1415
 
1416
texteng:
1417
 
1418
    db 'MIDI: ROLAND MPU-401 BASE : 0x320           - +     APPLY  '
1419
    db '                                                           '
1420
    db 'SOUND: SB16 BASE          : 0x240           - +     APPLY  '
1421
    db '                                                           '
1422
    db 'CD-ROM BASE               : PRI.SLAVE       - +     APPLY  '
1423
    db '                                                           '
1424
    db 'HARDDISK-1 BASE           : PRI.MASTER      - +     APPLY  '
1425
    db '                                                           '
1426
    db 'SYSTEM LANGUAGE           : ENGLISH         - +     APPLY  '
1427
    db '                                                           '
1428
    db 'KEYBOARD LAYOUT           : ENGLISH         - +     APPLY  '
1429
    db '                                                           '
1430
    db 'WINDOWS SOUND SYSTEM BASE : 0x200           - +     APPLY  '
1431
    db '                                                           '
1432
    db 'FAT32-1 PARTITION IN HD-1 : 1               - +     APPLY  '
1433
    db '                                                           '
1434
    db 'SOUND DMA CHANNEL         : 1               - +     APPLY  '
1435
    db '                                                           '
1436
    db 'LBA READ ENABLED          : OFF             - +     APPLY  '
1437
    db '                                                           '
1438
    db 'PCI ACCESS FOR APPL.      : OFF             - +     APPLY  '
1439
    db '                                                           '
1440
    db 'SYSTEM TIME               :  0:00           - +    SELECT  '
1441
    db '                                                           '
1442
    db 'SYSTEM DATE (M,D,Y)       : 00/00/00        - +    SELECT  '
1443
    db '                                                           '
1444
    db 'NOTE:                                           APPLY ALL  '
1445
    db 'TEST FAT32 FUNCTIONS WITH EXTREME CARE                     '
1446
    db 'SAVE YOUR SETTINGS BEFORE QUIT MENUET           SAVE ALL   '
1447
    db 'x'
1448
 
1449
labelt:
1450
    db     '€‘’Ž‰Š€ “‘’Ž‰‘’‚ MENUET DEVICE SETUP       '
1451
 
1452
hex db     '0123456789ABCDEF'
1453
 
1454
alt_general:
1455
 
1456
;     db   ' ',27
1457
;     db   ' @ $  {[]}\ ',8,9
1458
;     db   '            ',13
1459
;     db   '             ',0,'           ',0,'4',0,' '
1460
;     db   '             ',180,178,184,'6',176,'7'
1461
;     db   179,'8',181,177,183,185,182
1462
;     db   'ABCD',255,'FGHIJKLMNOPQRSTUVWXYZ'
1463
;     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
1464
;     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
1465
;     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
1466
 
1467
 
1468
en_keymap:
1469
 
1470
     db   '6',27
1471
     db   '1234567890-=',8,9
1472
     db   'qwertyuiop[]',13
1473
     db   '~asdfghjkl;',39,96,0,'\zxcvbnm,./',0,'45 '
1474
     db   '@234567890123',180,178,184,'6',176,'7'
1475
     db   179,'8',181,177,183,185,182
1476
     db   'AB
1477
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
1478
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
1479
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
1480
 
1481
 
1482
en_keymap_shift:
1483
 
1484
     db   '6',27
1485
     db   '!@#$%^&*()_+',8,9
1486
     db   'QWERTYUIOP{}',13
1487
     db   '~ASDFGHJKL:"~',0,'|ZXCVBNM<>?',0,'45 '
1488
     db   '@234567890123',180,178,184,'6',176,'7'
1489
     db   179,'8',181,177,183,185,182
1490
     db   'AB>D',255,'FGHIJKLMNOPQRSTUVWXYZ'
1491
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
1492
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
1493
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
1494
 
1495
 
1496
fr_keymap:
1497
 
1498
     db   '6',27
1499
     db   '&Ž"',39,'(-_“)=',8,9
1500
     db   'azertyuiop^$',13
1501
     db   '~qsdfghjklm’',0,0,'*wxcvbn,;:!',0,'45 '
1502
     db   '@234567890123',180,178,184,'6',176,'7'
1503
     db   179,'8',181,177,183,185,182
1504
     db   'AB
1505
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
1506
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
1507
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
1508
 
1509
 
1510
 
1511
fr_keymap_shift:
1512
 
1513
 
1514
     db   '6',27
1515
     db   '1234567890+',8,9
1516
     db   'AZERTYUIOP•”',13
1517
     db   '~QSDFGHJKLM%',0,'–WXCVBN?./',0,'45 '
1518
     db   '@234567890123',180,178,184,'6',176,'7'
1519
     db   179,'8',181,177,183,185,182
1520
     db   'AB>D',255,'FGHIJKLMNOPQRSTUVWXYZ'
1521
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
1522
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
1523
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
1524
 
1525
 
1526
fr_keymap_alt_gr:
1527
 
1528
 
1529
     db   '6',27
1530
     db   28,'~#{[|˜\^@]}',8,9
1531
     db   'azertyuiop^$',13
1532
     db   '~qsdfghjklm’',0,0,'*wxcvbn,;:!',0,'45 '
1533
     db   '@234567890123',180,178,184,'6',176,'7'
1534
     db   179,'8',181,177,183,185,182
1535
     db   'AB
1536
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
1537
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
1538
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
1539
 
1540
 
1541
 
1542
 
1543
fi_keymap:
1544
 
1545
     db   '6',27
1546
     db   '1234567890+[',8,9
1547
     db   'qwertyuiop',192,'~',13
1548
     db   '~asdfghjkl',194,193,'1',0,39,'zxcvbnm,.-',0,'45 '
1549
     db   '@234567890123',180,178,184,'6',176,'7'
1550
     db   179,'8',181,177,183,185,182
1551
     db   'AB
1552
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
1553
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
1554
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
1555
 
1556
 
1557
fi_keymap_shift:
1558
 
1559
     db   '6',27
1560
     db   '!"#%&/()=?]',8,9
1561
     db   'QWERTYUIOP',200,'~',13
1562
     db   '~ASDFGHJKL',202,201,'1',0,'*ZXCVBNM;:_',0,'45 '
1563
     db   '@234567890123',180,178,184,'6',176,'7'
1564
     db   179,'8',181,177,183,185,182
1565
     db   'AB>D',255,'FGHIJKLMNOPQRSTUVWXYZ'
1566
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
1567
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
1568
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
1569
 
1570
 
1571
 
1572
ge_keymap:
1573
 
1574
     db   '6',27
1575
     db   '1234567890?[',8,9
1576
     db   'qwertzuiop',203,'~',13
1577
     db   '~asdfghjkl',194,193,'1',0,39,'yxcvbnm,.-',0,'45 '
1578
     db   '@234567890123',180,178,184,'6',176,'7'
1579
     db   179,'8',181,177,183,185,182
1580
     db   'AB
1581
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
1582
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
1583
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
1584
 
1585
 
1586
ge_keymap_shift:
1587
 
1588
     db   '6',27
1589
     db   '!"#$%&/()=',197,']',8,9
1590
     db   'QWERTZUIOP',195,'~',13
1591
     db   '~ASDFGHJKL',202,201,'1',0,'*YXCVBNM;:_',0,'45 '
1592
     db   '@234567890123',180,178,184,'6',176,'7'
1593
     db   179,'8',181,177,183,185,182
1594
     db   'AB>D',255,'FGHIJKLMNOPQRSTUVWXYZ'
1595
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
1596
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
1597
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
1598
 
1599
ru_keymap:
1600
 
1601
     db   '6',27
1602
     db   '1234567890-=',8,9
1603
     db   '©æ㪥­£èé§åê',13
1604
     db   0,"ä뢠¯à®«¤¦í"
1605
     db   0xf1, '-/'
1606
     db   "ïçᬨâì¡î",'.-','45 '
1607
     db   '@234567890123',180,178,184,'6',176,'7'
1608
     db   179,'8',181,177,183,185,182
1609
     db   'AB
1610
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
1611
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
1612
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
1613
 
1614
 
1615
 
1616
ru_keymap_shift:
1617
 
1618
     db   '6',27
1619
     db   '!"N;%:?*()_+',8,0
1620
     db   "‰–“Š…ƒ˜™‡•š",13
1621
     db   0,"”›‚€Ž‹„†"
1622
     db   0xf0, '-\'
1623
     db   "Ÿ—‘Œˆ’œž",',-','45 '
1624
     db   '@234567890123',180,178,184,'6',176,'7'
1625
     db   179,'8',181,177,183,185,182
1626
     db   'AB>D',255,'FGHIJKLMNOPQRSTUVWXYZ'
1627
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
1628
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
1629
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
1630
 
1631
I_PARAM   dd 0
1632
 
1633
keyboard  dd 0x0
1634
midibase  dd 0x320
1635
cdbase      dd 0x2
1636
sb16      dd 0x220
1637
syslang   dd 0x1
1638
wss      dd 0x1
1639
wssp      dd 0x0
1640
hdbase      dd 0x1
1641
f32p      dd 0x1
1642
sound_dma dd 0x1
1643
lba_read  dd 0x1
1644
pci_acc   dd 0x1
1645
 
1646
text00:
1647
 
1648
I_END:
1649
table_area: