Near the back there was a two page table containing a dense opcode map (the byte values) of the 6502, its mnemonics, and a tiny notation hinting what they might do.
I've just looked it up. It's the "old" book of that name, not the "new" one. See pages 502-503 of this scan: http://bbc.nvg.org/doc/BBCUserGuide-1.00.pdf Poorly scanned, but I recognise the table.
I stared at that table, intrigued, not really knowing what it was, until I started guessing what the mnemonics stood for. Gradually it made sense - after months!
Eventually I was able to guess enough to write 6502 inside BBC Basic, and some time after that I was able to disassemble binaries in 6502 and Z80 (I had a Z80 second processor), and eventually graduated to hacking games to modify them, give them infinite lives, change the keys, things like that. No doubt there was the occasional bit of assembly language in magazine listings to provide a guide to the syntax.
I don't remember having a 6502 disassembler, but I don't remember writing one either. I did receive a lot of games and utilities so I might have received a disassembler too. Hacking games that don't want to be hacked required a fair amount of dedication though, so I might have written one among the other tools needed for hacking; I don't remember.
My favourite BBC Micro hacks were:
- Poking the ULA with a non-standard palette bit pattern, allowing me to produce a 7-colour mode in high resolution (contradicting the received wisdom about what was possible to pack into the pixel bytes), and similar colour graphics quality to a ZX Spectrum. I ported a game from the Spectrum using this technique, but never published it.
- Pixel-smooth vertical scrolling by poking the CRTC on timed interrupts to modify the character height dynamically, so as to squash a row at the top and expand a row at the bottom to shift the image with pixel precision (contradicting the received wisdom that the CRTC could only scroll character cells).
- "Super mode 7", running the Teletext mode with the pixel clock set to double frequency like in mode 0. This caused the Teletext character generator to process 80 characters per line instead of 40. But instead of showing 80 characters, it showed every alternate character, while still updating the colours or other attributes from the hidden characters. This allowed clean coloured text to be displayed without gaps between different colours as Teletext normally required. Proper syntax highlighting :-)
- Mixing graphics and Teletext on different rows using timed interrupts, so as to render something like a text editor with pixel graphics in between blocks of text. This is a variation of the technique used by Elite to show a colourful status area with a higher-resolution main 3d area.
- Modulating the volume on the sound channel at high speed, to turn the sound chip into a DAC, and therefore any audio waveform we wanted.
I miss those fun days, where we could prod and poke at things and all sorts of useful magic happened.