Re: 32K- the BBC Micro's most annoying limitation
The basic limitation of the BBC Micro was the way that the memory map was laid out. There was 32KB of the address space reserved for ROMs, normally 16KB for the OS, and 16KB for the Basic, or whatever sideways ROM you were using. This was at a time when Sinclair has all of their OS and Basic in a16KB. This only left 32KB without some address-trickery for RAM.
The segregation of the OS and sideways ROMs was a great feature for speed, and allowing separation of the OS and other packages, and really allowed you to do a great deal. The architecture allowed you to have 'service ROMs', essentially add-ons to the OS to handle interrupt driven hardware (the OS could bank-switch the ROMs to handle interrupts), which meant that you could add things like floppy disk drives, mice, teletext adapters, software sprites (Acorn's Advanced Graphics ROM), sophisticated music hardware and even networks and hard disks relatively easily.
With one of the ROM positions populated by static RAM (there were several side-ways RAM boards, mine is an ATPL board with a write-protect switch) you could even (dare I say it) load ROMs from disk. I got the Acorn ISO Pascal Compiler (two ROMs, one an editor and runtime, and the other the compiler) running in a single 16KB bank of RAM by re-vectoring the OSCLI ROM bank switch vector, and loading the compiler from floppy or Econet and then swapping back at the end of the compile.
The BBC OS was a masterpiece of good software engineering, and with the associated Advanced User Guide, which mapped the OS and rest of the system out like a blueprint (and even contained a board schematic), enabled magical things to be done.
When the B+ came along, Acorn copied what Solidisk and Watford had done as add-ons, and moved the 20K graphics screen and some of the low memory pages used by the sound, floppy disk, and other queues into "shadow" memory in the address space normally occupied occupied by the ROM and OS by bank switching, meaning that the low 32KB above 0x700 (I believe, it was 0xE00 on a normal model B without additional filesystems) to be used for programmes. The Master 128 took this even further by adding bank-switched ROM images as standard. "Shadow" screen memory generally broke programs that directly manipulated the screen bitmap without using the OS.
Of course, if you wanted the full 64K of memory, the you could have bought the 6502 Second Processor, which not only gave you a lot of mode-independent memory, but ran at a screaming 3MHz. Playing Elite on a BEEB with a second processor and a Bit-Stick attached gave you smoother full mode-1 four colour graphics (without the screen-tearing divide between the two colour mode 4 and four colour mode 5, something the Electron version could not do because it was missing the interrupt timer used to switch modes at the appropriate position), but also gave you incredible control of the ship!
I always thought that the 64KB claim of the Commodore 64 was a swizz, because the first thing it did when turned on was copy the OS and Basic out of the ROM and into RAM, effectively leaving you with only 39KB (if I remember properly) for any programs, and it did not have the high resolution modes (640 pixels wide) that allowed you to do 80 column text, which enabled us to use the BBC as a terminal to the minicomputers at the Polytechnic where I worked at the time. On the C64, you could use something approaching the full 64KB, but only if you wrote the whole thing in machine code, and disabled Basic.