Welcome to Data Crystal's new home! Data Crystal is now part of the TCRF family (sort of).
The wiki has recently moved; please report any issues in Discord. Pardon the dust.

User:Trap15/fm7

From Data Crystal
Jump to navigation Jump to search

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
Expansion ROM Banks
Bank Detail
$00~$1F Kanji LV1
$20~$2B Dictionary extra ROM
(AV40/AV40EX/AV40SX only)
$38~$3F Pass through to $38000
ROMs always enabled
$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
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
LC Color select
$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.

$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