Subversion Repositories Kolibri OS

Rev

Rev 387 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 387 Rev 413
Line 3... Line 3...
3
format MS COFF
3
format MS COFF
Line 4... Line 4...
4
 
4
 
-
 
5
 
Line 5... Line 6...
5
 
6
include 'proc32.inc'
Line 6... Line 7...
6
include 'proc32.inc'
7
include 'imports.inc'
Line 50... Line 51...
50
BIT29 EQU 0x20000000
51
BIT29 EQU 0x20000000
51
BIT30 EQU 0x40000000
52
BIT30 EQU 0x40000000
52
BIT31 EQU 0x80000000
53
BIT31 EQU 0x80000000
53
 
54
 
Line 54... Line -...
54
VID_INTEL	  equ 0x8086
-
 
55
VID_NVIDIA        equ 0x10DE
-
 
56
 
-
 
57
CTRL_ICH	  equ 0x2415
-
 
58
CTRL_ICH0	  equ 0x2425
-
 
59
CTRL_ICH2	  equ 0x2435
-
 
60
CTRL_ICH3	  equ 0x2445
-
 
61
CTRL_ICH4	  equ 0x24C5
-
 
62
CTRL_ICH5	  equ 0x24D5
-
 
63
CTRL_ICH6	  equ 0x266E
-
 
64
CTRL_ICH7	  equ 0x27DE
-
 
65
 
-
 
66
CTRL_NFORCE       equ 0x01B1
-
 
67
CTRL_NFORCE2      equ 0x006A
-
 
68
CTRL_NFORCE3      equ 0x00DA
-
 
69
 
-
 
Line 70... Line 55...
70
 
55
 
71
PCM_OUT_BDL	  equ  0x10	 ; PCM out buffer descriptors list
56
PCM_OUT_BDL	  equ  0x10	 ; PCM out buffer descriptors list
72
PCM_OUT_CR_REG	  equ  0x1b	 ; PCM out Control Register
57
PCM_OUT_CR_REG	  equ  0x1b	 ; PCM out Control Register
73
PCM_OUT_LVI_REG   equ  0x15	 ; PCM last valid index
58
PCM_OUT_LVI_REG   equ  0x15	 ; PCM last valid index
Line 264... Line 249...
264
end virtual
249
end virtual
265
 
250
 
Line 266... Line 251...
266
EVENT_NOTIFY	      equ 0x00000200
251
EVENT_NOTIFY	      equ 0x00000200
Line 267... Line 252...
267
 
252
 
268
OS_BASE 	      equ 0;  0x80400000
253
OS_BASE         equ 0;
269
new_app_base	      equ 0x60400000;   0x01000000
254
SLOT_BASE       equ OS_BASE+0x0080000
Line 270... Line 255...
270
PROC_BASE	      equ OS_BASE+0x0080000
255
new_app_base    equ 0x80000000
271
 
-
 
272
public START
256
 
273
public STOP
-
 
274
public service_proc
-
 
275
 
-
 
276
extrn AttachIntHandler
-
 
277
extrn SysMsgBoardStr
-
 
278
extrn PciApi
-
 
279
extrn PciRead32
-
 
280
extrn PciRead8
-
 
281
extrn PciWrite8
-
 
282
extrn AllocKernelSpace
257
public START
283
extrn MapPage
-
 
284
extrn RegService
-
 
285
extrn KernelAlloc
-
 
Line 286... Line 258...
286
extrn GetPgAddr
258
public service_proc
Line -... Line 259...
-
 
259
public version
-
 
260
 
-
 
261
section '.flat' code readable align 16
-
 
262
 
287
extrn GetCurrentTask
263
proc START stdcall, state:dword
288
 
264
 
289
section '.flat' code readable align 16
265
           cmp [state], 1
290
 
266
           jne .stop
291
START:
267
 
Line 292... Line 268...
292
     if DEBUG
268
     if DEBUG
293
	   mov esi, msgInit
269
           mov esi, msgDetect
294
           call SysMsgBoardStr
270
           call SysMsgBoardStr
Line 295... Line 271...
295
     end if
271
     end if
296
 
272
 
297
	   call detect_controller
273
           call detect_controller
298
	   test eax, eax
274
           test eax, eax
299
           jz .fail
275
           jz .fail
Line 300... Line 276...
300
 
276
 
301
     if DEBUG
-
 
302
	   mov esi,[ctrl.vendor_ids]
277
     if DEBUG
303
           call SysMsgBoardStr
278
           mov esi,[ctrl.vendor_ids]
304
	   mov	  esi, [ctrl.ctrl_ids]
279
           call SysMsgBoardStr
Line -... Line 280...
-
 
280
           mov   esi, [ctrl.ctrl_ids]
-
 
281
           call SysMsgBoardStr
305
           call SysMsgBoardStr
282
 
306
 
283
     end if
307
     end if
284
           call init_controller
308
 
285
           test eax, eax
Line 309... Line 286...
309
           call init_controller
286
           jz .fail
310
           test eax, eax
287
 
311
           jz .fail
288
           jmp .fail      ;force fail
Line 312... Line 289...
312
 
289
 
313
     if DEBUG
290
     if DEBUG
314
           mov esi, msgInitCodec
291
           mov esi, msgInitCodec
Line 315... Line 292...
315
           call SysMsgBoardStr
292
           call SysMsgBoardStr
316
     end if
293
     end if
317
 
294
 
Line 318... Line 295...
318
           call init_codec
295
           call init_codec
319
           test eax, eax
296
           test eax, eax
Line 334... Line 311...
334
           call SysMsgBoardStr
311
           call SysMsgBoardStr
335
 
312
 
Line 336... Line 313...
336
           call create_primary_buff
313
           call create_primary_buff
Line 337... Line -...
337
 
-
 
338
;     if REMAP_IRQ
-
 
339
 
-
 
340
;           call get_LPC_bus
-
 
341
;           cmp eax, -1
-
 
342
;           jz .fail
-
 
343
 
-
 
344
;           mov [lpc_bus], 0  ;eax
-
 
345
;           call remap_irq
-
 
346
;     end if
-
 
347
 
314
 
348
           mov eax, VALID_IRQ
315
           mov eax, VALID_IRQ
349
           mov ebx, [ctrl.int_line]
316
           mov ebx, [ctrl.int_line]
350
           mov esi, msgInvIRQ
317
           mov esi, msgInvIRQ
351
           bt eax, ebx
318
           bt eax, ebx
Line 359... Line 326...
359
           stdcall RegService, sz_sound_srv, service_proc
326
           stdcall RegService, sz_sound_srv, service_proc
360
	   ret
327
	   ret
361
.fail:
328
.fail:
362
     if DEBUG
329
     if DEBUG
363
	   mov esi, msgFail
330
           mov esi, msgFail
364
           call SysMsgBoardStr
331
           call SysMsgBoardStr
365
     end if
332
     end if
366
	   xor eax, eax
333
           xor eax, eax
367
STOP:
334
           ret
368
           ret
-
 
369
 
335
.stop:
-
 
336
           call stop
-
 
337
           xor eax, eax
-
 
338
           ret
-
 
339
endp
-
 
340
 
Line 370... Line 341...
370
handle     equ  IOCTL.handle
341
handle     equ  IOCTL.handle
371
io_code    equ  IOCTL.io_code
342
io_code    equ  IOCTL.io_code
372
input      equ  IOCTL.input
343
input      equ  IOCTL.input
373
inp_size   equ  IOCTL.inp_size
344
inp_size   equ  IOCTL.inp_size
Line 378... Line 349...
378
proc service_proc stdcall, ioctl:dword
349
proc service_proc stdcall, ioctl:dword
379
 
350
 
Line 380... Line 351...
380
           mov edi, [ioctl]
351
           mov edi, [ioctl]
381
           mov eax, [edi+io_code]
352
           mov eax, [edi+io_code]
382
	   cmp eax, DEV_PLAY
353
           cmp eax, DEV_PLAY
383
	   jne @F
354
           jne @F
384
     if DEBUG
355
     if DEBUG
385
	   mov esi, msgPlay
356
           mov esi, msgPlay
386
           call SysMsgBoardStr
357
           call SysMsgBoardStr
387
     end if
358
     end if
388
	   call play
359
           call play
389
	   ret
360
           ret
390
@@:
361
@@:
391
	   cmp eax, DEV_STOP
362
           cmp eax, DEV_STOP
392
	   jne @F
363
           jne @F
393
     if DEBUG
364
     if DEBUG
394
	   mov esi, msgStop
365
           mov esi, msgStop
395
           call SysMsgBoardStr
366
           call SysMsgBoardStr
396
     end if
367
     end if
397
	   call stop
368
           call stop
398
	   ret
369
           ret
399
@@:
370
@@:
400
	   cmp eax, DEV_CALLBACK
371
           cmp eax, DEV_CALLBACK
401
	   jne @F
372
           jne @F
402
           mov ebx, [edi+input]
373
           mov ebx, [edi+input]
403
           stdcall set_callback, [ebx]
374
           stdcall set_callback, [ebx]
404
	   ret
375
           ret
405
@@:
376
@@:
406
	   cmp eax, DEV_SET_MASTERVOL
377
           cmp eax, DEV_SET_MASTERVOL
407
	   jne @F
378
           jne @F
408
           mov ebx, [edi+input]
379
           mov eax, [edi+input]
-
 
380
           mov eax, [eax]
409
           stdcall set_master_vol, [ebx]
381
           call set_master_vol      ;eax= vol
410
	   ret
382
           ret
411
@@:
383
@@:
412
	   cmp eax, DEV_GET_MASTERVOL
384
           cmp eax, DEV_GET_MASTERVOL
413
	   jne @F
385
           jne @F
414
           mov ebx, [edi+output]
386
           mov ebx, [edi+output]
415
           test ebx, ebx
387
           add ebx, new_app_base
416
           jz .fail
-
 
417
 
-
 
418
           stdcall get_master_vol, ebx
388
           stdcall get_master_vol, ebx
419
	   ret
389
           ret
420
@@:
390
;@@:
421
	   cmp eax, DEV_GET_INFO
391
;           cmp eax, DEV_GET_INFO
422
	   jne @F
392
;           jne @F
423
           mov ebx, [edi+output]
393
;           mov ebx, [edi+output]
424
	   stdcall get_dev_info, ebx
394
;           stdcall get_dev_info, ebx
425
	   ret
395
;           ret
426
@@:
396
@@:
427
.fail:
397
.fail:
428
	   xor eax, eax
398
           or eax, -1
429
	   ret
399
           ret
430
endp
400
endp
Line 431... Line 401...
431
 
401
 
432
restore   handle
402
restore   handle
433
restore   io_code
403
restore   io_code
Line 437... Line 407...
437
restore   out_size
407
restore   out_size
438
 
408
 
Line 439... Line 409...
439
 
409
 
440
align 4
-
 
441
proc remap_irq                         ;for Intel chipsets ONLY !!!
-
 
442
	   mov eax, VALID_IRQ
-
 
443
	   bt eax, IRQ_LINE
-
 
444
	   jnc .exit
-
 
445
 
-
 
446
	   mov edx, 0x4D0
-
 
447
	   in ax,dx
-
 
448
	   bts ax, IRQ_LINE
-
 
449
	   out dx, aX
-
 
450
 
-
 
451
           stdcall PciWrite8, dword 0, dword 0xF8, dword 0x61, dword IRQ_LINE
-
 
452
	   mov [ctrl.int_line], IRQ_LINE
-
 
453
 
-
 
454
.exit:
-
 
455
	   ret
-
 
456
endp
-
 
457
 
-
 
458
align 4
410
align 4
Line 459... Line 411...
459
proc ac97_irq
411
proc ac97_irq
460
 
412
 
461
;     if DEBUG
413
;     if DEBUG
462
;           mov esi, msgIRQ
414
;           mov esi, msgIRQ
Line 463... Line -...
463
;           call SysMsgBoardStr
-
 
464
;     end if
-
 
465
 
-
 
466
	   mov edx, PCM_OUT_CR_REG
-
 
467
	   mov al, 0x14
-
 
468
	   call [ctrl.ctrl_write8]
-
 
469
 
-
 
470
	   mov ax, 0x1c
-
 
471
	   mov edx, PCM_OUT_SR_REG
-
 
472
	   call [ctrl.ctrl_write16]
-
 
473
 
-
 
474
	   mov edx, PCM_OUT_CIV_REG
-
 
475
	   call [ctrl.ctrl_read8]
-
 
476
 
-
 
477
	   and eax, 0x1F
-
 
478
	   cmp eax, [civ_val]
-
 
479
	   je .skip
-
 
480
 
-
 
481
	   mov [civ_val], eax
-
 
482
	   dec eax
-
 
483
	   and eax, 0x1F
-
 
484
	   mov [ctrl.lvi_reg], eax
-
 
485
 
-
 
486
	   mov edx, PCM_OUT_LVI_REG
-
 
487
	   call [ctrl.ctrl_write8]
-
 
488
 
-
 
489
	   mov edx, PCM_OUT_CR_REG
-
 
490
	   mov ax, 0x1D
-
 
491
	   call [ctrl.ctrl_write8]
-
 
492
 
-
 
493
	   mov eax, [civ_val]
-
 
Line 494... Line 415...
494
	   add eax, 2
415
;           call SysMsgBoardStr
495
	   and eax, 31
416
;     end if
Line 496... Line 417...
496
	   mov ebx, dword [buff_list+eax*4]
417
 
497
 
418
 
498
	   cmp [ctrl.user_callback], 0
419
           cmp [ctrl.user_callback], 0
Line 499... Line 420...
499
	   je @f
420
           je @f
500
 
421
 
501
	   stdcall [ctrl.user_callback], ebx
422
           stdcall [ctrl.user_callback], ebx
502
@@:
423
@@:
503
	   ret
424
           ret
504
 
425
 
Line 505... Line 426...
505
.skip:
426
.skip:
506
	   mov edx, PCM_OUT_CR_REG
427
           mov edx, PCM_OUT_CR_REG
Line 507... Line 428...
507
	   mov ax, 0x1D
428
           mov ax, 0x11               ;0x1D
508
	   call [ctrl.ctrl_write8]
429
           call [ctrl.ctrl_write8]
Line 509... Line 430...
509
	   ret
430
           ret
510
endp
431
endp
511
 
432
 
512
align 4
433
align 4
513
proc create_primary_buff
434
proc create_primary_buff
Line 514... Line 435...
514
 
435
 
-
 
436
           stdcall KernelAlloc, 0x10000
Line 515... Line 437...
515
           stdcall KernelAlloc, 0x10000
437
           mov [ctrl.buffer], eax
516
	   mov [ctrl.buffer], eax
438
 
517
 
439
           mov edi, eax
518
	   mov edi, eax
440
           mov ecx, 0x10000/4
519
	   mov ecx, 0x10000/4
441
           xor eax, eax
520
	   xor eax, eax
442
           cld
Line 521... Line 443...
521
           cld
443
           rep stosd
522
	   rep stosd
444
 
Line 523... Line 445...
523
 
445
           mov eax, [ctrl.buffer]
524
           stdcall GetPgAddr, [ctrl.buffer]
446
           call GetPgAddr
Line 525... Line 447...
525
 
447
 
526
	   mov ebx, 0xC0002000
448
           mov ebx, 0xC0002000
Line 527... Line 449...
527
	   mov ecx, 4
449
           mov ecx, 4
528
	   mov edi, pcmout_bdl
450
           mov edi, pcmout_bdl
Line 529... Line 451...
529
@@:
451
@@:
530
	   mov [edi], eax
452
           mov [edi], eax
Line 531... Line 453...
531
	   mov [edi+4], ebx
453
           mov [edi+4], ebx
532
 
454
 
Line 533... Line 455...
533
	   mov [edi+32], eax
455
           mov [edi+32], eax
534
	   mov [edi+4+32], ebx
456
           mov [edi+4+32], ebx
Line 535... Line 457...
535
 
457
 
536
	   mov [edi+64], eax
458
           mov [edi+64], eax
537
	   mov [edi+4+64], ebx
459
           mov [edi+4+64], ebx
Line 538... Line 460...
538
 
460
 
539
	   mov [edi+96], eax
461
           mov [edi+96], eax
540
	   mov [edi+4+96], ebx
462
           mov [edi+4+96], ebx
541
 
463
 
542
	   mov [edi+128], eax
464
           mov [edi+128], eax
543
	   mov [edi+4+128], ebx
465
           mov [edi+4+128], ebx
544
 
466
 
545
	   mov [edi+160], eax
467
           mov [edi+160], eax
546
	   mov [edi+4+160], ebx
468
           mov [edi+4+160], ebx
547
 
469
 
548
	   mov [edi+192], eax
470
           mov [edi+192], eax
549
	   mov [edi+4+192], ebx
471
           mov [edi+4+192], ebx
550
 
472
 
551
	   mov [edi+224], eax
473
           mov [edi+224], eax
552
	   mov [edi+4+224], ebx
474
           mov [edi+4+224], ebx
553
 
475
 
554
	   add eax, 0x4000
476
           add eax, 0x4000
555
	   add edi, 8
477
           add edi, 8
-
 
478
           loop @B
556
	   loop @B
479
 
557
 
480
           mov edi, buff_list
558
	   mov edi, buff_list
481
           mov eax, [ctrl.buffer]
559
	   mov eax, [ctrl.buffer]
482
           mov ecx, 4
560
	   mov ecx, 4
483
@@:
561
@@:
484
           mov [edi], eax
562
	   mov [edi], eax
485
           mov [edi+16], eax
563
	   mov [edi+16], eax
486
           mov [edi+32], eax
564
	   mov [edi+32], eax
487
           mov [edi+48], eax
565
	   mov [edi+48], eax
488
           mov [edi+64], eax
566
	   mov [edi+64], eax
489
           mov [edi+80], eax
567
	   mov [edi+80], eax
-
 
568
	   mov [edi+96], eax
490
           mov [edi+96], eax
569
	   mov [edi+112], eax
491
           mov [edi+112], eax
Line 570... Line 492...
570
 
492
 
571
	   add eax, 0x4000
493
           add eax, 0x4000
572
	   add edi, 4
494
           add edi, 4
573
	   loop @B
495
           loop @B
574
 
496
 
575
	   mov ecx, pcmout_bdl
497
           mov eax, pcmout_bdl
576
           stdcall GetPgAddr, ecx
498
           mov ebx, eax
Line 577... Line 499...
577
	   and ecx, 0xFFF
499
           call GetPgAddr     ;eax
578
	   add eax, ecx
500
           and ebx, 0xFFF
579
 
501
           add eax, ebx
580
	   mov edx, PCM_OUT_BDL
502
 
581
	   call [ctrl.ctrl_write32]
503
           mov edx, PCM_OUT_BDL
582
 
504
           call [ctrl.ctrl_write32]
Line 583... Line 505...
583
	   mov eax, 16
505
 
Line 584... Line 506...
584
	   mov [ctrl.lvi_reg], eax
506
           mov eax, 16
585
	   mov edx, PCM_OUT_LVI_REG
507
           mov [ctrl.lvi_reg], eax
586
	   call [ctrl.ctrl_write8]
508
           mov edx, PCM_OUT_LVI_REG
587
 
509
           call [ctrl.ctrl_write8]
588
	   ret
510
           ret
589
endp
511
endp
590
 
512
 
591
align 4
513
align 4
Line 592... Line 514...
592
proc detect_controller
514
proc detect_controller
593
	   locals
515
         locals
594
	     last_bus dd ?
516
           last_bus dd ?
595
	     bus      dd ?
517
           bus      dd ?
596
	     devfn    dd ?
518
           devfn    dd ?
597
	   endl
519
         endl
598
 
520
 
599
	   xor eax, eax
521
           xor eax, eax
600
	   mov [bus], eax
522
           mov [bus], eax
601
	   inc eax
523
           inc eax
602
           call PciApi
524
           call PciApi
-
 
525
           cmp eax, -1
603
	   cmp eax, -1
526
           je .err
604
           je .no_pci
527
 
605
 
528
           mov [last_bus], eax
606
	   mov [last_bus], eax
529
 
607
 
530
.next_bus:
608
.next_bus:
531
           and [devfn], 0
609
	   and [devfn], 0
532
.next_dev:
610
.next_dev:
533
           stdcall PciRead32, [bus], [devfn], dword 0
611
           stdcall PciRead32, [bus], [devfn], dword 0
534
           test eax, eax
612
	   test eax, eax
535
           jz .next
613
	   jz .next
536
           cmp eax, -1
614
	   cmp eax, -1
537
           je .next
615
	   je .next
538
 
Line 616... Line 539...
616
 
539
           mov edi, devices
617
	   mov edi, devices
540
@@:
Line 618... Line 541...
618
@@:
541
           mov ebx, [edi]
619
	   mov ebx, [edi]
542
           test ebx, ebx
620
	   test ebx, ebx
543
           jz .next
621
	   jz .next
544
 
622
 
545
           cmp eax, ebx
623
	   cmp eax, ebx
546
           je .found
624
	   je .found
547
           add edi, 12
625
	   add edi, 12
548
           jmp @B
626
	   jmp @B
549
 
627
 
550
.next:
Line 628... Line -...
628
.next:	   inc [devfn]
-
 
629
	   cmp [devfn], 256
-
 
630
	   jb  .next_dev
-
 
631
	   mov eax, [bus]
-
 
632
	   inc eax
-
 
633
	   mov [bus], eax
-
 
634
	   cmp eax, [last_bus]
-
 
635
	   jna .next_bus
-
 
636
	   xor eax, eax
-
 
637
	   ret
551
           inc [devfn]
638
.found:
552
           cmp [devfn], 256
639
	   mov ebx, [bus]
553
           jb  .next_dev
640
	   mov [ctrl.bus], ebx
554
           mov eax, [bus]
641
 
555
           inc eax
642
	   mov ecx, [devfn]
556
           mov [bus], eax
643
	   mov [ctrl.devfn], ecx
-
 
644
 
-
 
645
	   mov edx, eax
557
           cmp eax, [last_bus]
646
	   and edx, 0xFFFF
-
 
647
	   mov [ctrl.vendor], edx
558
           jna .next_bus
648
	   shr eax, 16
559
           xor eax, eax
649
	   mov [ctrl.dev_id], eax
560
           ret
650
 
561
.found:
Line 651... Line 562...
651
	   mov ebx, [edi+4]
562
           mov ebx, [bus]
652
	   mov [ctrl.ctrl_ids], ebx
-
 
653
	   mov esi, [edi+8]
-
 
654
	   mov [ctrl.ctrl_setup], esi
563
           mov [ctrl.bus], ebx
655
 
-
 
656
           cmp ebx, VID_INTEL
-
 
657
           jne @F
-
 
658
	   mov [ctrl.vendor_ids], msg_Intel
-
 
659
           ret
-
 
660
@@:
-
 
661
           cmp ebx, VID_NVIDIA
-
 
662
           jne @F
-
 
663
           mov [ctrl.vendor_ids], msg_NVidia
-
 
Line 664... Line 564...
664
@@:
564
 
665
           cmp ebx, 0x1274
-
 
666
           jne @F
565
           mov ecx, [devfn]
667
           mov [ctrl.vendor_ids], msgEnsoniq
-
 
668
           ret
-
 
669
@@:
-
 
670
           mov [ctrl.vendor_ids], 0     ;something  wrong ?
-
 
Line 671... Line 566...
671
	   ret
566
           mov [ctrl.devfn], ecx
672
.no_pci:
-
 
673
           mov esi, msgPCI
-
 
674
           call SysMsgBoardStr
567
 
675
.err:
-
 
676
	   xor eax, eax
568
           mov edx, eax
677
	   ret
569
           and edx, 0xFFFF
678
endp
-
 
679
 
-
 
680
align 4
570
           mov [ctrl.vendor], edx
681
proc get_LPC_bus                ;for Intel chipsets ONLY !!!
-
 
682
	   locals
-
 
683
	     last_bus dd ?
-
 
684
	     bus      dd ?
571
           shr eax, 16
685
	   endl
-
 
686
 
-
 
Line 687... Line 572...
687
	   xor eax, eax
572
           mov [ctrl.dev_id], eax
688
	   mov [bus], eax
573
 
Line 689... Line -...
689
	   inc eax
-
 
690
	   call [PciApi]
-
 
691
	   cmp eax, -1
-
 
692
	   je .err
574
           mov ebx, [edi+4]
693
 
-
 
694
	   mov [last_bus], eax
575
           mov [ctrl.ctrl_ids], ebx
Line 695... Line 576...
695
.next_bus:
576
           mov esi, [edi+8]
696
           stdcall PciRead32, [bus], dword 0xF8, dword 0
-
 
697
	   test eax, eax
-
 
698
	   jz .next
-
 
699
	   cmp eax, -1
-
 
700
	   je .next
577
           mov [ctrl.ctrl_setup], esi
701
 
578
 
Line 702... Line 579...
702
	   cmp eax, 0x24D08086
579
           cmp ebx, 0x1274
703
	   je .found
580
           jne @F
Line 704... Line 581...
704
.next:
581
           mov [ctrl.vendor_ids], msgEnsoniq
705
	   mov eax, [bus]
582
           ret
Line 706... Line 583...
706
	   inc eax
583
@@:
707
	   cmp eax, [last_bus]
584
           mov [ctrl.vendor_ids], 0     ;something  wrong ?
708
	   mov [bus], eax
585
           ret
Line 709... Line -...
709
	   jna .next_bus
-
 
710
.err:
586
.err:
711
	   xor eax, eax
587
           xor eax, eax
Line 712... Line 588...
712
	   dec eax
588
           ret
713
	   ret
589
endp
714
.found:
590
 
715
	   mov eax, [bus]
591
align 4
716
	   ret
592
proc init_controller
Line 717... Line 593...
717
endp
593
 
718
 
594
           mov esi, msgPCIcmd
719
align 4
595
           call SysMsgBoardStr
720
proc init_controller
596
 
721
 
-
 
722
           stdcall PciRead32, [ctrl.bus], [ctrl.devfn], dword 4
-
 
723
	   mov ebx, eax
-
 
724
	   and eax, 0xFFFF
-
 
725
	   mov [ctrl.pci_cmd], eax
-
 
726
	   shr ebx, 16
-
 
727
	   mov [ctrl.pci_stat], ebx
-
 
728
 
-
 
729
           stdcall PciRead32, [ctrl.bus], [ctrl.devfn], dword 0x10
-
 
730
	   and eax,0xFFFE
-
 
731
	   mov [ctrl.codec_io_base], eax
-
 
732
 
-
 
733
           stdcall PciRead32, [ctrl.bus], [ctrl.devfn], dword 0x14
-
 
Line 734... Line -...
734
	   and eax, 0xFFC0
-
 
735
	   mov [ctrl.ctrl_io_base], eax
-
 
736
 
-
 
737
           stdcall PciRead32, [ctrl.bus], [ctrl.devfn], dword 0x18
-
 
738
	   mov [ctrl.codec_mem_base], eax
-
 
739
 
-
 
740
           stdcall PciRead32, [ctrl.bus], [ctrl.devfn], dword 0x1C
-
 
741
	   mov [ctrl.ctrl_mem_base], eax
-
 
742
 
-
 
743
           stdcall PciRead32, [ctrl.bus], [ctrl.devfn], dword 0x3C
-
 
744
	   and eax, 0xFF
-
 
745
	   mov [ctrl.int_line], eax
-
 
746
 
-
 
747
           stdcall PciRead8, [ctrl.bus], [ctrl.devfn], dword 0x41
597
           stdcall PciRead32, [ctrl.bus], [ctrl.devfn], dword 4
748
	   and eax, 0xFF
598
           mov ebx, eax
749
	   mov [ctrl.cfg_reg], eax
599
           and eax, 0xFFFF
750
 
600
           mov [ctrl.pci_cmd], eax
751
	   call [ctrl.ctrl_setup]
601
           shr ebx, 16
752
	   xor eax, eax
602
           mov [ctrl.pci_stat], ebx
753
	   inc eax
603
 
754
	   ret
604
           call dword2str
755
endp
605
           call SysMsgBoardStr
Line 756... Line 606...
756
 
606
 
757
align 4
607
           mov esi, msgIObase
Line 758... Line 608...
758
proc set_ICH
608
           call SysMsgBoardStr
759
	   mov [ctrl.codec_read16],  codec_io_r16    ;virtual
609
 
760
	   mov [ctrl.codec_write16], codec_io_w16    ;virtual
-
 
761
 
-
 
762
	   mov [ctrl.ctrl_read8 ],  ctrl_io_r8	     ;virtual
-
 
763
	   mov [ctrl.ctrl_read16],  ctrl_io_r16      ;virtual
610
           stdcall PciRead32, [ctrl.bus], [ctrl.devfn], dword 0x10
Line 764... Line 611...
764
	   mov [ctrl.ctrl_read32],  ctrl_io_r32      ;virtual
611
;           and eax, -16
765
 
612
           mov [ctrl.ctrl_io_base], eax
Line 766... Line -...
766
	   mov [ctrl.ctrl_write8 ], ctrl_io_w8	     ;virtual
-
 
767
	   mov [ctrl.ctrl_write16], ctrl_io_w16      ;virtual
613
 
768
	   mov [ctrl.ctrl_write32], ctrl_io_w32      ;virtual
614
           call dword2str
Line -... Line 615...
-
 
615
           call SysMsgBoardStr
769
	   ret
616
 
770
endp
617
           mov esi, msgIRQline
Line 771... Line 618...
771
 
618
           call SysMsgBoardStr
772
PG_SW                equ 0x003
619
 
Line -... Line 620...
-
 
620
           stdcall PciRead32, [ctrl.bus], [ctrl.devfn], dword 0x3C
-
 
621
           and eax, 0xFF
773
PG_NOCACHE           equ 0x018
622
           mov [ctrl.int_line], eax
774
 
623
 
Line 775... Line 624...
775
align 4
624
           call dword2str
776
proc set_ICH4
625
           call SysMsgBoardStr
777
           stdcall AllocKernelSpace, dword 0x2000
626
 
778
	   mov edi, eax
627
           call [ctrl.ctrl_setup]
779
           stdcall MapPage, edi,[ctrl.codec_mem_base],PG_SW+PG_NOCACHE
628
           xor eax, eax
Line 780... Line 629...
780
	   mov [ctrl.codec_mem_base], edi
629
           inc eax
781
	   add edi, 0x1000
630
           ret
782
           stdcall MapPage, edi, [ctrl.ctrl_mem_base],PG_SW+PG_NOCACHE
-
 
Line 783... Line 631...
783
	   mov [ctrl.ctrl_mem_base], edi
631
endp
784
 
632
 
-
 
633
align 4
-
 
634
proc set_ICH
Line 785... Line 635...
785
	   mov [ctrl.codec_read16],  codec_mem_r16    ;virtual
635
           mov [ctrl.codec_read16],  codec_io_r16    ;virtual
786
	   mov [ctrl.codec_write16], codec_mem_w16    ;virtual
-
 
787
 
636
           mov [ctrl.codec_write16], codec_io_w16    ;virtual
Line 788... Line -...
788
	   mov [ctrl.ctrl_read8 ],  ctrl_mem_r8       ;virtual
-
 
789
	   mov [ctrl.ctrl_read16],  ctrl_mem_r16      ;virtual
-
 
790
	   mov [ctrl.ctrl_read32],  ctrl_mem_r32      ;virtual
637
 
791
 
638
           mov [ctrl.ctrl_read8 ],  ctrl_io_r8      ;virtual
792
	   mov [ctrl.ctrl_write8 ], ctrl_mem_w8       ;virtual
-
 
793
	   mov [ctrl.ctrl_write16], ctrl_mem_w16      ;virtual
-
 
794
	   mov [ctrl.ctrl_write32], ctrl_mem_w32      ;virtual
-
 
Line -... Line 639...
-
 
639
           mov [ctrl.ctrl_read16],  ctrl_io_r16      ;virtual
-
 
640
           mov [ctrl.ctrl_read32],  ctrl_io_r32      ;virtual
-
 
641
 
-
 
642
           mov [ctrl.ctrl_write8 ], ctrl_io_w8      ;virtual
-
 
643
           mov [ctrl.ctrl_write16], ctrl_io_w16      ;virtual
-
 
644
           mov [ctrl.ctrl_write32], ctrl_io_w32      ;virtual
-
 
645
           ret
-
 
646
endp
-
 
647
 
-
 
648
align 4
-
 
649
proc reset_controller
-
 
650
 
-
 
651
           xor eax, eax
-
 
652
           mov edx, PCM_IN_CR_REG
-
 
653
           call [ctrl.ctrl_write8]
-
 
654
 
-
 
655
           mov edx, PCM_OUT_CR_REG
-
 
656
           call [ctrl.ctrl_write8]
-
 
657
 
-
 
658
           mov edx, MC_IN_CR_REG
-
 
659
           call [ctrl.ctrl_write8]
-
 
660
 
-
 
661
           mov eax, RR
-
 
662
           mov edx, PCM_IN_CR_REG
-
 
663
           call [ctrl.ctrl_write8]
795
	   ret
664
 
796
endp
665
           mov edx, PCM_OUT_CR_REG
797
 
666
           call [ctrl.ctrl_write8]
798
align 4
667
 
799
proc reset_controller
668
           mov edx, MC_IN_CR_REG
800
 
669
           call [ctrl.ctrl_write8]
801
	   xor eax, eax
670
           ret
802
	   mov edx, PCM_IN_CR_REG
671
endp
803
	   call [ctrl.ctrl_write8]
672
 
Line 804... Line 673...
804
 
673
align 4
805
	   mov edx, PCM_OUT_CR_REG
674
proc init_codec
806
	   call [ctrl.ctrl_write8]
675
         locals
807
 
676
           counter dd ?
Line 808... Line 677...
808
	   mov edx, MC_IN_CR_REG
677
         endl
809
	   call [ctrl.ctrl_write8]
678
 
810
 
679
           mov esi, msgControl
811
	   mov eax, RR
680
           call SysMsgBoardStr
Line 812... Line 681...
812
	   mov edx, PCM_IN_CR_REG
681
 
813
	   call [ctrl.ctrl_write8]
682
           mov edx, GLOB_CTRL
Line 814... Line 683...
814
 
683
           call [ctrl.ctrl_read32]
815
	   mov edx, PCM_OUT_CR_REG
684
           call dword2str
816
	   call [ctrl.ctrl_write8]
685
           call SysMsgBoardStr
817
 
686
 
818
	   mov	edx, MC_IN_CR_REG
687
           mov esi, msgStatus
Line 819... Line 688...
819
	   call [ctrl.ctrl_write8]
688
           call SysMsgBoardStr
820
 
689
 
821
	   ret
690
           mov edx, CTRL_STAT
822
endp
691
           call [ctrl.ctrl_read32]
823
 
692
 
824
align 4
693
           call dword2str
825
proc init_codec
694
           call SysMsgBoardStr
826
	   locals
695
 
827
	     counter dd ?
696
           test eax, CTRL_ST_CREADY
828
	   endl
697
           jnz .ready
829
 
698
 
Line 830... Line 699...
830
	   call reset_codec
699
           call reset_codec
831
	   and eax, eax
700
           and eax, eax
832
	   jz .err
701
           jz .err
833
 
702
 
Line 834... Line 703...
834
	   xor edx, edx 		  ;ac_reg_0
703
           xor edx, edx     ;ac_reg_0
835
	   call [ctrl.codec_write16]
704
           call [ctrl.codec_write16]
836
 
705
 
Line 990... Line 859...
990
	   ret
859
	   ret
991
endp
860
endp
992
 
861
 
Line 993... Line 862...
993
align 4
862
align 4
994
proc play
863
play:
995
 
-
 
996
	   mov eax, 16
864
           mov eax, 16
997
	   mov [ctrl.lvi_reg], eax
865
           mov [ctrl.lvi_reg], eax
998
	   mov edx, PCM_OUT_LVI_REG
866
           mov edx, PCM_OUT_LVI_REG
999
	   call [ctrl.ctrl_write8]
867
           call [ctrl.ctrl_write8]
1000
 
868
 
1001
	   mov edx, PCM_OUT_CR_REG
869
           mov edx, PCM_OUT_CR_REG
1002
	   mov ax, 0x1D
870
           mov ax, 0x1D
1003
	   call [ctrl.ctrl_write8]
871
           call [ctrl.ctrl_write8]
-
 
872
           xor eax, eax
1004
	   ret
873
           ret
1005
endp
-
 
Line 1006... Line 874...
1006
 
874
 
1007
align 4
875
align 4
1008
proc stop
876
stop:
1009
	   mov edx, PCM_OUT_CR_REG
877
           mov edx, PCM_OUT_CR_REG
1010
	   mov ax, 0x14
878
           mov ax, 0x0
1011
	   call [ctrl.ctrl_write8]
879
           call [ctrl.ctrl_write8]
1012
 
880
 
1013
	   mov eax, 16
-
 
1014
	   mov [ctrl.lvi_reg], eax
881
           mov ax, 0x1c
1015
	   mov edx, PCM_OUT_LVI_REG
882
           mov edx, PCM_OUT_SR_REG
1016
	   call [ctrl.ctrl_write8]
-
 
-
 
883
           call [ctrl.ctrl_write16]
1017
 
884
           xor eax, eax
1018
	   ret
-
 
Line 1019... Line 885...
1019
endp
885
	   ret
1020
 
886
 
1021
align 4
887
align 4
1022
proc get_dev_info stdcall, p_info:dword
888
proc get_dev_info stdcall, p_info:dword
Line 1049... Line 915...
1049
	   mov [CTRL_INFO.glob_sta], eax
915
	   mov [CTRL_INFO.glob_sta], eax
1050
 
916
 
Line 1051... Line 917...
1051
	   mov ebx, [ctrl.pci_cmd]
917
	   mov ebx, [ctrl.pci_cmd]
1052
	   mov [CTRL_INFO.pci_cmd], ebx
918
	   mov [CTRL_INFO.pci_cmd], ebx
1053
 
-
 
1054
	   ret
919
	   ret
1055
endp
920
endp
Line 1056... Line 921...
1056
 
921
 
1057
align 4
922
align 4
Line 1117... Line 982...
1117
 
982
 
Line 1118... Line 983...
1118
align 4
983
align 4
1119
proc codec_check_ready
984
proc codec_check_ready
Line 1120... Line 985...
1120
 
985
 
1121
	  mov edx, CTRL_ST
986
           mov edx, CTRL_ST
1122
	  call [ctrl.ctrl_read32]
987
           call [ctrl.ctrl_read32]
1123
	  and eax, CTRL_ST_CREADY
988
           and eax, CTRL_ST_CREADY
1124
	  jz .not_ready
-
 
1125
 
-
 
1126
	  xor eax, wax
-
 
1127
	  inc eax
-
 
Line -... Line 989...
-
 
989
           jz .not_ready
-
 
990
 
1128
	  ret
991
           xor eax, wax
1129
 
992
           inc eax
1130
align 4
993
           ret
1131
.not_ready:
994
.not_ready:
1132
	  xor eax, eax
995
           xor eax, eax
Line 1133... Line 996...
1133
	  ret
996
           ret
1134
endp
997
endp
1135
 
998
 
Line 1174... Line 1037...
1174
@@:
1037
@@:
1175
	   rdtsc
1038
	   rdtsc
1176
	   sub eax, ebx
1039
	   sub eax, ebx
1177
	   sbb edx, ecx
1040
	   sbb edx, ecx
1178
	   jb @B
1041
           js @B
1179
 
1042
 
Line 1180... Line 1043...
1180
	   pop eax
1043
	   pop eax
1181
	   pop ebx
1044
	   pop ebx
1182
	   pop edx
1045
	   pop edx
1183
	   pop ecx
1046
	   pop ecx
Line 1188... Line 1051...
1188
;          CONTROLLER IO functions
1051
;          CONTROLLER IO functions
1189
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1052
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1190
 
1053
 
Line 1191... Line 1054...
1191
align 4
1054
align 4
1192
proc codec_io_r16
1055
codec_io_r16:
1193
	add edx, [ctrl.codec_io_base]
-
 
1194
	in  ax, dx
-
 
1195
	ret
-
 
1196
endp
-
 
1197
 
-
 
1198
align 4
-
 
1199
proc codec_io_w16
-
 
1200
	add edx, [ctrl.codec_io_base]
1056
           add edx, [ctrl.codec_io_base]
1201
	out dx, ax
-
 
1202
	ret
-
 
1203
endp
-
 
1204
 
-
 
1205
align 4
-
 
1206
proc ctrl_io_r8
-
 
1207
	add edx, [ctrl.ctrl_io_base]
-
 
1208
	in  al, dx
-
 
1209
	ret
-
 
1210
endp
-
 
1211
 
-
 
1212
align 4
-
 
1213
proc ctrl_io_r16
-
 
1214
	add edx, [ctrl.ctrl_io_base]
-
 
1215
	in  ax, dx
1057
           in  ax, dx
1216
	ret
-
 
1217
endp
-
 
1218
 
-
 
1219
align 4
-
 
1220
proc ctrl_io_r32
-
 
1221
	add edx, [ctrl.ctrl_io_base]
-
 
1222
	in  eax, dx
1058
           ret
1223
	ret
-
 
1224
endp
-
 
1225
 
-
 
1226
align 4
-
 
1227
proc ctrl_io_w8
-
 
1228
	add edx, [ctrl.ctrl_io_base]
-
 
1229
	out dx, al
-
 
1230
	ret
-
 
1231
endp
-
 
1232
 
-
 
1233
align 4
-
 
1234
proc ctrl_io_w16
-
 
1235
	add edx, [ctrl.ctrl_io_base]
-
 
1236
	out dx, ax
-
 
1237
	ret
-
 
1238
endp
-
 
Line 1239... Line 1059...
1239
 
1059
 
1240
align 4
1060
align 4
1241
proc ctrl_io_w32
1061
codec_io_w16:
1242
	add edx, [ctrl.ctrl_io_base]
1062
           add edx, [ctrl.codec_io_base]
1243
	out dx, eax
1063
           out dx, ax
1244
	ret
-
 
1245
endp
-
 
1246
 
-
 
1247
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
 
1248
;         MEMORY MAPPED IO    (os depended)
-
 
Line 1249... Line 1064...
1249
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1064
           ret
1250
 
1065
 
1251
align 4
1066
align 4
1252
proc codec_mem_r16
1067
ctrl_io_r8:
1253
	add edx, [ctrl.codec_mem_base]
1068
           add edx, [ctrl.ctrl_io_base]
1254
	mov ax, word [edx]
-
 
Line 1255... Line 1069...
1255
	ret
1069
           in  al, dx
1256
endp
1070
           ret
1257
 
1071
 
1258
align 4
1072
align 4
1259
proc codec_mem_w16
1073
ctrl_io_r16:
1260
	add edx, [ctrl.codec_mem_base]
-
 
Line 1261... Line 1074...
1261
	mov word [edx], ax
1074
          add edx, [ctrl.ctrl_io_base]
1262
	ret
1075
          in  ax, dx
1263
endp
1076
          ret
1264
 
1077
 
1265
align 4
1078
align 4
1266
proc ctrl_mem_r8
-
 
Line 1267... Line 1079...
1267
	add edx, [ctrl.ctrl_mem_base]
1079
ctrl_io_r32:
1268
	mov al, [edx]
1080
          add edx, [ctrl.ctrl_io_base]
1269
	ret
1081
          in  eax, dx
1270
endp
1082
          ret
1271
 
1083
 
1272
align 4
-
 
Line 1273... Line 1084...
1273
proc ctrl_mem_r16
1084
align 4
1274
	add edx, [ctrl.ctrl_mem_base]
1085
ctrl_io_w8:
1275
	mov ax, [edx]
1086
          add edx, [ctrl.ctrl_io_base]
1276
	ret
1087
          out dx, al
1277
endp
1088
          ret
1278
 
-
 
Line 1279... Line 1089...
1279
align 4
1089
 
1280
proc ctrl_mem_r32
1090
align 4
1281
	add edx, [ctrl.ctrl_mem_base]
1091
ctrl_io_w16:
1282
	mov eax, [edx]
1092
          add edx, [ctrl.ctrl_io_base]
-
 
1093
          out dx, ax
Line 1283... Line -...
1283
	ret
-
 
1284
endp
-
 
Line 1285... Line 1094...
1285
 
1094
          ret
1286
align 4
1095
 
1287
proc ctrl_mem_w8
1096
align 4
1288
	add edx, [ctrl.ctrl_mem_base]
1097
ctrl_io_w32:
1289
	mov [edx], al
1098
          add edx, [ctrl.ctrl_io_base]
-
 
1099
          out dx, eax
-
 
1100
          ret
-
 
1101
 
-
 
1102
 
-
 
1103
align 4
-
 
1104
dword2str:
-
 
1105
          mov  esi, hex_buff
1290
 
1106
          mov ecx, -8
Line 1291... Line -...
1291
	ret
-
 
1292
endp
1107
@@:
1293
 
1108
          rol eax, 4
1294
align 4
-
 
1295
proc ctrl_mem_w16
-
 
1296
	add edx, [ctrl.ctrl_mem_base]
-
 
Line 1297... Line 1109...
1297
	mov [edx], ax
1109
          mov ebx, eax
Line 1298... Line 1110...
1298
	ret
1110
          and ebx, 0x0F
1299
endp
1111
          mov bl, [ebx+hexletters]
1300
 
-
 
1301
align 4
-
 
1302
proc ctrl_mem_w32
-
 
1303
	add edx, [ctrl.ctrl_mem_base]
-
 
1304
	mov [edx], eax
-
 
1305
	ret
-
 
1306
endp
-
 
1307
 
-
 
1308
 
-
 
1309
include "codec.inc"
-
 
1310
 
-
 
1311
align 4
1112
          mov [8+esi+ecx], bl
1312
devices dd (CTRL_ICH  shl 16)+VID_INTEL,msg_ICH, set_ICH
-
 
1313
	dd (CTRL_ICH0 shl 16)+VID_INTEL,msg_ICH0,set_ICH
1113
          inc ecx
Line 1314... Line -...
1314
	dd (CTRL_ICH2 shl 16)+VID_INTEL,msg_ICH2,set_ICH
-
 
1315
	dd (CTRL_ICH3 shl 16)+VID_INTEL,msg_ICH3,set_ICH
-
 
1316
        dd (CTRL_ICH4 shl 16)+VID_INTEL,msg_ICH4,set_ICH4
-
 
1317
        dd (CTRL_ICH5 shl 16)+VID_INTEL,msg_ICH5,set_ICH4
-
 
1318
        dd (CTRL_ICH6 shl 16)+VID_INTEL,msg_ICH6,set_ICH4
-
 
1319
        dd (CTRL_ICH7 shl 16)+VID_INTEL,msg_ICH7,set_ICH4
-
 
1320
 
-
 
1321
        dd (CTRL_NFORCE  shl 16)+VID_NVIDIA,msg_NForce, set_ICH
-
 
1322
        dd (CTRL_NFORCE2 shl 16)+VID_NVIDIA,msg_NForce2,set_ICH
-
 
1323
        dd (CTRL_NFORCE3 shl 16)+VID_NVIDIA,msg_NForce3,set_ICH
-
 
1324
        dd (0x5000 shl 16)+0x1274,msgEnsoniq,set_ICH
-
 
1325
 
-
 
1326
        dd 0    ;terminator
-
 
1327
 
1114
          jnz @B
Line 1328... Line 1115...
1328
msg_ICH      db 'Intel ICH',  13,10, 0
1115
          ret
-
 
1116
 
Line 1329... Line -...
1329
msg_ICH0     db 'Intel ICH0', 13,10, 0
-
 
1330
msg_ICH2     db 'Intel ICH2', 13,10, 0
1117
hexletters   db '0123456789ABCDEF'
Line 1331... Line 1118...
1331
msg_ICH3     db 'Intel ICH3', 13,10, 0
1118
hex_buff     db 8 dup(0),13,10,0
1332
msg_ICH4     db 'Intel ICH4', 13,10, 0
-
 
1333
msg_ICH5     db 'Intel ICH5', 13,10, 0
1119
 
1334
msg_ICH6     db 'Intel ICH6', 13,10, 0
1120
 
1335
msg_ICH7     db 'Intel ICH7', 13,10, 0
1121
include "codec.inc"
1336
msg_Intel    db 'Intel Corp. ', 0
1122
 
1337
 
1123
align 4
1338
msg_NForce   db 'NForce',   13,10, 0
1124
devices dd (0x5000 shl 16)+0x1274,msgEnsoniq,set_ICH
1339
msg_NForce2  db 'NForce 2', 13,10, 0
1125
        dd (0x5880 shl 16)+0x1274,msgVibra128,set_ICH
1340
msg_NForce3  db 'NForce 3', 13,10, 0
1126
        dd 0    ;terminator
1341
msg_NVidia   db 'NVidea', 0
1127
 
1342
 
1128
version      dd 0x00040004
1343
msgEnsoniq   db 'Ensonic 1371',0
1129
 
1344
 
1130
msgEnsoniq   db 'Ensonic 1371',13,10,0
1345
szKernel	    db 'KERNEL', 0
1131
msgVibra128  db 'Sound Blaster AudioPCI Vibra 128',13,10,0
1346
sz_sound_srv	    db 'SOUND',0
1132
 
1347
 
1133
sz_sound_srv db 'SOUND',0
1348
msgInit      db 'detect hardware...',13,10,0
1134
 
1349
msgPCI       db 'PCI accsess not supported',13,10,0
1135
msgDetect    db 'detect hardware...',13,10,0
1350
msgFail      db 'device not found',13,10,0
1136
msgFail      db 'device not found',13,10,0
-
 
1137
msgAttchIRQ  db 'IRQ line not supported', 13,10, 0
-
 
1138
msgInvIRQ    db 'IRQ line not assigned or invalid', 13,10, 0
-
 
1139
msgPlay      db 'start play', 13,10,0
-
 
1140
msgStop      db 'stop play',  13,10,0
-
 
1141
msgNotify    db 'call notify',13,10,0
Line 1351... Line 1142...
1351
msgAttchIRQ  db 'IRQ line not supported', 13,10, 0
1142
msgIRQ       db 'AC97 IRQ', 13,10,0
Line 1352... Line 1143...
1352
msgInvIRQ    db 'IRQ line not assigned or invalid', 13,10, 0
1143
msgInitCtrl  db 'init controller',13,10,0
1353
msgPlay      db 'start play', 13,10,0
1144
msgInitCodec db 'init codec',13,10,0