The wiki has recently moved; please report any issues in Discord. Pardon the dust.
User:Trap15/fm7: Difference between revisions
m (through fd03) |
mNo edit summary |
||
(12 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 121: | Line 178: | ||
! PE | ! PE | ||
| Printer Paper Empty | | Printer Paper Empty | ||
| 0: Normal<br>1: No | | 0: Normal<br>1: No paper | ||
|- | |- | ||
! ACKNG | ! ACKNG | ||
Line 137: | Line 194: | ||
|- | |- | ||
| W | | W | ||
| | | IRQ mask | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 182: | Line 239: | ||
! rowspan=2 | $FD03 | ! rowspan=2 | $FD03 | ||
| R | | R | ||
| | | IRQ flags | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 235: | Line 292: | ||
| Output buzzer to speaker | | Output buzzer to speaker | ||
| 0: Mute<br>1: Output | | 0: Mute<br>1: Output | ||
|} | |||
<!-- ================================================================================ FD04 --> | |||
|- | |||
! colspan=3 | | |||
|- | |||
! rowspan=2 | $FD04 | |||
| R | |||
| Sub-CPU interface, FIRQ flags | |||
{| class="wikitable" | |||
|- | |||
! Bit !! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0 | |||
|- | |||
! Name | |||
| colspan=1 style="background:#eaecf0" | | |||
| FDCMODE | |||
| KNJMODE | |||
| 400CARD | |||
| 400LINE | |||
| IRQMODE | |||
| BREAK | |||
| ATN | |||
|} | |||
{| class="wikitable" | |||
|- | |||
! FDCMODE | |||
| FDC mode | |||
| 0: 1MB<br>1: 320KB | |||
| L4 only | |||
|- | |||
! KNJMODE | |||
| Kanji ROM mode | |||
| 0: SUB<br>1: MAIN | |||
| L4 only | |||
|- | |||
! 400CARD | |||
| 400-line card<br>(260k color mode for AV40?) | |||
| 0: Enable(?)<br>1: Disable(?) | |||
| L4 only | |||
|- | |||
! 400LINE | |||
| 400-line mode | |||
| 0: 400-line<br>1: 200-line | |||
| L4 only | |||
|- | |||
! IRQMODE | |||
| IRQ mode | |||
| 0: Normal<br>1: SFD | |||
| L4 only | |||
|- | |||
! BREAK | |||
| Break key pressed | |||
| rowspan=2 colspan=2 | 0: Active<br>1: Inactive | |||
|- | |||
! ATN | |||
| Sub-CPU attention signal | |||
|} | |||
|- | |||
| W | |||
| Sub-CPU interface | |||
{| class="wikitable" | |||
|- | |||
! Bit !! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0 | |||
|- | |||
! Name | |||
| colspan=1 style="background:#eaecf0" | | |||
| FDCMODE | |||
| KNJMODE | |||
| 400CARD | |||
| 400LINE | |||
| IRQMODE | |||
| colspan=2 style="background:#eaecf0" | | |||
|} | |||
{| class="wikitable" | |||
|- | |||
! FDCMODE | |||
| FDC mode | |||
| 0: 1MB<br>1: 320KB | |||
| L4 only | |||
|- | |||
! KNJMODE | |||
| Kanji ROM mode | |||
| 0: SUB<br>1: MAIN | |||
| L4 only | |||
|- | |||
! 400CARD | |||
| 400-line card<br>(260k color mode for AV40?) | |||
| 0: Enable(?)<br>1: Disable(?) | |||
| L4 only | |||
|- | |||
! 400LINE | |||
| 400-line mode | |||
| 0: 400-line<br>1: 200-line | |||
| L4 only | |||
|- | |||
! IRQMODE | |||
| IRQ mode | |||
| 0: Normal<br>1: SFD | |||
| L4 only | |||
|} | |||
<!-- ================================================================================ FD05 --> | |||
|- | |||
! colspan=3 | | |||
|- | |||
! rowspan=2 | $FD05 | |||
| R | |||
| Sub-CPU status, expansion status | |||
{| class="wikitable" | |||
|- | |||
! Bit !! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0 | |||
|- | |||
! Name | |||
| BUSY | |||
| colspan=6 style="background:#eaecf0" | | |||
| EXTDET | |||
|} | |||
{| class="wikitable" | |||
|- | |||
! BUSY | |||
| Sub-CPU busy signal | |||
| 0: Ready<br>1: Busy | |||
|- | |||
! EXTDET | |||
| Expansion card presence | |||
| 0: Present<br>1: Not present | |||
|} | |||
|- | |||
| W | |||
| Sub-CPU status, expansion status | |||
{| class="wikitable" | |||
|- | |||
! Bit !! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0 | |||
|- | |||
! Name | |||
| HALT | |||
| CANSEL | |||
| colspan=6 style="background:#eaecf0" | | |||
|} | |||
{| class="wikitable" | |||
|- | |||
! HALT | |||
| Halt sub-CPU execution | |||
| 0: Run<br>1: Halt | |||
|- | |||
! CANSEL | |||
| Send IRQ to sub-CPU | |||
| 0: No<br>1: Yes | |||
|} | |||
<!-- ================================================================================ FD06 --> | |||
|- | |||
! colspan=3 | | |||
|- | |||
! rowspan=1 | $FD06 | |||
| RW | |||
| RS-232 data | |||
{| class="wikitable" | |||
|- | |||
! Bit !! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0 | |||
|- | |||
! Name | |||
| colspan=8 | RS-232 data | |||
|} | |||
Read to receive, write to transmit. | |||
<!-- ================================================================================ FD07 --> | |||
|- | |||
! colspan=3 | | |||
|- | |||
! rowspan=1 | $FD07 | |||
| RW | |||
| RS-232 command and status (TODO) | |||
<!-- ================================================================================ FD08 --> | |||
|- | |||
! colspan=3 | | |||
|- | |||
! rowspan=1 | $FD08 | |||
| RW | |||
| Light pen (TODO) | |||
<!-- ================================================================================ FD09 --> | |||
|- | |||
! colspan=3 | | |||
|- | |||
! rowspan=1 | $FD09 | |||
| RW | |||
| Light pen (TODO) | |||
<!-- ================================================================================ FD0A --> | |||
|- | |||
! colspan=3 | | |||
|- | |||
! rowspan=1 | $FD0A | |||
| RW | |||
| Light pen (TODO) | |||
<!-- ================================================================================ FD0B --> | |||
|- | |||
! colspan=3 | | |||
|- | |||
! rowspan=2 | $FD0B | |||
| R | |||
| Boot switch status, RS-232 interface | |||
{| class="wikitable" | |||
|- | |||
! Bit !! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0 | |||
|- | |||
! Name | |||
| colspan=5 style="background:#eaecf0" | | |||
| CD | |||
| colspan=1 style="background:#eaecf0" | | |||
| MODE | |||
|} | |||
{| class="wikitable" | |||
|- | |||
! CD | |||
| RS-232 Carrier Detect | |||
| 0: On<br>1: Off | |||
| AV20, AV40 only | |||
|- | |||
! MODE | |||
| Boot mode switch | |||
| 0: BASIC<br>1: DOS | |||
| AV only | |||
|} | |||
|- | |||
| W | |||
| RS-232 interface configuration | |||
{| class="wikitable" | |||
|- | |||
! Bit !! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0 | |||
|- | |||
! Name | |||
| colspan=3 | CLKSEL | |||
| colspan=3 | BAUD | |||
| colspan=2 style="background:#eaecf0" | | |||
|} | |||
{| class="wikitable" | |||
|- | |||
! CLKSEL | |||
| RS-232 clock select | |||
| TODO | |||
| AV20, AV40 only | |||
|- | |||
! BAUD | |||
| RS-232 baud rate | |||
| TODO | |||
| AV20, AV40 only | |||
|} | |||
<!-- ================================================================================ FD0C --> | |||
|- | |||
! colspan=3 | | |||
|- | |||
! rowspan=1 | $FD0C | |||
| W | |||
| RS-232 interface configuration | |||
{| class="wikitable" | |||
|- | |||
! Bit !! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0 | |||
|- | |||
! Name | |||
| colspan=5 style="background:#eaecf0" | | |||
| DTR | |||
| colspan=1 style="background:#eaecf0" | | |||
| ENABLE | |||
|} | |||
{| class="wikitable" | |||
|- | |||
! DTR | |||
| RS-232 DTR | |||
| 0: Output<br>1: Prohibit | |||
| AV20, AV40 only | |||
|- | |||
! ENABLE | |||
| RS-232 enable | |||
| 0: Disable<br>1: Enable | |||
| AV20, AV40 only | |||
|} | |||
<!-- ================================================================================ FD0D --> | |||
|- | |||
! colspan=3 | | |||
|- | |||
! rowspan=1 | $FD0D | |||
| W | |||
| PSG command register | |||
<!-- ================================================================================ FD0E --> | |||
|- | |||
! colspan=3 | | |||
|- | |||
! rowspan=1 | $FD0E | |||
| RW | |||
| PSG data register | |||
<!-- ================================================================================ FD0F --> | |||
|- | |||
! colspan=3 | | |||
|- | |||
! rowspan=1 | $FD0F | |||
| RW | |||
| ROM bank mode | |||
{| class="wikitable" | |||
|- | |||
! Bit !! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0 | |||
|- | |||
! Name | |||
| colspan=8 | MODE | |||
|} | |||
{| class="wikitable" | |||
|- | |||
! MODE | |||
| Change ROM bank status by access type | |||
| Read: ROM<br>Write: RAM | |||
|} | |||
<!-- ================================================================================ FD10 --> | |||
|- | |||
! colspan=3 | | |||
|- | |||
! rowspan=1 | $FD10 | |||
| W | |||
| Initiator ROM disable | |||
{| class="wikitable" | |||
|- | |||
! Bit !! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0 | |||
|- | |||
! Name | |||
| colspan=6 style="background:#eaecf0" | | |||
| INITROM | |||
| colspan=1 style="background:#eaecf0" | | |||
|} | |||
{| class="wikitable" | |||
|- | |||
! INITROM | |||
| Initiator ROM enable | |||
| 0: Enabled<br>1: Disabled | |||
| AV only | |||
|} | |||
<!-- ================================================================================ FD12 --> | |||
|- | |||
! colspan=3 | | |||
|- | |||
! rowspan=2 | $FD12 | |||
| R | |||
| Sub monitor status register | |||
{| class="wikitable" | |||
|- | |||
! Bit !! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0 | |||
|- | |||
! Name | |||
| colspan=1 style="background:#eaecf0" | | |||
| 320MODE | |||
| colspan=4 style="background:#eaecf0" | 1 | |||
| DISPTMG | |||
| VSYNC | |||
|} | |||
{| class="wikitable" | |||
|- | |||
! 320MODE | |||
| 320/640 mode | |||
| 0: 640<br>1: 320 | |||
| AV only | |||
|- | |||
! DISPTMG | |||
| Display timing status | |||
| 0: Blanking<br>1: Display | |||
| AV only | |||
|- | |||
! VSYNC | |||
| V-sync status | |||
| 1: Active time (TODO: are you sure?) | |||
| AV only | |||
|} | |||
|- | |||
| W | |||
| Sub monitor status register | |||
{| class="wikitable" | |||
|- | |||
! Bit !! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0 | |||
|- | |||
! Name | |||
| colspan=1 style="background:#eaecf0" | | |||
| 320MODE | |||
| colspan=6 style="background:#eaecf0" | 0 | |||
|} | |||
{| class="wikitable" | |||
|- | |||
! 320MODE | |||
| 320/640 mode | |||
| 0: 640<br>1: 320 | |||
| AV only | |||
|} | |||
<!-- ================================================================================ FD13 --> | |||
|- | |||
! colspan=3 | | |||
|- | |||
! rowspan=1 | $FD13 | |||
| W | |||
| Sub-bank register | |||
{| class="wikitable" | |||
|- | |||
! Bit !! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0 | |||
|- | |||
! Name | |||
| colspan=5 style="background:#eaecf0" | | |||
| colspan=3 | SB | |||
|} | |||
{| class="wikitable" | |||
|- | |||
! SB Value !! Behavior !! Valid System | |||
|- | |||
! 000 | |||
| Old Sub Monitor (Type C) (640x200) || All | |||
|- | |||
! 001 | |||
| New Sub Monitor (Type A) (640x200) || AV | |||
|- | |||
! 010 | |||
| New Sub Monitor (Type B) (320x200) || AV | |||
|- | |||
! 011 | |||
| colspan=2 | Prohibited | |||
|- | |||
! 1XX | |||
| Sub Monitor RAM || AV40 | |||
|} | |||
<!-- ================================================================================ FD15 --> | |||
|- | |||
! colspan=3 | | |||
|- | |||
! rowspan=1 | $FD15 | |||
| W | |||
| FM control register | |||
<!-- ================================================================================ FD16 --> | |||
|- | |||
! colspan=3 | | |||
|- | |||
! rowspan=1 | $FD16 | |||
| RW | |||
| FM data register | |||
<!-- ================================================================================ FD17 --> | |||
|- | |||
! colspan=3 | | |||
|- | |||
! rowspan=2 | $FD17 | |||
| R | |||
| Interrupt flags | |||
{| class="wikitable" | |||
|- | |||
! Bit !! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0 | |||
|- | |||
! Name | |||
| colspan=4 style="background:#eaecf0" | | |||
| OPN | |||
| MOUSE | |||
| colspan=2 style="background:#eaecf0" | | |||
|} | |||
{| class="wikitable" | |||
|- | |||
! OPN | |||
| FM sound chip | |||
| rowspan=2 | 0: Active<br>1: Inactive | |||
| AV only | |||
|- | |||
! MOUSE | |||
| Mouse | |||
| AV only | |||
|} | |||
|- | |||
| W | |||
| Interrupt mask | |||
{| class="wikitable" | |||
|- | |||
! Bit !! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0 | |||
|- | |||
! Name | |||
| colspan=5 style="background:#eaecf0" | | |||
| MOUSE | |||
| colspan=2 style="background:#eaecf0" | | |||
|} | |||
{| class="wikitable" | |||
|- | |||
! MOUSE | |||
| Mouse | |||
| 0: Disable<br>1: Enable | |||
| AV only | |||
|} | |||
<!-- ================================================================================ FD18 --> | |||
|- | |||
! colspan=3 | | |||
|- | |||
! rowspan=2 | $FD18 | |||
| R | |||
| Floppy status register (TODO) | |||
|- | |||
| W | |||
| Floppy command register (TODO) | |||
<!-- ================================================================================ FD19 --> | |||
|- | |||
! colspan=3 | | |||
|- | |||
! rowspan=1 | $FD19 | |||
| RW | |||
| Floppy track register | |||
<!-- ================================================================================ FD1A --> | |||
|- | |||
! colspan=3 | | |||
|- | |||
! rowspan=1 | $FD1A | |||
| RW | |||
| Floppy sector register | |||
<!-- ================================================================================ FD1B --> | |||
|- | |||
! colspan=3 | | |||
|- | |||
! rowspan=1 | $FD1B | |||
| RW | |||
| Floppy data register | |||
<!-- ================================================================================ FD1C --> | |||
|- | |||
! colspan=3 | | |||
|- | |||
! rowspan=2 | $FD1C | |||
| R | |||
| Floppy head register | |||
|- | |||
| W | |||
| Floppy head and side register (TODO) | |||
<!-- ================================================================================ FD1D --> | |||
|- | |||
! colspan=3 | | |||
|- | |||
! rowspan=2 | $FD1D | |||
| R | |||
| Floppy drive register | |||
|- | |||
| W | |||
| Floppy drive and control register (TODO) | |||
<!-- ================================================================================ FD1E --> | |||
|- | |||
! colspan=3 | | |||
|- | |||
! rowspan=1 | $FD1E | |||
| RW | |||
| Floppy mode register (TODO) | |||
<!-- ================================================================================ FD1F --> | |||
|- | |||
! colspan=3 | | |||
|- | |||
! rowspan=1 | $FD1F | |||
| R | |||
| Floppy IRQ register | |||
<!-- ================================================================================ FD20 --> | |||
|- | |||
! colspan=3 | | |||
|- | |||
! rowspan=1 | $FD20 | |||
| W | |||
| Level 1 Kanji ROM address high byte | |||
<!-- ================================================================================ FD21 --> | |||
|- | |||
! rowspan=1 | $FD21 | |||
| W | |||
| Level 1 Kanji ROM address low byte | |||
<!-- ================================================================================ FD22 --> | |||
|- | |||
! rowspan=1 | $FD22 | |||
| R | |||
| Level 1 Kanji ROM data left byte | |||
<!-- ================================================================================ FD23 --> | |||
|- | |||
! rowspan=1 | $FD23 | |||
| R | |||
| Level 1 Kanji ROM data right byte | |||
<!-- ================================================================================ FD2C --> | |||
|- | |||
! colspan=3 | | |||
|- | |||
! rowspan=1 | $FD2C | |||
| W | |||
| Level 2 Kanji ROM address high byte (AV only) | |||
<!-- ================================================================================ FD2D --> | |||
|- | |||
! rowspan=1 | $FD2D | |||
| W | |||
| Level 2 Kanji ROM address low byte (AV only) | |||
<!-- ================================================================================ FD2E --> | |||
|- | |||
! rowspan=1 | $FD2E | |||
| R | |||
| Level 2 Kanji ROM data left byte (AV only) | |||
<!-- ================================================================================ FD2F --> | |||
|- | |||
! rowspan=1 | $FD2F | |||
| R | |||
| Level 2 Kanji ROM data right byte (AV only) | |||
<!-- ================================================================================ FD2E --> | |||
|- | |||
! colspan=3 | | |||
|- | |||
! rowspan=1 | $FD2E | |||
| W | |||
| Dictionary ROM bank select | |||
{| class="wikitable" | |||
|- | |||
! Bit !! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0 | |||
|- | |||
! Name | |||
| BATRAM | |||
| DICTROM | |||
| colspan=6 | JBS | |||
|} | |||
{| class="wikitable" | |||
|- | |||
! BATRAM | |||
| Battery RAM select | |||
| 0: RAM<br>1: Battery RAM | |||
| AV only | |||
|- | |||
! DICTROM | |||
| Dictionary ROM select | |||
| 0: RAM<br>1: Dictionary ROM | |||
| AV only | |||
|- | |||
! JBS | |||
| colspan=2 | Dictionary Bank Select | |||
| AV only | |||
|} | |||
<!-- ================================================================================ FD30/FD31 --> | |||
|- | |||
! colspan=3 | | |||
|- | |||
! rowspan=1 | $FD30 | |||
| W | |||
| Analog palette color select | |||
{| class="wikitable" | |||
|- | |||
! Bit !! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0 | |||
|- | |||
! Name | |||
| colspan=4 style="background:#eaecf0" | 0 | |||
| colspan=4 | LC11~LC8 | |||
|} | |||
|- | |||
! rowspan=1 | $FD31 | |||
| W | |||
| Analog palette color select | |||
{| class="wikitable" | |||
|- | |||
! Bit !! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0 | |||
|- | |||
! Name | |||
| colspan=8 | LC7~LC0 | |||
|} | |||
{| class="wikitable" | |||
|- | |||
! LC | |||
| Color select | |||
|} | |||
<!-- ================================================================================ FD32 --> | |||
|- | |||
! rowspan=1 | $FD32 | |||
| W | |||
| Analog palette blue level | |||
{| class="wikitable" | |||
|- | |||
! Bit !! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0 | |||
|- | |||
! Name | |||
| colspan=4 style="background:#eaecf0" | 0 | |||
| colspan=4 | BL3~BL0 | |||
|} | |||
{| class="wikitable" | |||
|- | |||
! BL | |||
| Blue level (0: low ~ 15: high) | |||
|} | |||
<!-- ================================================================================ FD33 --> | |||
|- | |||
! rowspan=1 | $FD33 | |||
| W | |||
| Analog palette red level | |||
{| class="wikitable" | |||
|- | |||
! Bit !! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0 | |||
|- | |||
! Name | |||
| colspan=4 style="background:#eaecf0" | 0 | |||
| colspan=4 | RL3~RL0 | |||
|} | |||
{| class="wikitable" | |||
|- | |||
! RL | |||
| Red level (0: low ~ 15: high) | |||
|} | |||
<!-- ================================================================================ FD34 --> | |||
|- | |||
! rowspan=1 | $FD34 | |||
| W | |||
| Analog palette green level | |||
{| class="wikitable" | |||
|- | |||
! Bit !! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0 | |||
|- | |||
! Name | |||
| colspan=4 style="background:#eaecf0" | 0 | |||
| colspan=4 | GL3~GL0 | |||
|} | |||
{| class="wikitable" | |||
|- | |||
! GL | |||
| Green level (0: low ~ 15: high) | |||
|} | |||
<!-- ================================================================================ FD37 --> | |||
|- | |||
! colspan=3 | | |||
|- | |||
! rowspan=1 | $FD37 | |||
| W | |||
| Multi-page | |||
{| class="wikitable" | |||
|- | |||
! Bit !! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0 | |||
|- | |||
! Name | |||
| colspan=1 style="background:#eaecf0" | | |||
| DISPG | |||
| DISPR | |||
| DISPB | |||
| colspan=1 style="background:#eaecf0" | | |||
| CPUG | |||
| CPUR | |||
| CPUB | |||
|} | |||
{| class="wikitable" | |||
|- | |||
! DISPG | |||
| Display Green plane | |||
| rowspan=6 | 0: Disable<br/>Enable | |||
|- | |||
! DISPR | |||
| Display Red plane | |||
|- | |||
! DISPB | |||
| Display Blue plane | |||
|- | |||
! CPUG | |||
| CPU access to Green plane | |||
|- | |||
! CPUR | |||
| CPU access to Red plane | |||
|- | |||
! CPUB | |||
| CPU access to Blue plane | |||
|} | |||
<!-- ================================================================================ FD38~FD3F --> | |||
|- | |||
! colspan=3 | | |||
|- | |||
! rowspan=1 | $FD38<br>:<br>$FD3F | |||
| RW | |||
| Digital palette | |||
{| class="wikitable" | |||
|- | |||
! Bit !! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0 | |||
|- | |||
! Name | |||
| colspan=5 style="background:#eaecf0" | | |||
| G | |||
| R | |||
| B | |||
|} | |||
{| class="wikitable" | |||
|- | |||
! G | |||
| Green channel | |||
| rowspan=3 | 0: Off<br/>1: On | |||
|- | |||
! R | |||
| Red channel | |||
|- | |||
! B | |||
| 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
|