If you want to program the OPM(YM2151), you first have to select the OPM register in address 3FF0h and write the data for that register to address 3FF1h. When programming in assembly it's possible that you have to wait a few cycles (12?) between the two instructions, otherwise the OPM will not process the data.

The UART (YM2148) works in the same way. I hope information about this will come shortly...