Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
sst-6809:memory_map [2024/10/11 16:31] – [Main Bus Select 1 1K] robert | sst-6809:memory_map [2024/10/13 21:30] (current) – add note for ASSIST09 expansion ROM area robert | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Memory Map ====== | ====== Memory Map ====== | ||
- | ^ Start - End ^ Purposes | + | ^ Use ^ |
- | | 0000 - DFFF | [[#56K NVRAM]] | | + | | RAM | |
- | | x000 - x3FF | [[#Main Bus Select 0 1K]] | | + | | ::: | D000 - D0FF | ASSIST09 working RAM, stacks and vector copies | |
- | | x400 - x7FF | [[#Main Bus Select 1 1K]] | | + | | I/O | E000 - E3FF |
- | | x800 - xAFF | unassigned | | + | | ::: | E400 - E7FF |
- | | xB00 - xBFF | [[#ACIA Select 256b]] | | + | | ::: | E800 - EAFF |
- | | xC00 - xEFF | unassigned | | + | | ::: | EB00 - EBFF |
- | | xF00 - xFFF | [[#Memory Latch Select 256b]] | | + | | ::: | EC00 - EEFF |
- | | F000 - FFFF | [[#EEPROM 4K]] | | + | | ::: | EF00 - EFFF |
+ | | ROM | | ||
+ | | ::: | F000 - F3FF | [[ASSIST09]] Expansion ROM area (unused) | | ||
+ | | ::: | F800 - FFFF | [[ASSIST09]] | | ||
+ | | MPU | FFF0 - FFF1 | HD6390 Illegal Opcode/ | ||
+ | | ::: | FFF2 - FFF3 | SWI3 vector (FFD8) | | ||
+ | | ::: | FFF4 - FFF5 | SWI2 vector (FFDC)| | ||
+ | | ::: | FFF6 - FFF7 | /FIRQ vector (FFE0) | | ||
+ | | ::: | FFF8 - FFF9 | /IRQ vector (FFE4) | | ||
+ | | ::: | FFFA - FFFB | SWI vector (FFE8) | | ||
+ | | ::: | FFFC - FFFD | /NMI vector (FFEC) | | ||
+ | | ::: | FFFE - FFFF | /RESET vector (F837) | ||
- | x is the J3 select jumper for 8xxx - Exxx address ranges | + | The 2.0 board is hard wired for "Exxx" |
- | + | ||
- | The 2.0 board is hard wired "x" = "E" in the map above. | + | |
The subsequent version has jumpers to locate the I/O block | The subsequent version has jumpers to locate the I/O block | ||
- | The memory decode maps any 32k page of the 512k into $0000-$7FFF. | + | These use J3 select jumper for 8xxx - Exxx address |
- | + | ||
- | The region from $8000-$DFFF is not affected by the paging register contents. | + | |
- | + | ||
- | So you can run paging code resident there. | + | |
- | + | ||
- | For that reason, it's also recommended to put any ISR's there. | + | |
- | + | ||
- | The lowest 4 paging bits control RAM, bits 4-6 select | + | |
- | + | ||
- | Bit 7 controls the " | + | |
===== 56K NVRAM ===== | ===== 56K NVRAM ===== | ||
Line 35: | Line 34: | ||
The lowest 64KB provides the processor' | The lowest 64KB provides the processor' | ||
- | There is a Memory | + | There is a Memory Latch Select |
The remaining RAM address range $8000-DFFF remains in place allowing a stable place for interrupt service handlers, stacks, bank mapping code and more. | The remaining RAM address range $8000-DFFF remains in place allowing a stable place for interrupt service handlers, stacks, bank mapping code and more. | ||
+ | |||
+ | ASSIST09 reserves D000-D100, F000-F3FF for its expansion ROM, and F400-FFFF for itself. | ||
+ | |||
===== Main Bus Select 0 1K ===== | ===== Main Bus Select 0 1K ===== | ||
Line 55: | Line 57: | ||
Or, a Mezz board could be on the bus with some device that decodes at $8-$B as there is a gap there. | Or, a Mezz board could be on the bus with some device that decodes at $8-$B as there is a gap there. | ||
- | |||
===== Main Bus Select 1 1K ===== | ===== Main Bus Select 1 1K ===== | ||
+ | |||
If you wanted to host identical devices, for example two VIA's, it's where multiple BSEL come in. | If you wanted to host identical devices, for example two VIA's, it's where multiple BSEL come in. | ||
Line 68: | Line 70: | ||
So the additional slot would have BSEL1 replacing the BSEL0 on the first one. | So the additional slot would have BSEL1 replacing the BSEL0 on the first one. | ||
- | I (Ken) cooked this up so that most of the decode could be shared amongst the add on boards. | + | Ken Willmott |
A good example of this is the VIA board, which has no decode logic on it at all. | A good example of this is the VIA board, which has no decode logic on it at all. | ||
Just a VIA and bypass caps. | Just a VIA and bypass caps. | ||
+ | |||
===== ACIA Select 256b ===== | ===== ACIA Select 256b ===== | ||
Line 88: | Line 91: | ||
===== Memory Latch Select 256b ===== | ===== Memory Latch Select 256b ===== | ||
+ | |||
The paging latch. | The paging latch. | ||
Line 93: | Line 97: | ||
E.g. if you write a 1 to EF00 it will duplicate the upper bank in the lower bank. | E.g. if you write a 1 to EF00 it will duplicate the upper bank in the lower bank. | ||
+ | |||
+ | The memory decode maps any 32k page of the 512k into $0000-$7FFF. | ||
+ | |||
+ | The region from $8000-$DFFF is not affected by the paging register contents. | ||
+ | |||
+ | So you can run paging code resident there. | ||
+ | |||
+ | For that reason, it's also recommended to put any ISR's there. | ||
+ | |||
+ | The lowest 4 paging bits control RAM, bits 4-6 select one of 8 EEPROM pages of 4k each. | ||
+ | |||
+ | Bit 7 controls the " | ||
The M command is RMW and the latch is not qualified with R/W. | The M command is RMW and the latch is not qualified with R/W. | ||
Line 107: | Line 123: | ||
So, the RAM that is hidden " | So, the RAM that is hidden " | ||
+ | |||
===== EEPROM 4K ===== | ===== EEPROM 4K ===== | ||
The SST-6809 contains a 32KB EEPROM. | The SST-6809 contains a 32KB EEPROM. | ||
- | The Memory | + | The Memory Latch Select |
+ | |||
+ | Make use of the boot ROM select jumper(s). | ||
+ | |||
+ | The 2.0 can boot from 4 different segments, the 2.1 only 2. | ||
+ | |||
+ | But the current EEPROM only has ASSIST09 burned into it. | ||
+ | |||
+ | The " | ||
+ | |||
+ | Ken just never put anything there. | ||
+ | |||
+ | At some point Ken could burn another boot into an EEPROM. | ||
+ | |||
+ | The PTM on the Mezz board can support tracing with ASSIST09, but it needs a jumper to put its interrupt on NMI. | ||
Return to [[: | Return to [[: |