Date : Sun, 09 Mar 2008 00:50:17 +0000
From : jgh@... (Jonathan Graham Harston)
Subject: TUBE chip, accessing 'Parasite' side
Johan Heuseveldt wrote:
> BA BS description
> 0 1 Interrupt or Reset aknowledge
>
> So BA/BS=01 can be seen as a Vector Pull. I'll use that to switch to the
> appropiate RAM locations, only needing A8 to toggle; FFFx > FEFx, as these
> 16 bytes are not used because I/O is mapped there, including the TUBE.
Ah! That's useful. Similar to the Z80 CoPro. When NMI occurs the
ROM is paged in at the NMI address at &0066, so the NMI interupt
fetches a jump to the proper NMI code in high memory.
Does 'interupt acknowledge' include the software interupts, so
it's valid for accessing any of the vectors at &FFF0-&FFFF. That's
really useful. It means, as you say, you can have your code as:
ORG &FEE0
TUBEREGS DEFS 16
VECTORS DEFS 16
ORG &FFEE
JMP WRCH
JMP WORD
JMP BYTE
JMP CLI
Obviates the need to provide an interface with SWIs, as the JSR
entries are all available.
Hmmm. Shame JMP [addr] needs four bytes in 6809. However, with the
client code copied to RAM, then the actual entry points at
&FFCE-&FFF7 are the vectors, as in the Z80.
Doing a bit more digging around I've found that the most usual
memory layout for a 6809 system is as follows:
0000-DFFF Program RAM
E000-EFFF Monitor workspace/IO ports/etc
F800 Monitor ROM (or ROM copied to RAM)
F800-F812 Standard entry vectors
F814... Additional entry vectors
Flex-09 or OS/9 lives at &C000-&DFFF, leaving &0000-&BFFF for user
programs.
--
J.G.Harston - jgh@... - mdfs.net/User/JGH
BBC IDE Hard Drive Interface - http://mdfs.net/Info/Comp/BBC/IDE