FLEX SBC09 System Registers
Processor DAT and Register MAP
On RESET, DAT RAM may be written to at the top 256 bytes of processor memory.
The top 4 Kbytes of MEM3 are also mapped at $F000 - $FFFF.
Write Only System Registers are mapped at $FE00 - $FE07.
$FFF0 - $FFFF
|
User 15 DAT RAM
|
$FFE0 - $FFEF
|
User 14 DAT RAM
|
.-
|
-
|
$FF00 - $FF0F
|
User 0 (System) DAT RAM
|
$FE00 - $FE07
|
System Registers
|
Write Only System Registers:
$FE00 - External Bus Wait State Register
-
|
-
|
-
|
-
|
- |
TWST2
|
TWST1
|
TWST0
|
$FE01 - User Mode Fuse Counter and User DAT select
UMF3
|
UMF2
|
UMF1
|
UMF0
|
UDS3
|
UDS2
|
UDS1
|
UDS0
|
$FE02 - IO Select register
A19
|
A18
|
A17
|
A16
|
A15
|
A14
|
A13
|
A12
|
$FE03 - External Bus Select Register
A19
|
A18
|
A17
|
A16
|
MASK19
|
MASK18
|
MASK17
|
MASK16
|
$FE04 - MEM0 Select register
A19
|
A18
|
A17
|
A16
|
MASK19
|
MASK18
|
MASK17
|
MASK16
|
$FE05 - MEM1 Select register
A19
|
A18
|
A17
|
A16
|
MASK19
|
MASK18
|
MASK17
|
MASK16
|
$FE06 - MEM2 Select register
A19
|
A18
|
A17
|
A16
|
MASK19
|
MASK18
|
MASK17
|
MASK16
|
$FE07 - MEM3 Select register
A19
|
A18
|
A17
|
A16
|
MASK19
|
MASK18
|
MASK17
|
MASK16
|
Programmable Chip Select :
Memory Chip selects MEM0 - MEM3 allow different size RAM, EPROM and Flash
to be mapped into Physical memory space. Chip sizes can be programmed from
64K to
1 Mbyte and may be mapped anywhere in the 1 Mbyte physical addressing range.
Each MEM select register has 4 Mask bit to define which address bits are
qualified for
memory decoding. The top 4 bits of the memory select registers define the
physical address
the memories will be mapped to.
The IO register page is restricted to 4KBytes to save space. All 8 bits
of the IO select register
are used in defining the physical address. A 64K - 1Mbyte External window
may be mapped
anywhere in the memory map to allow access to devices on the SS-50 bus.
The select registers will be prioritised so that address ranges can overlap.
MEM0 has the lowest
priority, then MEM1, MEM2, MEM3, IO and EXTERNAL the highest. If any memory
is not
decoded it is assumed to be external. This means you could have 2 x 512Kbyte
RAM chips in
MEM0 and MEM1 sockets and still have 64Kbyte ROMs in say MEM2 and MEM3
overriding
the MEM0 and MEM1 chip selects.
On reset all chip select registers are cleared, but the top 4Kbytes of
MEM3 will be mapped
into processor memory. DAT RAM output will be tristated and pulled high
by pull up resistors
on PA19 - PA12. The reset routine must program the DAT and chip select
register with
appropriate values to map RAM, ROM and IO as required. Writing a
zero to the User DAT
select register should enable the DAT in User 0 or system mode.
DAT - Dynamic Address Translation
Processor address bits A15 - A12 are applied to the DAT RAM address bits
TA0 - TA3
DAT RAM address bit TA4 - TA7 are connected to a User DAT select register.
The DAT RAM data bits PA19 - PA12 form the extended address lines, allowing
any
4K segment of the physical address range to be mapped into the 64K
logical address range
of the CPU.
The DAT is programmed by writing to the top 256 bytes of memory in the
processor address
range when the board is in System or User 0 mode. There are 16 DAT banks
of 16 bytes each.
The other DAT banks are accessed through the User DAT select register on
entry to the User mode.
On reset, system mode is selected (User 0) and the 16 bytes from $FF00
- $FF0F are used.
Each byte of the DAT corresponds to the physical address segment to be
mapped by the top 4 bits
of the processor address lines A15-A12.
User Mode Fuse Counter and User DAT Select.
The User DAT select and User Mode Fuse counter register selects the approriate
DAT
configuration for a user process when entering user mode.
This register simply holds the top 4 bits of the DAT RAM (UDS3=TA7 - UDS0=TA4)
and a 4 bit preset value for the User Mode Fuse Counter. After the User
DAT select
register has the user number written to it and a fuse count, the User Mode
Fuse counter
counts down every subsequent E clock, until it reaches zero. It then latches
the value in the
User DAT Select bits onto the high DAT address lines TA4 - TA7 and
sets the System/User
Mode flag to User Mode, unless the User number is zero. User 0 is reseved
for System mode.
The User Mode Fuse Counter is typically used with an RTI instruction to
re-enter user space
from a system call. The Fuse count must be carefully selected such that
the User bank is
selected when registers are restored from the stack as a result of the
RTI.
When an interrupt acknowledge bus cycle occurs as a result of a software
or hardware interrupt,
the System/User Mode flag is set to System and the User DAT Select register
is cleared.
This will select the DAT setup for System mode and enable access to the
DAT at the top of CPU
memory.
On reset, the System mode is selected, but the DAT will be disabled. A
zero must be written to the
the user DAT select register to enable the DAT in System mode (User 0).
Wait State Generator
The wait state generator stretches the E and Q clocks of the processor
for slow external
bus devices. The wait state delay is ORed with the external wait state
input (BMRDY)
to produce the processor MRDY input. Zero to 7 clock cycle delays may be
inserted.