Another follow up about the Graduate boot process...
OK, in short, it works like this... (apologies in
advance for being a bit vague, or even inaccurate on
a few points - it's been well over a decade since I
worked on the Graduate...)
When powered on and booted, the Graduate asserts the
NMI on the BBC Micro 1MHz bus. Thanks to an
undocumented feature placed in the MOS by Paul Bond,
if the 1MHz bus NMI is active when the BBC Micro is
switched on, the MOS does a JSR to &FE00 (I think -
the 1MHz data page).
256 bytes of the Graduate's 6502 ROM is paged into
here, and the code wedges into the BBC Micro "call
this OSBYTE on boot" call (I think). This is called
several times on boot, and the Graduate allows the
BBC Micro to completely boot, before using the
bootstrap it copied into memory to copy over yet
more 6502 assembler into BBC memory to act as the
"client" for keyboard and screen operations.
(The 6502 Graduate ROM can be paged into the 1MHz
bus "data" space 256 bytes at a time by poking a
register in the 1MHz bus "address" space. The
other communication goes over the TAP, which was
used to exchange the screen and keyboard data etc.
Used a protocol sort of like the Torch Z80 "tube"
calls, I think, but don't ask me more than that -
I'll have to find the notes...)
And if you thought the Graduate DFS was cr*p, it's
because I developed it after each normal working day
(8am - 4pm Torch, 4.30pm - midnight Data Technologies,
go home, get up at 6am again...) over about six weeks
and since it was not a sideways ROM, it had to
execute entirely in 256 byte pages on the 1MHz bus.
It's a miracle it worked at all (even if I do say so
myself :-) )
--
Kevan
Old Computer Collector:
http://www.heydon.org/kevan/collection/