Date : Fri, 20 Sep 2013 17:45:43 +0100
From : jgh@... (J.G.Harston)
Subject: Early BBC MOS EPROMs
Dave Curran wrote:
> Ah yes, my combined image matches the MOS 010 image on mdfs.net [5].?
> That's answered that question.
> Not sure why it doesn't work though. Next time I dig out my issue 3
> model A, I'll see if it works on there.
The entry points and functionality are the same, that's the whole point
of an API. The significant difference between OS 0.xx and OS 1.xx is that
the keyboard handling in OS 0.xx is different and has been described as
only working "by accident". The OS 1.xx keyboard handler was rewritten, and
later hardware is slightly different sufficiently that the OS 0.xx keyboard
handler can't cope with the later hardware. That will be why you end up with no
keyboard input.
On the point of the MOS entries, there are some slight differences.
There is an entry to FSCV at &FFCB.
OSARGS appears to support calls with A=4 to 7.
*CAT calls OSBYTE 138,<drive> which, if CFS is not selected passes the
string "CAT" to FSCV.
OSBYTE 123 enters the current BRK handler.
There's a *DEBUG command, a *NOTAPE command that disables filing system
access, and *DISK and *DISC commands - in the MOS.
The VDU drivers, the MOS kernel and the CFS filing system are more
rigoursly segregated in the ROM, with each code block starting with an
entry jump block.
There's a different definition of sideways ROMs. The MOS builds a table
of ROMs 3, 2, 1 and 0. If a ROM's flag has bit 7 set, then it is called at
&8000 (yes, the language entry) on startup. Then the highest ROM with
bit 6 set is entered either at &8000 if bit 1 is clear or at &8003 if bit 1
is set. It would be interesting to find a sideways ROM written for OS 0.xx.
--
J.G.Harston - jgh@... - mdfs.net