The wiki has recently moved; please report any issues in Discord. Pardon the dust.
User:Trap15/fm7: Difference between revisions
mNo edit summary |
mNo edit summary |
||
(4 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
== Main RAM Physical Map == | |||
When MMR is disabled, all accesses are mapped to $30000~$3FFFF. | |||
{| class="wikitable" | |||
|- | |||
! Start !! End !! Detail | |||
|- | |||
| $00000 || $0FFFF | |||
| RAM | |||
|- | |||
| $10000 || $1FFFF | |||
| Sub-CPU RAM direct access<br>Only available while sub-CPU is halted. | |||
|- | |||
| $20000 || $2FFFF | |||
| RAM (AV40/AV40EX/AV40SX only) | |||
|- | |||
| $28000 || $29FFF | |||
| Dictionary backup RAM<br>Only present if enabled<br>If disabled, fall back to $20000~$2FFFF RAM | |||
|- | |||
| $2E000 || $2EFFF | |||
| Expansion ROM, or Dictionary ROM<br>If disabled, fall back to $20000~$2FFFF RAM | |||
{| class="wikitable | |||
|- | |||
! colspan=2 | Expansion ROM Banks | |||
|- | |||
! Bank !! Detail | |||
|- | |||
| $00~$1F || Kanji LV1 | |||
|- | |||
| $20~$2B || Dictionary extra ROM<br>(AV40/AV40EX/AV40SX only) | |||
|- | |||
| $38~$3F || Pass through to $38000<br>ROMs always enabled | |||
|} | |||
|- | |||
| $30000 || $3FBFF | |||
| RAM | |||
|- | |||
| $38000 || $3FBFF | |||
| BASIC ROM<br>If disabled, fall back to $30000~$3FBFF RAM | |||
|- | |||
| $3FC00 || $3FC7F | |||
| RAM (BIOS work area) | |||
|- | |||
| $3FC80 || $3FCFF | |||
| Sub-CPU share RAM<br>Only available while sub-CPU is halted. | |||
|- | |||
| $3FD00 || $3FDFF | |||
| Memory mapped I/O | |||
|- | |||
| $3FE00 || $3FFFF | |||
| Boot RAM<br>Unless set writable, only $3FFE0~$3FFFD are writable. | |||
|- | |||
| $40000 || $FFFFF | |||
| Expansion RAM (add-on) | |||
|} | |||
== Main I/O Map == | == Main I/O Map == | ||
Line 1,009: | Line 1,066: | ||
! B | ! B | ||
| Blue channel | | Blue channel | ||
|} | |||
<!-- ================================================================================ FD80~FD8F --> | |||
|- | |||
! colspan=3 | | |||
|- | |||
! rowspan=1 | $FD80<br>:<br>$FD8F | |||
| RW | |||
| Memory Management Registers (MMR) | |||
{| class="wikitable" | |||
|- | |||
! Bit !! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0 | |||
|- | |||
! Name | |||
| colspan=8 | A19~A12 | |||
|} | |||
Remaps each 4K block to a new 4K block in a range of 1M.<br>Most machines only have a range of up to 256K, in which case the top bits are ignored. | |||
<!-- ================================================================================ FD90 --> | |||
|- | |||
! colspan=3 | | |||
|- | |||
! rowspan=1 | $FD90 | |||
| W | |||
| MMR segment register | |||
{| class="wikitable" | |||
|- | |||
! Bit !! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0 | |||
|- | |||
! Name | |||
| colspan=8 | Segment | |||
|} | |||
Select bank of MMR registers to use. This also selects the bank in the registers FD80~FD8F.<br> | |||
This can be used to quickly change memory spaces, and is designed for use in switching tasks in an operating system.<br> | |||
By default, this is 2 bits wide. Enabling EXTMMR will increase to 3 bits. | |||
<!-- ================================================================================ FD92 --> | |||
|- | |||
! colspan=3 | | |||
|- | |||
! rowspan=1 | $FD92 | |||
| W | |||
| Window offset register | |||
{| class="wikitable" | |||
|- | |||
! Bit !! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0 | |||
|- | |||
! Name | |||
| colspan=8 | OA15~OA8 | |||
|} | |||
Window allows accessing any area of the physical memory space $00000~$0FFFF without adjusting the MMR.<br> | |||
When enabled, the virtual memory area between $7C00~$7FFF is mapped to begin at OA, as specified above.<br> | |||
If accessing beyond the end of memory this way, the accessed address wraps to 0. | |||
<!-- ================================================================================ FD93 --> | |||
|- | |||
! colspan=3 | | |||
|- | |||
! rowspan=1 | $FD93 | |||
| RW | |||
| Mode select register 1 | |||
{| class="wikitable" | |||
|- | |||
! Bit !! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0 | |||
|- | |||
! Name | |||
| MMR | |||
| WINDOW | |||
| colspan=5 style="background:#eaecf0" | | |||
| BOOTRAM | |||
|} | |||
{| class="wikitable" | |||
|- | |||
! MMR | |||
| Enable use of MMR | |||
| 0: Disabled<br/>1: Enabled | |||
|- | |||
! WINDOW | |||
| Enable use of window | |||
| 0: Disabled<br/>1: Enabled | |||
|- | |||
! BOOTRAM | |||
| Enable writing to boot RAM | |||
| 0: Read-only<br/>1: Read/Write | |||
|} | |||
<!-- ================================================================================ FD94 --> | |||
|- | |||
! colspan=3 | | |||
|- | |||
! rowspan=1 | $FD94 | |||
| W | |||
| CPU Speed | |||
{| class="wikitable" | |||
|- | |||
! Bit !! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0 | |||
|- | |||
! Name | |||
| EXTMMR | |||
| colspan=4 style="background:#eaecf0" | | |||
| RFSHSPD | |||
| colspan=1 style="background:#eaecf0" | | |||
| WINSPD | |||
|} | |||
{| class="wikitable" | |||
|- | |||
! EXTMMR | |||
| Expanded MMR | |||
| 0: Off<br/>1: On | |||
| AV40/AV40EX/AV40SX only | |||
|- | |||
! RFSHSPD | |||
| Refresh speed | |||
| 0: Slow<br/>1: Fast | |||
| AV20/AV40 only | |||
|- | |||
! WINSPD | |||
| Window speed | |||
| 0: Slow<br/>1: Fast | |||
| AV20/AV40 only | |||
|} | |||
<!-- ================================================================================ FD95 --> | |||
|- | |||
! colspan=3 | | |||
|- | |||
! rowspan=1 | $FD95 | |||
| RW | |||
| Mode select register 2 | |||
{| class="wikitable" | |||
|- | |||
! Bit !! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0 | |||
|- | |||
! Name | |||
| SUBDICT | |||
| colspan=3 style="background:#eaecf0" | | |||
| MMRSPD | |||
| colspan=3 style="background:#eaecf0" | | |||
|} | |||
{| class="wikitable" | |||
|- | |||
! SUBDICT | |||
| Select dictionary or expansion sub ROM | |||
| 0: Dictionary<br/>1: Expansion sub ROM | |||
| AV40EX/AV40SX only | |||
|- | |||
! MMRSPD | |||
| MMR high speed mode | |||
| 0: 625ns<br/>1: 500ns | |||
| AV40EX/AV40SX only | |||
|} | |||
<!-- ================================================================================ FD98 --> | |||
|- | |||
! colspan=3 | | |||
|- | |||
! rowspan=1 | $FD98 | |||
| W | |||
| DMAC address register | |||
{| class="wikitable" | |||
|- | |||
! Bit !! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0 | |||
|- | |||
! Name | |||
| colspan=3 style="background:#eaecf0" | | |||
| colspan=5 | Address | |||
|} | |||
<!-- ================================================================================ FD99 --> | |||
|- | |||
! rowspan=1 | $FD99 | |||
| RW | |||
| DMAC data register | |||
{| class="wikitable" | |||
|- | |||
! Bit !! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0 | |||
|- | |||
! Name | |||
| colspan=8 | Data | |||
|} | |} | ||
<!-- ================================================================================ END --> | <!-- ================================================================================ END --> | ||
|} | |} |
Latest revision as of 10:04, 6 February 2024
Main RAM Physical Map
When MMR is disabled, all accesses are mapped to $30000~$3FFFF.
Start | End | Detail | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
$00000 | $0FFFF | RAM | ||||||||||
$10000 | $1FFFF | Sub-CPU RAM direct access Only available while sub-CPU is halted. | ||||||||||
$20000 | $2FFFF | RAM (AV40/AV40EX/AV40SX only) | ||||||||||
$28000 | $29FFF | Dictionary backup RAM Only present if enabled If disabled, fall back to $20000~$2FFFF RAM | ||||||||||
$2E000 | $2EFFF | Expansion ROM, or Dictionary ROM If disabled, fall back to $20000~$2FFFF RAM
| ||||||||||
$30000 | $3FBFF | RAM | ||||||||||
$38000 | $3FBFF | BASIC ROM If disabled, fall back to $30000~$3FBFF RAM | ||||||||||
$3FC00 | $3FC7F | RAM (BIOS work area) | ||||||||||
$3FC80 | $3FCFF | Sub-CPU share RAM Only available while sub-CPU is halted. | ||||||||||
$3FD00 | $3FDFF | Memory mapped I/O | ||||||||||
$3FE00 | $3FFFF | Boot RAM Unless set writable, only $3FFE0~$3FFFD are writable. | ||||||||||
$40000 | $FFFFF | Expansion RAM (add-on) |
Main I/O Map
Address | R/W | Detail | ||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
$FD00 | R | Keyboard data high bit, and clock speed indicator
| ||||||||||||||||||||||||||||||||||||||||||||
W | Audio cassette and printer
| |||||||||||||||||||||||||||||||||||||||||||||
$FD01 | R | Keyboard data low 8 bits
| ||||||||||||||||||||||||||||||||||||||||||||
W | Printer output data
| |||||||||||||||||||||||||||||||||||||||||||||
$FD02 | R | Audio cassette and printer
| ||||||||||||||||||||||||||||||||||||||||||||
W | IRQ mask
| |||||||||||||||||||||||||||||||||||||||||||||
$FD03 | R | IRQ flags
| ||||||||||||||||||||||||||||||||||||||||||||
W | Buzzer
| |||||||||||||||||||||||||||||||||||||||||||||
$FD04 | R | Sub-CPU interface, FIRQ flags
| ||||||||||||||||||||||||||||||||||||||||||||
W | Sub-CPU interface
| |||||||||||||||||||||||||||||||||||||||||||||
$FD05 | R | Sub-CPU status, expansion status
| ||||||||||||||||||||||||||||||||||||||||||||
W | Sub-CPU status, expansion status
| |||||||||||||||||||||||||||||||||||||||||||||
$FD06 | RW | RS-232 data
Read to receive, write to transmit. | ||||||||||||||||||||||||||||||||||||||||||||
$FD07 | RW | RS-232 command and status (TODO) | ||||||||||||||||||||||||||||||||||||||||||||
$FD08 | RW | Light pen (TODO) | ||||||||||||||||||||||||||||||||||||||||||||
$FD09 | RW | Light pen (TODO) | ||||||||||||||||||||||||||||||||||||||||||||
$FD0A | RW | Light pen (TODO) | ||||||||||||||||||||||||||||||||||||||||||||
$FD0B | R | Boot switch status, RS-232 interface
| ||||||||||||||||||||||||||||||||||||||||||||
W | RS-232 interface configuration
| |||||||||||||||||||||||||||||||||||||||||||||
$FD0C | W | RS-232 interface configuration
| ||||||||||||||||||||||||||||||||||||||||||||
$FD0D | W | PSG command register | ||||||||||||||||||||||||||||||||||||||||||||
$FD0E | RW | PSG data register | ||||||||||||||||||||||||||||||||||||||||||||
$FD0F | RW | ROM bank mode
| ||||||||||||||||||||||||||||||||||||||||||||
$FD10 | W | Initiator ROM disable
| ||||||||||||||||||||||||||||||||||||||||||||
$FD12 | R | Sub monitor status register
| ||||||||||||||||||||||||||||||||||||||||||||
W | Sub monitor status register
| |||||||||||||||||||||||||||||||||||||||||||||
$FD13 | W | Sub-bank register
| ||||||||||||||||||||||||||||||||||||||||||||
$FD15 | W | FM control register | ||||||||||||||||||||||||||||||||||||||||||||
$FD16 | RW | FM data register | ||||||||||||||||||||||||||||||||||||||||||||
$FD17 | R | Interrupt flags
| ||||||||||||||||||||||||||||||||||||||||||||
W | Interrupt mask
| |||||||||||||||||||||||||||||||||||||||||||||
$FD18 | R | Floppy status register (TODO) | ||||||||||||||||||||||||||||||||||||||||||||
W | Floppy command register (TODO) | |||||||||||||||||||||||||||||||||||||||||||||
$FD19 | RW | Floppy track register | ||||||||||||||||||||||||||||||||||||||||||||
$FD1A | RW | Floppy sector register | ||||||||||||||||||||||||||||||||||||||||||||
$FD1B | RW | Floppy data register | ||||||||||||||||||||||||||||||||||||||||||||
$FD1C | R | Floppy head register | ||||||||||||||||||||||||||||||||||||||||||||
W | Floppy head and side register (TODO) | |||||||||||||||||||||||||||||||||||||||||||||
$FD1D | R | Floppy drive register | ||||||||||||||||||||||||||||||||||||||||||||
W | Floppy drive and control register (TODO) | |||||||||||||||||||||||||||||||||||||||||||||
$FD1E | RW | Floppy mode register (TODO) | ||||||||||||||||||||||||||||||||||||||||||||
$FD1F | R | Floppy IRQ register | ||||||||||||||||||||||||||||||||||||||||||||
$FD20 | W | Level 1 Kanji ROM address high byte | ||||||||||||||||||||||||||||||||||||||||||||
$FD21 | W | Level 1 Kanji ROM address low byte | ||||||||||||||||||||||||||||||||||||||||||||
$FD22 | R | Level 1 Kanji ROM data left byte | ||||||||||||||||||||||||||||||||||||||||||||
$FD23 | R | Level 1 Kanji ROM data right byte | ||||||||||||||||||||||||||||||||||||||||||||
$FD2C | W | Level 2 Kanji ROM address high byte (AV only) | ||||||||||||||||||||||||||||||||||||||||||||
$FD2D | W | Level 2 Kanji ROM address low byte (AV only) | ||||||||||||||||||||||||||||||||||||||||||||
$FD2E | R | Level 2 Kanji ROM data left byte (AV only) | ||||||||||||||||||||||||||||||||||||||||||||
$FD2F | R | Level 2 Kanji ROM data right byte (AV only) | ||||||||||||||||||||||||||||||||||||||||||||
$FD2E | W | Dictionary ROM bank select
| ||||||||||||||||||||||||||||||||||||||||||||
$FD30 | W | Analog palette color select
| ||||||||||||||||||||||||||||||||||||||||||||
$FD31 | W | Analog palette color select
| ||||||||||||||||||||||||||||||||||||||||||||
$FD32 | W | Analog palette blue level
| ||||||||||||||||||||||||||||||||||||||||||||
$FD33 | W | Analog palette red level
| ||||||||||||||||||||||||||||||||||||||||||||
$FD34 | W | Analog palette green level
| ||||||||||||||||||||||||||||||||||||||||||||
$FD37 | W | Multi-page
| ||||||||||||||||||||||||||||||||||||||||||||
$FD38 : $FD3F |
RW | Digital palette
| ||||||||||||||||||||||||||||||||||||||||||||
$FD80 : $FD8F |
RW | Memory Management Registers (MMR)
Remaps each 4K block to a new 4K block in a range of 1M. | ||||||||||||||||||||||||||||||||||||||||||||
$FD90 | W | MMR segment register
Select bank of MMR registers to use. This also selects the bank in the registers FD80~FD8F. | ||||||||||||||||||||||||||||||||||||||||||||
$FD92 | W | Window offset register
Window allows accessing any area of the physical memory space $00000~$0FFFF without adjusting the MMR. | ||||||||||||||||||||||||||||||||||||||||||||
$FD93 | RW | Mode select register 1
| ||||||||||||||||||||||||||||||||||||||||||||
$FD94 | W | CPU Speed
| ||||||||||||||||||||||||||||||||||||||||||||
$FD95 | RW | Mode select register 2
| ||||||||||||||||||||||||||||||||||||||||||||
$FD98 | W | DMAC address register
| ||||||||||||||||||||||||||||||||||||||||||||
$FD99 | RW | DMAC data register
|