BBC MICRO · AUDIO SERVICE ROMALPHA · USE AT YOUR OWN RISK
EAudio
A separate 16 KB MOS service ROM for music and sound effects on the BBC Micro family, played through the normal MOS SOUND system on the SN76489.
EAudio is game-agnostic. The game decides when something should sound; EAudio owns envelopes, channel allocation and music scheduling. Requests use OSWORD &C0 with an EAUD signature, so the MOS routes them on the host or across the Tube, with no IRQ hooks.
Download
Downloads arrive with the beta release.
EAudio 0.3. The usual slot is 5.
Contents
01 · Features
- Music from a caller-owned score in any sideways ROM: three voices with 16-bit offsets, kept topped up by a TICK command, with bar-synchronised starts so voices stay aligned after disc loads.
- Fifty effect IDs defined as note lists: noise or tone channel, queued follow-on notes, envelopes, priorities 0–3 and optional pitch variation. A new effect only takes a channel from a lower-priority one.
- Volume 0 (mute) to 3, applied to envelopes and fixed amplitudes alike, and SILENCE to flush all four channels.
- Works on BBC B, Master and Tube systems; source ROMs are only ever read.
03 · Integration notes
A request is 64 bytes sent and 16 returned: bytes 2–5 are EAUD, byte 6 the command (replaced by 0 for success or 1 for an invalid request), byte 7 the &A5 acknowledgement, and bytes 8–15 the payload. Send INIT before anything else. The host uses &2900–&29FF for command state, notes, a MOS SOUND block and a bank-copy gate; reserve it in your memory map. Music scores are read through a RAM trampoline that restores the caller’s ROM bank. For a working BASIC example, see Breakout stage 8; Nightfall drives EAudio from its companion ROM’s frame callback.
Validation: ROM execution tests cover bank copy and restore, signed SOUND words, track looping and bounds, all 50 effect IDs and status. Emulator runs recorded real SN76489 audio from B-em. That is not a test on a physical speaker.