{ >I want to build on Infared Controller (thru RC5 coding) to controll my >tv, stereo, ect thru my PC. I know how to programm the computer to do so, >but I need to access my PC-Speaker directly !!! >Does anyone know the Port Adress or Mem Adress for accessing the PC-Speaker Here's some BASM code of mine; check the comments: From: ljduchez@en.com (Lou DuChez) } asm mov al, 182 { prepare timer to start generating sound } out 43h, al mov ax, toneout { TONEOUT = word: 1193180 / frequency } out 42h, al { send low byte to port 42h } mov al, ah out 42h, al { send high byte to port 42h } in al, 61h { get current value of port 61h } or al, 3 { set lowest two bits of 61h "on" -- activate speaker } out 61h, al { rewrite to port 61h } end; { This code turns off the speaker: } asm in al, 61h { set lowest two bits of 61h "off" -- deactive speaker } and al, 252 { this line turns the lowest two bits "off" } out 61h, al end; { > If I know this adress, all you have to do is buy a IR-Led ($1,00) and your > computer is the biggest enhanced remote controller. } { From: -deneb- > I want to build on Infared Controller (thru RC5 coding) to controll my > tv, stereo, ect thru my PC. I know how to programm the computer to do so, > but I need to access my PC-Speaker directly !!! > Does anyone know the Port Adress or Mem Adress for accessing the PC-Speaker Well .... it's not half as easy as it could be ... There are a few way to fiddle with the speaker ... 1. Via the 8254 Programmable Interval Timer (PIT). (Port $40-$47) 2. Via the 8255 Programmable Peripheral Interface. (Port $60-$67) ( on the original PC, XT and earlier 286's these were seperate IC's, but now all of that stuff is combined into 1 along with the DMA controler, etc.) With option 1 you can tell the timer to drive the speaker at a certain frequency ... and that's about it, or with option 2 you can waggle the speaker bit up and down as you like ... For your application, I think option 2 would be the 1 to choose. So here goes ... } { This should push the output high } x:=Port[$61]; x:=(x and $FC) or 2; Port[$61]:=x; { And this should push it low } x:=Port[$61]; x:=x and $FC Port[$61]:=x; { And hear's what is actually does ... Port $61 is the 8255 port B. If bit 0 of port B is 0, then the speaker does exactly what bit 1 does ... that's what I'm doing above. In this mode the port can go like this ... Port B bit 1 : 1 0 1 0 Speaker port : High Low High Low If bit 0 of port B is 1, then the speaker is conected to the PIT, in which case Bit 1 acts as the switch ... it either connects it to the PIT, or it switches it off. And in this mode the port goes somthing like this ... Port B bit 1 : 1 0 1 0 Speaker Port : Beep Off Beep Off }