The Oric is another one I've emulated! Unfortunately it doesn't have 8x1 attributes, it has 6x1 attributes. Like Mode 7, attributes are serialised within the video stream, as are all other control characters, so each column is a full byte but with the space used for other things only six bits of each is pixels. Its ULA actually doesn't have any registers at all — even things like switching between 50 and 60 Hz are performed inline and just stick. It also doesn't produce interrupts; a moderately common hack is to connect the sync output from the RGB port to the cassette input. Some great software in the modern era though: Blake's 7
(Elite with an added plot), Stormlord
and more. Mostly on that same page.
(EDIT: the inner loop of my implementation of Oric video
; don't worry about the output_device_ stuff and it's fairly straightforward: if graphics mode is enabled then until line 200 do graphics-area fetching, otherwise do indirect text-type fetching; if both of the top two bits are 0 then it's a control code, so change something and output the background colour, otherwise output the low six bits as pixels, possibly with colours bit inverted. Those being the bits fetched indirectly if it's a text mode.)
(EDIT2: it's only 240 pixels across though, so if you missed two columns to make it 228 you might just be able to squeeze it onto a full overscan Mode 2 display? If you give that a go, skipping the two leftmost columns makes sense since a lot of games just use those to establish the line's initial foreground and background colour)
I think the Camputers Lynx might not fit the BBC's output abilities: if memory serves then it's 80 column, 3bpp (planar). It does one really cool thing though: instead of using the CRTC's cursor signal to generate a cursor, it uses it as an interrupt trigger. So you can set your ideal synchronisation points at column resolution.