flat assembler
Message board for the users of flat assembler.

Index > DOS > ICH4 AC97 WAV Player for DOS Part 2

Author
Thread Post new topic Reply to topic
neville



Joined: 13 Jul 2008
Posts: 507
Location: New Zealand
neville 08 Jul 2013, 00:52
So at least I had identified the likely problem with Jeff's Leyda's PLAYER program (or more accurately, the problem with Intel's failure to provide backward ICH compatibility!)

So I was wondering if I could continue hacking the binary, or whether I would have to do the source conversion after all. But I eyed the 68 bytes used for the "Unable to find intel ICH..." error message and decided to use those bytes initially.

So what do I need to write to the CFG register to enable the I/O register space so Jeff's program can work with ICH4?

The answer? Would you believe it? NOT GIVEN in the specs!! I can NOT find any programming info about the CFG register anywhere in the 100's of pages of docs I downloaded! It's just an 8-bit register but no bit definitions are given... So I guess, write anything other than 00h. I started with 01, then FFh, but NO JOY. My laptop remained stubbornly silent. I tried all 253 other possible values, but still silence....

And in case you're wondering, yes I did boot up WIN XP on the laptop and made sure the audio system was working. Of course, M$ has been told how to drive the ICH4 implementation on my laptop, but WHY NOT THE REST OF US ???

Now several more frustrating days have elapsed, and still not so much as a peep out of my ICH4 AC97! Back to the docs and more research... Grrr... Evil or Very Mad

_________________
FAMOS - the first memory operating system
Post 08 Jul 2013, 00:52
View user's profile Send private message Visit poster's website Reply with quote
bitRAKE



Joined: 21 Jul 2003
Posts: 4039
Location: vpcmpistri
bitRAKE 08 Jul 2013, 02:57
The CFG register is only one bit. Set it, and then enable I/O mapping by setting the other ISOE bit in PCICMD register. At least that is how I read it.

The only document you need is 290744-001.

_________________
¯\(°_o)/¯ “languages are not safe - uses can be” Bjarne Stroustrup
Post 08 Jul 2013, 02:57
View user's profile Send private message Visit poster's website Reply with quote
neville



Joined: 13 Jul 2008
Posts: 507
Location: New Zealand
neville 10 Jul 2013, 00:46
bitRAKE, the only AC97 document I have with a 6-digit number starting with 2 is an ICH5 PRM (252751.pdf) which says the CFG register is at offset 41H in the PCI space and implies it is an 8-bit register with a default value of 00H.

What is your document? Does it give more details about the CFG register? I must admit I've never heard of a 1-bit PCI register before. What PCI function is used to read or write a 1-bit register?

I've just tried googling that number without joy. Would you be able to post the document here or email it to me if it's too big?

BTW, Jeff's code already has the I/O enable (bit0) and Bus Master enable (bit2) set in the PCICMD register (offset 04H) - the register contents are OR'd with 05H which should do the trick. I also tried setting the CFG register before and after that code.

_________________
FAMOS - the first memory operating system
Post 10 Jul 2013, 00:46
View user's profile Send private message Visit poster's website Reply with quote
bitRAKE



Joined: 21 Jul 2003
Posts: 4039
Location: vpcmpistri
bitRAKE 10 Jul 2013, 06:05
Google search, or on Intel's website. It's the datasheet for the chipset which has a detailed outline of the software interface supported by the hardware.

http://www.intel.com/content/dam/www/public/us/en/documents/datasheets/82801db-io-controller-hub-4-datasheet.pdf

Have you tried ICHINIT?
http://piotrkn22.republika.pl/judas/index.html
(bottom of the page)

...it has the assembly code already - if that's what you prefer to read.

_________________
¯\(°_o)/¯ “languages are not safe - uses can be” Bjarne Stroustrup
Post 10 Jul 2013, 06:05
View user's profile Send private message Visit poster's website Reply with quote
neville



Joined: 13 Jul 2008
Posts: 507
Location: New Zealand
neville 11 Jul 2013, 00:29
Thanks bitRAKE, I got the 82801DB datasheet, aka doc 290744-001 !! Another 597 pages of docs to add to my growing collection Wink

On page 477 it confirms that CFG is in fact an 8-bit register, AND that I/O Space Enable (IOSE) is a R/W bit at bit0 with all other bits unused. So 01 must be written to that register. Which is what I tried first.....

But AC97 remains silent Sad

Yes I've tried ICHINIT. I have 2 versions of it. One is a 49K EXE which I think came from one of the JUDAS packages. This version runs, but fails to initialize. The other was from a standalone archive and is a 18K COM. It runs fine. I haven't investigated further as yet, but neither version appears to help PLAYER to do other than nothing.

I will keep trying though, as time permits. This thing will NOT beat me... Mad

_________________
FAMOS - the first memory operating system
Post 11 Jul 2013, 00:29
View user's profile Send private message Visit poster's website Reply with quote
Display posts from previous:
Post new topic Reply to topic

Jump to:  


< Last Thread | Next Thread >
Forum Rules:
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Copyright © 1999-2024, Tomasz Grysztar. Also on GitHub, YouTube.

Website powered by rwasa.