More detailed information is found in the Manuals.
Notes
SRAM Address: Raw addresses for the system SRAM chip. The VICKY can only address the system SRAM (for now, DDR3 support coming). The 1st gen hardware has 512kB (19-bit space), while the 2nd gen has 2MB (21-bit space). The 24-bit pointers used are direct addresses into the SRAM chip, regardless of how the 2MB is mapped to the CPU's/MMU's address space. For instance, Core2x has 4 separate 512kB banks at non-consecutive addresses; these 4 banks are all linear+consecutive in the SRAM, and that view must be addressed here instead of its 24-bit CPU-visible addresses.
Model names: Certain features are only available on certain models, and these terms are used exactly. For instance, "F256Jr" means exactly the 1st gen Jr, not the entire Jr line.
BGR: A 3-byte color entry in Blue, Green, Red order.
BGRx: A 4-byte aligned color entry in Blue, Green, Red order, with the 4th byte unused.
IO Page 0
$C000 Gamma Lookup
MMU
|
Flat
|
R/W
|
Name
|
Description
|
$C000 - $C0FF
|
$F0:0000 - $F0:00FF
|
|
|
Blue gamma conversion table
|
$C400 - $C4FF
|
$F0:0400 - $F0:04FF
|
|
|
Green gamma conversion table
|
$C800 - $C8FF
|
$F0:0800 - $F0:08FF
|
|
|
Red gamma conversion table
|
$CC00: Mouse Pointer Bitmap
See: Use the PS/2 Mouse
MMU
|
Flat
|
R/W
|
Name
|
Description
|
$CC00 - $CCFF
|
$F0:0C00 - $F0:0CFF
|
|
|
Mouse pointer bitmap (16×16 greyscale bytes)
|
$D000: Master Control Registers
MMU
|
Flat
|
R/W
|
Name
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
$D000
|
$F0:1000
|
RW
|
MSTR_CTRL_0
|
—
|
GAMMA
|
SPRITE
|
TILE
|
BITMAP
|
GRAPH
|
OVRLY
|
TEXT
|
$D001
|
$F0:1001
|
RW
|
MSTR_CTRL_1
|
—
|
—
|
FON_SET
|
FON_OVLY
|
MON_SLP
|
DBL_Y
|
DBL_X
|
CLK_70
|
TEXT: Enable text layer
OVRLY: Overlay text on graphics, by making text background transparent. See FON_OVLY
GRAPH: Enable graphics layers (tile, sprites, bitmaps)
BITMAP: Enable bitmap layers (if GRAPH is also set)
TILE: Enable tile layers (if GRAPH is also set)
SPRITE: Enable sprite layers (if GRAPH is also set)
GAMMA: Enable gamma correction
CLK_70: Enable 400p70, else 480p60
DBL_X, DBL_Y: Double text mode character width & height
MON_SLP: Turn off monitor SYNC, putting it into sleep mode
FON_OVLY: Only BG color 0 is transparent in OVRLY mode. Else, all BG colors are transparent.
FON_SET: Chooses font set 0 or 1
$D002: Layers
MMU
|
Flat
|
R/W
|
Name
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
$D002
|
$F0:1002
|
RW
|
|
—
|
Layer 1
|
—
|
Layer 0
|
$D003
|
$F0:1003
|
RW
|
|
—
|
—
|
—
|
—
|
—
|
Layer 2
|
|
|
|
Values
|
0-2: Bitmap 0-2
4-6: Tilemap 0-2
|
$D004: Border
MMU
|
Flat
|
R/W
|
Name
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
$D004
|
$F0:1004
|
RW
|
BRDR_CTRL
|
—
|
SCROLL_X
|
—
|
—
|
—
|
ENABLE
|
$D005
|
$F0:1005
|
RW
|
BRDR_BLUE
|
Border color Blue component
|
$D006
|
$F0:1006
|
RW
|
BRDR_GREEN
|
Border color Green component
|
$D007
|
$F0:1007
|
RW
|
BRDR_RED
|
Border color Red component
|
$D008
|
$F0:1008
|
RW
|
BRDR_WIDTH
|
—
|
—
|
—
|
SIZE_X
|
$D009
|
$F0:1009
|
RW
|
BRDR_HEIGHT
|
—
|
—
|
—
|
SIZE_Y
|
$D00D: Background
MMU
|
Flat
|
R/W
|
Name
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
$D00D
|
$F0:100D
|
RW
|
BGND_BLUE
|
Background color Blue component
|
$D00E
|
$F0:100E
|
RW
|
BGND_GREEN
|
Background color Green component
|
$D00F
|
$F0:100F
|
RW
|
BGND_RED
|
Background color Red component
|
$D010: Text Cursor
MMU
|
Flat
|
R/W
|
Name
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
$D010
|
$F0:1010
|
RW
|
CCR
|
—
|
—
|
—
|
—
|
FLASH_DIS
|
RATE
|
ENABLE
|
|
|
|
RATE
|
0: 1 second
1: 1/2 second
2: 1/4 second
3: 1/8 second
|
$D012
|
$F0:1012
|
RW
|
CCH
|
Cursor character code
|
$D014
|
$F0:1014
|
RW
|
CURX
|
Cursor X position (16-bit)
|
$D016
|
$F0:1016
|
RW
|
CURY
|
Cursor Y position (16-bit)
|
$D018: Raster
MMU
|
Flat
|
R/W
|
Name
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
$D018
|
$F0:1018
|
R
|
RAST_COL
|
Raster current column (12-bit)
|
$D01A
|
$F0:101A
|
R
|
RAST_ROW
|
Raster current row (12-bit)
|
$D018
|
$F0:1018
|
W
|
LINT_CTRL
|
—
|
—
|
—
|
—
|
—
|
—
|
—
|
ENABLE
|
$D019
|
$F0:1019
|
W
|
LINT_L
|
Line interrupt line (12-bit)
|
$D100: Bitmaps
MMU
|
Flat
|
R/W
|
Name
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
$D100
|
$F0:1100
|
|
|
Bitmap 0
|
$D108
|
$F0:1108
|
|
|
Bitmap 1
|
$D110
|
$F0:1110
|
|
|
Bitmap 2
|
|
+0
|
RW
|
|
—
|
—
|
—
|
—
|
—
|
CLUT
|
ENABLE
|
|
+1
|
RW
|
|
SRAM Address of pixels (24-bit)
|
$D200: Tilemaps
MMU
|
Flat
|
R/W
|
Name
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
$D200
|
$F0:1200
|
|
|
Tilemap 0
|
$D20C
|
$F0:120C
|
|
|
Tilemap 1
|
$D218
|
$F0:1218
|
|
|
Tilemap 2
|
|
+$00
|
W
|
|
—
|
—
|
—
|
TILE_SIZE_8
|
—
|
—
|
—
|
ENABLE
|
|
+$01
|
W
|
|
SRAM Address of tile map entries (24-bit)
|
|
+$04
|
W
|
|
MAP_SIZE_X (8-bit)
|
|
+$06
|
W
|
|
MAP_SIZE_Y (8-bit)
|
|
+$08
|
W
|
|
X[3:0]
|
SSX
|
|
+$09
|
W
|
|
—
|
—
|
X[9:4]
|
|
+$0A
|
W
|
|
Y[3:0]
|
SSY
|
|
+$0B
|
W
|
|
—
|
—
|
—
|
—
|
Y[7:4]
|
$D280: Tilesets
MMU
|
Flat
|
R/W
|
Name
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
$D280
|
$F0:1280
|
|
|
Tileset 0
|
$D284
|
$F0:1284
|
|
|
Tileset 1
|
$D288
|
$F0:1288
|
|
|
Tileset 2
|
$D28C
|
$F0:128C
|
|
|
Tileset 3
|
$D290
|
$F0:1290
|
|
|
Tileset 4
|
$D294
|
$F0:1294
|
|
|
Tileset 5
|
$D298
|
$F0:1298
|
|
|
Tileset 6
|
$D29C
|
$F0:129C
|
|
|
Tileset 7
|
|
+0
|
W
|
|
SRAM Address of tile pixels (24-bit)
|
|
+3
|
W
|
|
—
|
—
|
—
|
—
|
SQUARE
|
—
|
—
|
—
|
$D400: Sound
$D400: SID chips
MMU
|
Flat
|
R/W
|
Name
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
$D400
|
$F0:1400
|
|
|
Left SID
|
$D500
|
$F0:1500
|
|
|
Right SID
|
|
+$00
|
W
|
Voice 1
|
Frequency (16-bit)
|
|
+$02
|
W
|
|
Pulse width (12-bit)
|
|
+$04
|
W
|
|
NOISE
|
PULSE
|
SAW
|
TRI
|
TEST
|
RING
|
SYNC
|
GATE
|
|
+$05
|
W
|
|
ATTACK
|
DELAY
|
|
+$06
|
W
|
|
SUSTAIN
|
RELEASE
|
|
+$07
|
W
|
Voice 2
|
Frequency (16-bit)
|
|
+$09
|
W
|
|
Pulse width (12-bit)
|
|
+$0B
|
W
|
|
NOISE
|
PULSE
|
SAW
|
TRI
|
TEST
|
RING
|
SYNC
|
GATE
|
|
+$0C
|
W
|
|
ATTACK
|
DELAY
|
|
+$0D
|
W
|
|
SUSTAIN
|
RELEASE
|
|
+$0E
|
W
|
Voice 3
|
Frequency (16-bit)
|
|
+$10
|
W
|
|
Pulse width (12-bit)
|
|
+$12
|
W
|
|
NOISE
|
PULSE
|
SAW
|
TRI
|
TEST
|
RING
|
SYNC
|
GATE
|
|
+$13
|
W
|
|
ATTACK
|
DELAY
|
|
+$14
|
W
|
|
SUSTAIN
|
RELEASE
|
|
+$15
|
W
|
Misc
|
—
|
—
|
—
|
—
|
—
|
FC[2:0]
|
|
+$16
|
W
|
|
FC[10:3]
|
|
+$17
|
W
|
|
RESONANCE
|
EXT
|
FILTV3
|
FILTV2
|
FILTV1
|
|
+$18
|
W
|
|
MUTEV3
|
HIGH
|
BAND
|
LOW
|
VOLUME
|
$D580: OPL3 (NOT on F256Jr!)
Main page: Use the OPL3 YMF262
MMU
|
Flat
|
R/W
|
Name
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
$D580
|
$F0:1580
|
W
|
|
Address registers for ports $000 - $0FF
|
$D581
|
$F0:1581
|
W
|
|
Data registers for all ports
|
$D582
|
$F0:1582
|
W
|
|
Address register for ports $100 - $1FF
|
$D600: PSGs
Main page: Use the PSG
MMU
|
Flat
|
R/W
|
Name
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
$D600
|
$F0:1600
|
|
|
PSG Left
|
$D608
|
$F0:1608
|
|
|
PSG Left + Right
|
$D610
|
$F0:1610
|
|
|
PSG Right
|
Note the stereo separation is controlled with the PSG_ST flag.
$D620: CODEC
Main page: Use the CODEC
MMU
|
Flat
|
R/W
|
Name
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
$D620
|
$F0:1620
|
W
|
|
DATA[7:0]
|
$D621
|
$F0:1621
|
W
|
|
REGISTER
|
DATA[8]
|
$D622
|
$F0:1622
|
R
|
|
—
|
—
|
—
|
—
|
—
|
—
|
—
|
BUSY
|
|
|
W
|
|
—
|
—
|
—
|
—
|
—
|
—
|
—
|
START
|
$D630: UART
MMU
|
Flat
|
R/W
|
Name
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
|
|
|
DLAB = 0
|
$D630
|
$F0:1630
|
R
|
RXD
|
RX_DATA
|
|
|
W
|
TXR
|
TX_DATA
|
$D631
|
$F0:1631
|
RW
|
IER
|
—
|
—
|
—
|
—
|
STAT
|
ERR
|
TXE
|
RXA
|
|
|
|
DLAB = 1
|
$D630
|
$F0:1630
|
RW
|
DL
|
DIV (16-bit)
|
|
|
|
|
|
$D632
|
$F0:1632
|
R
|
IIR
|
FIFO
|
FIFO64
|
—
|
STATE
|
/PENDING
|
|
|
W
|
FCR
|
RXT
|
FIFO64
|
—
|
DMA
|
TXR
|
RXR
|
FIFOE
|
$D633
|
$F0:1633
|
RW
|
LCR
|
DLAB
|
—
|
PARITY
|
STOP
|
DATA
|
$D640: PS/2
See: Use the PS/2 Mouse
MMU
|
Flat
|
R/W
|
Name
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
$D640
|
$F0:1640
|
RW
|
PS2_CTRL
|
—
|
—
|
MCLR
|
KCLR
|
M_WR
|
—
|
K_WR
|
—
|
$D641
|
$F0:1641
|
RW
|
PS2_OUT
|
Data to keyboard
|
$D642
|
$F0:1642
|
R
|
KBD_IN
|
Data in from keyboard FIFO
|
$D643
|
$F0:1643
|
R
|
MS_IN
|
Data in from mouse FIFO
|
$D644
|
$F0:1644
|
R
|
PS2_STAT
|
K_AK
|
K_NK
|
M_AK
|
M_NK
|
—
|
—
|
MEMP
|
KEMP
|
$D650: Timers
MMU
|
Flat
|
R/W
|
Name
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
$D650
|
$F0:1650
|
W
|
T0_CTR
|
—
|
—
|
—
|
—
|
UP
|
LD
|
CLR
|
EN
|
|
|
R
|
T0_STAT
|
—
|
—
|
—
|
—
|
—
|
—
|
—
|
EQ
|
$D651
|
$F0:1651
|
RW
|
T0_VAL
|
VAL (24-bit)
|
$D654
|
$F0:1654
|
RW
|
T0_CMP_CTR
|
—
|
—
|
—
|
—
|
—
|
—
|
RELD
|
RECLR
|
$D655
|
$F0:1655
|
RW
|
T0_CMP
|
CMP (24-bit)
|
|
|
|
|
|
|
|
|
|
|
|
|
$D658
|
$F0:1658
|
W
|
T1_CTR
|
—
|
—
|
—
|
—
|
UP
|
LD
|
CLR
|
EN
|
|
|
R
|
T1_STAT
|
—
|
—
|
—
|
—
|
—
|
—
|
—
|
EQ
|
$D659
|
$F0:1659
|
RW
|
T1_VAL
|
VAL (24-bit)
|
$D65C
|
$F0:165C
|
RW
|
T1_CMP_CTR
|
—
|
—
|
—
|
—
|
—
|
—
|
RELD
|
RECLR
|
$D65D
|
$F0:165D
|
RW
|
T1_CMP
|
CMP (24-bit)
|
$D660: Interrupts
Main page: IRQ, IRQ Programming
MMU
|
Flat
|
R/W
|
Name
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
$D660
|
$F0:1660
|
|
INT_PENDING
|
Per-interrupt flags (24-bit)
|
$D664
|
$F0:1664
|
|
INT_POLARITY
|
Per-interrupt flags (24-bit)
|
$D668
|
$F0:1668
|
|
INT_EDGE
|
Per-interrupt flags (24-bit)
|
$D66C
|
$F0:166C
|
|
INT_MASK
|
Per-interrupt flags (24-bit)
|
|
+0 & $01
|
|
INT_VKY_SOF
|
Start of Frame interrupt (beginning of VSYNC)
|
|
+0 & $02
|
|
INT_VKY_SOL
|
Start of Line interrupt
|
|
+0 & $04
|
|
INT_PS2_KBD
|
PS/2 keyboard event
|
|
+0 & $08
|
|
INT_PS2_MOUSE
|
PS/2 mouse event
|
|
+0 & $10
|
|
INT_TIMER_0
|
TIMER0 has reached its target value
|
|
+0 & $20
|
|
INT_TIMER_1
|
TIMER1 has reached its target value
|
|
+0 & $80
|
|
INT_CARTRIDGE
|
Interrupt asserted from cartridge port
|
|
|
|
|
|
|
+1 & $01
|
|
INT_UART
|
The UART is ready to receive or send data
|
|
+1 & $10
|
|
INT_RTC
|
Interrupt from real time clock chip
|
|
+1 & $20
|
|
INT_VIA0
|
Event from the joystick VIA chip
|
|
+1 & $40
|
|
INT_VIA1
|
Event from the keyboard VIA chip (F256k Series Only!)
|
|
+1 & $80
|
|
INT_SDC_INS
|
SD Card has been inserted
|
|
|
|
|
|
|
+2 & $01
|
|
IEC_DATA_i
|
IEC data in
|
|
+2 & $02
|
|
IEC_CLK_i
|
IEC clock in
|
|
+2 & $04
|
|
IEC_ATN_i
|
IEC attention in
|
|
+2 & $08
|
|
IEC_SREQ_i
|
IEC service request in
|
$D670: DIP Switches
Main page: DIP switches
MMU
|
Flat
|
R/W
|
Name
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
$D670
|
$F0:1670
|
R
|
|
GAMMA
|
USER2
|
USER1
|
USER0
|
BOOT
|
$D680: IEC
MMU
|
Flat
|
R/W
|
Name
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
$D680
|
$F0:1680
|
R
|
IEC_I
|
SRQ_i
|
—
|
—
|
ATN_i
|
—
|
—
|
CLK_i
|
DAT_i
|
$D681
|
$F0:1681
|
RW
|
IEC_O
|
SRQ_o
|
RST_o
|
NMI_EN
|
ATN_o
|
—
|
—
|
CLK_o
|
DAT_o
|
$D690: RTC
MMU
|
Flat
|
R/W
|
Name
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
$D690
|
$F0:1690
|
RW
|
Seconds
|
0
|
10s digit
|
1s digit
|
$D691
|
$F0:1691
|
RW
|
Seconds Alarm
|
0
|
10s digit
|
1s digit
|
$D692
|
$F0:1692
|
RW
|
Minutes
|
0
|
10s digit
|
1s digit
|
$D693
|
$F0:1693
|
RW
|
Minutes Alarm
|
0
|
10s digit
|
1s digit
|
$D694
|
$F0:1694
|
RW
|
Hours
|
AM/PM
|
0
|
10s digit
|
1s digit
|
$D695
|
$F0:1695
|
RW
|
Hours Alarm
|
AM/PM
|
0
|
10s digit
|
1s digit
|
$D696
|
$F0:1696
|
RW
|
Days
|
0
|
0
|
10s digit
|
1s digit
|
$D697
|
$F0:1697
|
RW
|
Days Alarm
|
0
|
0
|
10s digit
|
1s digit
|
$D698
|
$F0:1698
|
RW
|
Day of Week
|
0
|
0
|
0
|
0
|
0
|
1s digit
|
$D699
|
$F0:1699
|
RW
|
Month
|
0
|
0
|
0
|
10s digit
|
1s digit
|
$D69A
|
$F0:169A
|
RW
|
Year
|
10s digit
|
1s digit
|
$D69B
|
$F0:169B
|
RW
|
Rates
|
0
|
WD
|
RS
|
$D69C
|
$F0:169C
|
RW
|
Enables
|
0
|
0
|
0
|
0
|
AIE
|
PIE
|
PWRIE
|
ABE
|
$D69D
|
$F0:169D
|
RW
|
Flags
|
0
|
0
|
0
|
0
|
AF
|
PF
|
PWRF
|
BVF
|
$D69E
|
$F0:169E
|
RW
|
Control
|
0
|
0
|
0
|
0
|
UTI
|
STOP
|
12/24
|
DSE
|
$D69F
|
$F0:169F
|
RW
|
Century
|
10s digit
|
1s digit
|
$D6A0: System
$D6A0: System Control Registers
Main page: Use the LEDs
MMU
|
Flat
|
R/W
|
Name
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
$D6A0
|
$F0:16A0
|
W
|
SYS0
|
RESET
|
—
|
CAP_EN
|
BUZZ
|
L1
|
L0
|
SD_L
|
PWR_L
|
|
|
R
|
SYS0
|
—
|
SD_WP
|
SD_CD
|
BUZZ
|
L1
|
L0
|
SD_L
|
PWR_L
|
$D6A1
|
$F0:16A1
|
RW
|
SYS1
|
L1_RATE
|
L0_RATE
|
SID_ST
|
PSG_ST
|
L1_MN
|
L0_MN
|
$D6A7: F256k Series LEDs
Main page: Use the LEDs#LED_Color_Registers_on_the_K_and_K2
MMU
|
Flat
|
R/W
|
Name
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
$D6A7
|
$F0:16A7
|
W
|
|
Power LED color (BGR)
|
$D6AA
|
$F0:16AA
|
W
|
|
Media LED color (BGR)
|
$D6AD
|
$F0:16AD
|
W
|
|
Shift LED color (BGR)
|
$D6A7: Machine ID and FPGA Core Versions
MMU
|
Flat
|
R/W
|
Name
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
$D6A7
|
$F0:16A7
|
R
|
MID
|
—
|
—
|
—
|
Machine ID
|
$D6A8
|
$F0:16A8
|
R
|
PCBID0
|
ASCII character 0: "B" (See also $D6EB)
|
$D6A9
|
$F0:16A9
|
R
|
PCBID1
|
ASCII character 1: "0"
|
$D6AA
|
$F0:16AA
|
R
|
CHSV
|
VICKY sub-version in BCD (16-bit)
|
$D6AC
|
$F0:16AC
|
R
|
CHV
|
VICKY version in BCD (16-bit)
|
$D6AE
|
$F0:16AE
|
R
|
CHN
|
VICKY number in BCD (16-bit)
|
$D6E0: Mouse Pointer Control
MMU
|
Flat
|
R/W
|
Name
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
$D6E0
|
$F0:16E0
|
W
|
|
—
|
—
|
—
|
—
|
—
|
—
|
MODE
|
EN
|
$D6E2
|
$F0:16E2
|
RW
|
|
X (16-bit)
|
$D6E4
|
$F0:16E4
|
RW
|
|
Y (16-bit)
|
$D6E6
|
$F0:16E6
|
W
|
|
PS2_BYTE_0
|
$D6E7
|
$F0:16E7
|
W
|
|
PS2_BYTE_1
|
$D6E8
|
$F0:16E8
|
W
|
|
PS2_BYTE_2
|
$D6EB: PCB Information
MMU
|
Flat
|
R/W
|
Name
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
$D6EB
|
$F0:16EB
|
R
|
PCBMA
|
PCB Major Rev (ASCII)
|
$D6EC
|
$F0:16EC
|
R
|
PCBMI
|
PCB Minor Rev (ASCII)
|
$D6ED
|
$F0:16ED
|
R
|
PCBD
|
PCB Day (BCD)
|
$D6EE
|
$F0:16EE
|
R
|
PCBM
|
PCB Month (BCD)
|
$D6EF
|
$F0:16EF
|
R
|
PCBY
|
PCB Year (BCD)
|
$D700: VS1053b (F256 Gen 2 only)
Main page: Use the VS1053b chip
MMU
|
Flat
|
R/W
|
Name
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
$D700
|
|
|
SCI Control
|
Control the flow of information
|
$D701
|
|
|
SCI Address
|
Select to which VS1053b address to write to
|
$D702
|
|
|
SCI Data 1
|
First byte of data
|
$D703
|
|
|
SCI Data 2
|
Second byte of data
|
$D704
|
|
|
FIFO Count 1
|
First byte of the remaining byte count in the FIFO
|
$D705
|
|
|
FIFO Count 2
|
Second byte of the remaining byte count in the FIFO
|
$D800: Text Mode CLUT
MMU
|
Flat
|
R/W
|
Name
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
$D800 - $D83F
|
$F0:1800 - $F0:183F
|
W
|
|
Text foreground colors (16 × BGRx)
|
$D840 - $D87F
|
$F0:1840 - $F0:187f
|
W
|
|
Text background colors (16 × BGRx)
|
$D880: NES/SNES Gamepads
Main page: Use the SNES/NES controllers
MMU
|
Flat
|
R/W
|
Name
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
$D880
|
|
R
|
NES_CTRL
|
NES_TRIG
|
DONE
|
—
|
—
|
—
|
MODE
|
—
|
NES_EN
|
|
|
W
|
NES_CTRL
|
NES_TRIG
|
—
|
—
|
—
|
—
|
MODE
|
—
|
NES_EN
|
$D884
|
|
|
|
Pad 0
|
$D886
|
|
|
|
Pad 1
|
$D888
|
|
|
|
Pad 2
|
$D88A
|
|
|
|
Pad 3
|
|
+0
|
|
Mode=0
|
A
|
B
|
SELECT
|
START
|
UP
|
DOWN
|
LEFT
|
RIGHT
|
|
+0
|
|
Mode=1
|
B
|
Y
|
SELECT
|
START
|
UP
|
DOWN
|
LEFT
|
RIGHT
|
|
+1
|
|
Mode=1
|
—
|
—
|
—
|
—
|
A
|
X
|
L
|
R
|
$D900: Sprites
MMU
|
Flat
|
R/W
|
Name
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
$D900 - $DAFF
|
$F0:1900 - $F0:1AFF
|
|
|
64 × 8-byte Sprite Registers
|
|
+0
|
W
|
|
—
|
SIZE
|
LAYER
|
LUT
|
ENABLE
|
|
|
|
SIZE
|
0: 32×32, 1: 24×24, 2: 16×16, 3: 8×8
|
|
+1
|
W
|
|
SRAM Address of sprite pixels (24-bit)
|
|
+4
|
W
|
|
X position (16-bit)
|
|
+6
|
W
|
|
Y position (16-bit)
|
$DB00: Moar system
$DB00: VIAs
See: Keyboard raw codes
MMU
|
Flat
|
R/W
|
Name
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
$DB00
|
$F0:1B00
|
|
VIA1
|
Internal Keyboard VIA (F256k series only!)
|
$DC00
|
$F0:1C00
|
|
VIA0
|
Atari joystick VIA
|
|
+0
|
RW
|
IORB
|
Port B Data
|
|
+1
|
RW
|
IORA
|
Port A Data
|
|
+2
|
RW
|
DDRB
|
Port B Data Direction Register
|
|
+3
|
RW
|
DDRA
|
Port A Data Direction Register
|
|
+4
|
RW
|
T1C
|
Timer 1 Counter (16-bit)
|
|
+6
|
RW
|
T1L
|
Timer 1 Latch (16-bit)
|
|
+8
|
RW
|
T2C
|
Timer 2 Counter (16-bit)
|
|
+A
|
RW
|
SDR
|
Serial Data Registers
|
|
+B
|
RW
|
ACR
|
T1_CTRL
|
T2_CTRL
|
SR_CTRL
|
PBL_EN
|
PAL_EN
|
|
+C
|
RW
|
PCR
|
CB2_CTRL
|
CB1_CTRL
|
CA1_CTRL
|
CA1_CTRL
|
|
+D
|
RW
|
IFR
|
IRQF
|
T1F
|
T2F
|
CB1F
|
CB2F
|
SRF
|
CA1F
|
CA2F
|
|
+E
|
RW
|
IER
|
SET
|
T1E
|
T2E
|
CB1E
|
CB2E
|
SRE
|
CA1E
|
CA2E
|
|
+F
|
RW
|
IORA2
|
Port A Data (no handshake)
|
$DD00: SD Card Controller
MMU
|
Flat
|
R/W
|
Name
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
$DD00
|
$F0:1D00
|
RW
|
|
SPI_BUSY
|
—
|
—
|
—
|
—
|
—
|
SPI_CLK
|
CS_EN
|
$DD01
|
$F0:1D01
|
RW
|
|
SPI_DATA
|
SPI_CLK: 400MHz init clock when set, 12.5MHz standard clock when clear.
$DD40: F256K2 Case LCD Screen
Main page: Use the K2 LCD
MMU
|
Flat
|
R/W
|
Name
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
$DD40
|
$F0:1D40
|
|
LCD_CMD_CMD
|
Command
|
$DD41
|
$F0:1D41
|
|
LCD_CMD_DTA
|
Data
|
$DD42
|
$F0:1D42
|
|
LCD_PIX_LO
|
Green[2:0]
|
Blue
|
$DD43
|
$F0:1D43
|
|
LCD_PIX_HI
|
Red
|
Green[5:3]
|
$DDA0: SAM2695 MIDI (F256K series only)
Main page: Use the Sam2695 Dream MIDI chip
MMU
|
Flat
|
R/W
|
Name
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
$DDA0
|
|
R
|
MIDI_STATUS
|
TX_EMPTY
|
RX_FULL
|
—
|
—
|
—
|
—
|
—
|
—
|
$DDA1
|
|
RW
|
MIDI_FIFO_DATA_PORT
|
Data
|
$DDA2
|
|
|
MIDI_RXD_COUNT
|
Rx FIFO Data count (12-bit)
|
$DDA4
|
|
|
MIDI_TXD_COUNT
|
Tx FIFO Data Count (12-bit)
|
$DE00: Integer Math Coprocessor
MMU
|
Flat
|
R/W
|
Name
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
$DE00
|
$F0:1E00
|
RW
|
MULU_A
|
Multiplication A (Unsigned 16-bit)
|
$DE02
|
$F0:1E02
|
RW
|
MULU_B
|
Multiplication B (Unsigned 16-bit)
|
$DE04
|
$F0:1E04
|
RW
|
DIVU_DEN
|
Division Denominator (Unsigned 16-bit)
|
$DE06
|
$F0:1E06
|
RW
|
DIVU_NUM
|
Division Numerator (Unsigned 16-bit)
|
$DE08
|
$F0:1E08
|
RW
|
ADD_A
|
Addition A (Unsigned 32-bit)
|
$DE0C
|
$F0:1E0C
|
RW
|
ADD_B
|
Addition B (Unsigned 32-bit)
|
|
|
|
|
|
$DE10
|
$F0:1E10
|
RW
|
MULU
|
Multiplication A×B Result (Unsigned 32-bit)
|
$DE14
|
$F0:1E14
|
RW
|
QUOU
|
Quotient of Num/Den (Unsigned 16-bit)
|
$DE16
|
$F0:1E16
|
RW
|
REMU
|
Remainder of Num/Den (Unsigned 16-bit)
|
$DE18
|
$F0:1E18
|
RW
|
ADD_R
|
Addition A+B Result (Unsigned 32-bit)
|
Multiplication, division, and addition operations are completely independent of each other. Results are available immediately.
$DF00: DMA Controller
MMU
|
Flat
|
R/W
|
Name
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
$DF00
|
$F0:1F00
|
RW
|
|
START
|
—
|
—
|
—
|
INT_EN
|
FILL
|
2D
|
ENABLE
|
$DF01
|
$F0:1F01
|
W
|
|
Fill data byte
|
$DF04
|
$F0:1F04
|
RW
|
|
Source SRAM Address (24-bit)
|
$DF08
|
$F0:1F08
|
RW
|
|
Destination SRAM Address (24-bit)
|
$DF0C
|
$F0:1F0C
|
RW
|
|
Count (24-bit, not 2D mode)
|
|
|
RW
|
|
Width (16-bit, 2D mode)
|
$DF0E
|
$F0:1F0E
|
RW
|
|
Height (16-bit, 2D mode)
|
$DF10
|
$F0:1F10
|
RW
|
|
Source stride (16-bit, 2D mode)
|
$DF12
|
$F0:1F12
|
RW
|
|
Destination stride (16-bit, 2D mode)
|
IO Page 1
$C000: Text Mode Font Sets
MMU
|
Flat
|
R/W
|
Name
|
Description
|
$C000 - $C7FF
|
$F0:2000 - $F0:27FF
|
|
|
Font set 0 (256 × 8-byte chars)
|
$C800 - $CFFF
|
$F0:2800 - $F0:2FFF
|
|
|
Font set 1 (256 × 8-byte chars)
|
Characters are 8×8 pixels. Each byte is an 8-pixel row of bits, with MSB at the left. 8 rows top to bottom.
$D000: Graphics CLUTs
MMU
|
Flat
|
R/W
|
Name
|
Description
|
$D000 - $D3FF
|
$F0:3000 - $F0:33FF
|
|
|
Graphics CLUT 0 (256 × BGRx)
|
$D400 - $D7FF
|
$F0:3400 - $F0:37FF
|
|
|
Graphics CLUT 1 (256 × BGRx)
|
$D800 - $DBFF
|
$F0:3800 - $F0:3BFF
|
|
|
Graphics CLUT 2 (256 × BGRx)
|
$DC00 - $DFFF
|
$F0:3C00 - $F0:3FFF
|
|
|
Graphics CLUT 3 (256 × BGRx)
|
IO Page 2
$C000: Text Screen Character Matrix
MMU
|
Flat
|
R/W
|
Name
|
Description
|
$C000 - $DFFF
|
$F0:4000 - $F0:5FFF
|
RW
|
|
Text screen character matrix
|
1 byte per character, 40 or 80 characters per row, 25|30|50|60 rows in the matrix. Each character byte refers to an entry in the currently selected font set.
80×60 characters uses 4800 ($12C0) bytes, which is only a bit more than half the 8k allocation.
IO Page 3
$C000: Text Screen Color Matrix
MMU
|
Flat
|
R/W
|
Name
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
$C000 - $DFFF
|
$F0:6000 - $F0:7FFF
|
RW
|
|
Text screen color matrix
|
|
|
|
|
FG color (0-15)
|
BG color (0-15)
|
Exact same layout as the character matrix. One color matrix byte associates to one character matrix byte at the same offset.