Address |
R/W |
Detail
|
$FD00
|
R
|
Keyboard data high bit, and clock speed indicator
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
Name
|
D8
|
|
CLK
|
D8
|
Keyboard data bit 8
|
|
CLK
|
Clock speed
|
0: 1.2MHz 1: 2MHz AV always reads '1'
|
|
W
|
Audio cassette and printer
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
Name
|
SLCTIN
|
STRB
|
|
CASRMT
|
CASWR
|
SLCTIN
|
Printer select input
|
0: Select 1: Unselect
|
STRB
|
Printer strobe
|
Strobe for data exchange (edge pulse)
|
CASRMT
|
Audio cassette remote
|
0: ON 1:OFF
|
CASWR
|
Audio cassette data
|
Write data, MIC
|
|
|
$FD01
|
R
|
Keyboard data low 8 bits
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
Name
|
Keyboard data bits 0~7
|
|
W
|
Printer output data
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
Name
|
Output data
|
|
|
$FD02
|
R
|
Audio cassette and printer
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
Name
|
CASRD
|
|
DET2
|
DTT1
|
PE
|
ACKNG
|
ERROR
|
BUSY
|
CASRD
|
Cassette data read, SPK
|
|
DET2
|
Printer DET 2
|
(unused)
|
DTT1
|
Printer DTT 1
|
(unused)
|
PE
|
Printer Paper Empty
|
0: Normal 1: No paper
|
ACKNG
|
Acknowledge
|
Triggered by reading (?)
|
ERROR
|
Printer Error
|
0: Error 1: Normal
|
BUSY
|
Printer Busy
|
0: Ready 1: Busy
|
|
W
|
IRQ mask
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
Name
|
SYNDET
|
RXRDY
|
TXRDY
|
MFD
|
|
TIMER
|
PRINTER
|
KEY
|
SYNDET
|
RS-232 sync detect
|
0: Disable 1: Enable
|
RXRDY
|
RS-232 serial receive ready
|
TXRDY
|
RS-232 serial transmit ready
|
MFD
|
Mini-floppy disk
|
TIMER
|
Periodic timer (every 2.03ms)
|
PRINTER
|
Printer ready for next character
|
KEY
|
Keystroke received
|
|
|
$FD03
|
R
|
IRQ flags
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
Name
|
|
EXT
|
TIMER
|
PRINTER
|
KEY
|
EXT
|
Expansion
|
0: Active 1: Inactive
|
TIMER
|
Periodic timer
|
PRINTER
|
Printer ready for next character
|
KEY
|
Keystroke received
|
|
W
|
Buzzer
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
Name
|
REPEAT
|
SINGLE
|
|
SPEAKER
|
REPEAT
|
Repeating buzzer
|
0: Off 1: On
|
SINGLE
|
One-shot buzzer
|
0: Off 1: On
|
SPEAKER
|
Output buzzer to speaker
|
0: Mute 1: Output
|
|
|
$FD04
|
R
|
Sub-CPU interface, FIRQ flags
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
Name
|
|
FDCMODE
|
KNJMODE
|
400CARD
|
400LINE
|
IRQMODE
|
BREAK
|
ATN
|
FDCMODE
|
FDC mode
|
0: 1MB 1: 320KB
|
L4 only
|
KNJMODE
|
Kanji ROM mode
|
0: SUB 1: MAIN
|
L4 only
|
400CARD
|
400-line card (260k color mode for AV40?)
|
0: Enable(?) 1: Disable(?)
|
L4 only
|
400LINE
|
400-line mode
|
0: 400-line 1: 200-line
|
L4 only
|
IRQMODE
|
IRQ mode
|
0: Normal 1: SFD
|
L4 only
|
BREAK
|
Break key pressed
|
0: Active 1: Inactive
|
ATN
|
Sub-CPU attention signal
|
|
W
|
Sub-CPU interface
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
Name
|
|
FDCMODE
|
KNJMODE
|
400CARD
|
400LINE
|
IRQMODE
|
|
FDCMODE
|
FDC mode
|
0: 1MB 1: 320KB
|
L4 only
|
KNJMODE
|
Kanji ROM mode
|
0: SUB 1: MAIN
|
L4 only
|
400CARD
|
400-line card (260k color mode for AV40?)
|
0: Enable(?) 1: Disable(?)
|
L4 only
|
400LINE
|
400-line mode
|
0: 400-line 1: 200-line
|
L4 only
|
IRQMODE
|
IRQ mode
|
0: Normal 1: SFD
|
L4 only
|
|
|
$FD05
|
R
|
Sub-CPU status, expansion status
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
Name
|
BUSY
|
|
EXTDET
|
BUSY
|
Sub-CPU busy signal
|
0: Ready 1: Busy
|
EXTDET
|
Expansion card presence
|
0: Present 1: Not present
|
|
W
|
Sub-CPU status, expansion status
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
Name
|
HALT
|
CANSEL
|
|
HALT
|
Halt sub-CPU execution
|
0: Run 1: Halt
|
CANSEL
|
Send IRQ to sub-CPU
|
0: No 1: Yes
|
|
|
$FD06
|
RW
|
RS-232 data
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
Name
|
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
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
Name
|
|
CD
|
|
MODE
|
CD
|
RS-232 Carrier Detect
|
0: On 1: Off
|
AV20, AV40 only
|
MODE
|
Boot mode switch
|
0: BASIC 1: DOS
|
AV only
|
|
W
|
RS-232 interface configuration
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
Name
|
CLKSEL
|
BAUD
|
|
CLKSEL
|
RS-232 clock select
|
TODO
|
AV20, AV40 only
|
BAUD
|
RS-232 baud rate
|
TODO
|
AV20, AV40 only
|
|
|
$FD0C
|
W
|
RS-232 interface configuration
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
Name
|
|
DTR
|
|
ENABLE
|
DTR
|
RS-232 DTR
|
0: Output 1: Prohibit
|
AV20, AV40 only
|
ENABLE
|
RS-232 enable
|
0: Disable 1: Enable
|
AV20, AV40 only
|
|
|
$FD0D
|
W
|
PSG command register
|
|
$FD0E
|
RW
|
PSG data register
|
|
$FD0F
|
RW
|
ROM bank mode
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
Name
|
MODE
|
MODE
|
Change ROM bank status by access type
|
Read: ROM Write: RAM
|
|
|
$FD10
|
W
|
Initiator ROM disable
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
Name
|
|
INITROM
|
|
INITROM
|
Initiator ROM enable
|
0: Enabled 1: Disabled
|
AV only
|
|
|
$FD12
|
R
|
Sub monitor status register
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
Name
|
|
320MODE
|
1
|
DISPTMG
|
VSYNC
|
320MODE
|
320/640 mode
|
0: 640 1: 320
|
AV only
|
DISPTMG
|
Display timing status
|
0: Blanking 1: Display
|
AV only
|
VSYNC
|
V-sync status
|
1: Active time (TODO: are you sure?)
|
AV only
|
|
W
|
Sub monitor status register
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
Name
|
|
320MODE
|
0
|
320MODE
|
320/640 mode
|
0: 640 1: 320
|
AV only
|
|
|
$FD13
|
W
|
Sub-bank register
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
Name
|
|
SB
|
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
|
Prohibited
|
1XX
|
Sub Monitor RAM |
AV40
|
|
|
$FD15
|
W
|
FM control register
|
|
$FD16
|
RW
|
FM data register
|
|
$FD17
|
R
|
Interrupt flags
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
Name
|
|
OPN
|
MOUSE
|
|
OPN
|
FM sound chip
|
0: Active 1: Inactive
|
AV only
|
MOUSE
|
Mouse
|
AV only
|
|
W
|
Interrupt mask
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
Name
|
|
MOUSE
|
|
MOUSE
|
Mouse
|
0: Disable 1: Enable
|
AV only
|
|
|
$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
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
Name
|
BATRAM
|
DICTROM
|
JBS
|
BATRAM
|
Battery RAM select
|
0: RAM 1: Battery RAM
|
AV only
|
DICTROM
|
Dictionary ROM select
|
0: RAM 1: Dictionary ROM
|
AV only
|
JBS
|
Dictionary Bank Select
|
AV only
|
|
|
$FD30
|
W
|
Analog palette color select
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
Name
|
0
|
LC11~LC8
|
|
$FD31
|
W
|
Analog palette color select
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
Name
|
LC7~LC0
|
|
$FD32
|
W
|
Analog palette blue level
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
Name
|
0
|
BL3~BL0
|
BL
|
Blue level (0: low ~ 15: high)
|
|
$FD33
|
W
|
Analog palette red level
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
Name
|
0
|
RL3~RL0
|
RL
|
Red level (0: low ~ 15: high)
|
|
$FD34
|
W
|
Analog palette green level
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
Name
|
0
|
GL3~GL0
|
GL
|
Green level (0: low ~ 15: high)
|
|
|
$FD37
|
W
|
Multi-page
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
Name
|
|
DISPG
|
DISPR
|
DISPB
|
|
CPUG
|
CPUR
|
CPUB
|
DISPG
|
Display Green plane
|
0: Disable 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
|
RW
|
Digital palette
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
Name
|
|
G
|
R
|
B
|
G
|
Green channel
|
0: Off 1: On
|
R
|
Red channel
|
B
|
Blue channel
|
|
|
$FD80 : $FD8F
|
RW
|
Memory Management Registers (MMR)
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
Name
|
A19~A12
|
Remaps each 4K block to a new 4K block in a range of 1M. Most machines only have a range of up to 256K, in which case the top bits are ignored.
|
|
$FD90
|
W
|
MMR segment register
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
Name
|
Segment
|
Select bank of MMR registers to use. This also selects the bank in the registers FD80~FD8F.
This can be used to quickly change memory spaces, and is designed for use in switching tasks in an operating system.
By default, this is 2 bits wide. Enabling EXTMMR will increase to 3 bits, though Takeda Toshiya's FM77AV40 emulator implies it increases to 4 bits?
|
|
$FD92
|
W
|
Window offset register
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
Name
|
OA15~OA8
|
Window allows accessing any area of the physical memory space $00000~$0FFFF without adjusting the MMR.
When enabled, the virtual memory area between $7C00~$7FFF is mapped to begin at OA, as specified above.
If accessing beyond the end of memory this way, the accessed address wraps to 0.
|
|
$FD93
|
RW
|
Mode select register 1
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
Name
|
MMR
|
WINDOW
|
|
BOOTRAM
|
MMR
|
Enable use of MMR
|
0: Disabled 1: Enabled
|
WINDOW
|
Enable use of window
|
0: Disabled 1: Enabled
|
BOOTRAM
|
Enable writing to boot RAM
|
0: Read-only 1: Read/Write
|
|
|
$FD94
|
W
|
CPU Speed
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
Name
|
EXTMMR
|
|
RFSHSPD
|
|
WINSPD
|
EXTMMR
|
Expanded MMR
|
0: Off 1: On
|
AV40/AV40EX/AV40SX only
|
RFSHSPD
|
Refresh speed
|
0: Slow 1: Fast
|
AV20/AV40 only
|
WINSPD
|
Window speed
|
0: Slow 1: Fast
|
AV20/AV40 only
|
|
|
$FD95
|
RW
|
Mode select register 2
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
Name
|
SUBDICT
|
|
MMRSPD
|
|
SUBDICT
|
Select dictionary or expansion sub ROM
|
0: Dictionary 1: Expansion sub ROM
|
AV40EX/AV40SX only
|
MMRSPD
|
MMR high speed mode
|
0: 625ns 1: 500ns
|
AV40EX/AV40SX only
|
|
|
$FD98
|
W
|
DMAC address register
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
Name
|
|
Address
|
|
$FD99
|
RW
|
DMAC data register
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
Name
|
Data
|
|