<< Previous Message Main Index Next Message >>
<< Previous Message in Thread This Month Next Message in Thread >>
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
<< Previous Message Main Index Next Message >>
<< Previous Message in Thread This Month Next Message in Thread >>