A BBC machine code file is the program's bytes and nothing more: no header, no relocation, no symbol table. It is meant to be loaded at one address and started at another, and both numbers are kept outside the file.
Load and execution addresses
The load address is where the first byte of the file goes in the 64 KB address space of the machine; the
execution address is the address of the first instruction to run, which is often the load address and often not
(a table or a jump comes first). On a disc both are in the catalogue; on a tape
they are in each block header. The viewer carries them in the name it gives the
file (CODE [L2000 X2000].bbc), and reads them from the name, or from the options bar (Load address and
Execution address) for a file that has none. Only the low 16 bits are used: the machine has a 16-bit address bus.
The disassembly
The file is decoded from its first byte at the load address by the site's own 6502 decoder (see the
6502 instruction set pages), with an instruction decoded at every byte as in the x86
view: the first column is the straight reading from the start, the other columns the instructions that start inside it.
The execution address, when it is inside the file, is marked entry. Absolute operands that are an
operating system call, a vector or a hardware register are replaced by their name.
A real example, the start of B.ZALAGA on Games.ssd (loaded at $3000):
3000 jsr $219c
3003 jsr $134a
3006 jmp $1341
3009 jsr $2210
300c lda #$00
300e ldx #$15
3010 sta $1e,x
3012 dex
3013 bne $3010
The decoder shows an instruction for every byte whatever it is. A file that is mostly data (tables, text, sprites) is decoded
as if it were code, and the result is meaningless where the data is: the same Games.ssd has A.CYLON and
A.DARE, which are data files, shown as a run of odd instructions. Nothing in the file marks which bytes are which.
Processors
The BBC Micro A, B and B+ have a 6502A, which the viewer decodes as the NMOS 6502 with its undocumented opcodes marked. The Master series has a 65C02 (a CMOS part: BRA, STZ, PHX, PHY, PLX, PLY, TRB, TSB and the rest, and no undocumented opcodes). A file does not say which it was written for; the options bar chooses, and the default is the NMOS 6502.
Second processors
An address with the top two bits set in the catalogue (&FFFF1900) names memory in the host machine; a program
written for a second processor over the Tube is loaded in that processor's memory, and may be code for another CPU (a Z80, a 32016 or
an ARM). The viewer disassembles every machine code file as 6502 code; it does not look at the top bits.