Drum table starts at $071871 in the ROM
83 elements (one for each song, even if it's not used), 36 bytes each
Each drum table has twelve 3-byte entries that correspond to the notes C, C#, D, D#, E, F, F#, G, G#, A, A#, B. This is the note that will trigger the instrument change in "drum mode".
The first byte in each entry is the instrument to use. It's the index of the instrument in the current song's instrument table, not the index of the instrument in the ROM. So valid entries are $20 through $2F.
(Actually, you could probably use the lower values that correspond to sound effect instruments as well, but I haven't tried it or noticed it being done in the existing songs.)
The second byte is the note and octave to actually be played. The values look like this:
$00 = Octave 0, C
$01 = Octave 0, C#
$02 = Octave 0, D
$03 = Octave 0, D#
$04 = Octave 0, E
$05 = Octave 0, F
$06 = Octave 0, F#
$07 = Octave 0, G
$08 = Octave 0, G#
$09 = Octave 0, A
$0A = Octave 0, A#
$0B = Octave 0, B
$0C = Octave 1, C
$0D = Octave 1, C#
This pattern continues on for all octaves up through...
$6E = Octave 9, D
$6F = Octave 9, D#
$70 = Octave 9, E
$71 = Octave 9, F
$72 = Octave 9, F#
$73 = Octave 9, G
$74 = Octave 9, G#
$75 = Octave 9, A
$76 = Octave 9, A#
$77 = Octave 9, B
I don't know what happens if you put in higher values. Haven't tried it.
The third byte is the volume panning to play the note at.
Within the track data drum mode is switched on with command $FB, and switched off with command $FC.
Edit: Forgot to mention that the default values for unused table elements are all zeroes.