RX-78 Analysis Document

RX-78 Analysis Document




Basic specifications
CPU : SHARP LH0080A (Z-80A) about 4.1MHz
ROM : 8KB
RAM : 15KB (main) + 15KB (VRAM)
Screen : 192x184
Sound : 3 voices + 1 noise (SN76489-compatible)
Custom chips : IX0361PA, IX0362PA, IX0363PA, IX0399PA(8KB ROM ?)

The CPU clock uses 28636.36KHz divided by 7?
The sound clock uses 28636.36KHz divided by 8?

The interrupt mode uses IM1.
The HSYNC interrupt is probably used to drive the timer?





Memory map
$0000-$1fff : IPL
$2000-$5fff : Cartridge ROM
$6000-$afff : Expansion RAM
$b000-$ebff : RAM
$eec0-$ffff : VRAM

$f1(r), $f2(w) determines the VRAM bank being accessed.
Possible to access multiple banks at the same time?
At screen painting time, the left edge of the dot becomes the LSB.

Expansion RAM can be mapped to the $6000-$afff region.
However, it is filled from the upper address.



I/O register map
AddressRead/WriteContents
$23R 
$50W 
$52W 
$d0W 
$e0R/W 
$e1R 
$e2R/W Printer status (R)
bit0 : Busy

Printer control (W)
bit7 : Strobe

$e3W Printer data
$efW 
$f0R Data recorder (R/W)
bit0 : Signal input/output
$f1W VRAM read plane
Specified using 1-6
$f2W VRAM write plane
bit0 : Plane #1
bit1 : Plane #2
bit2 : Plane #3
bit3 : Plane #4
bit4 : Plane #5
bit5 : Plane #6

It is possible to access multiple banks at the same time by setting multiple bits

$f3W 
$f4R/W

Keyboard status(R)
Keyboard column(W)

$f5W VRAM plane #1 palette
bit0, 3 : red, red brightness
bit1, 4 : green, green brightness
bit2, 5 : blue, blue brightness
$f6W VRAM plane #2 palette
bit0, 3 : red, red brightness
bit1, 4 : green, green brightness
bit2, 5 : blue, blue brightness
$f7W VRAM plane #3 palette
bit0, 3 : red, red brightness
bit1, 4 : green, green brightness
bit2, 5 : blue, blue brightness
$f8W VRAM plane #4 palette
bit0, 3 : red, red brightness
bit1, 4 : green, green brightness
bit2, 5 : blue, blue brightness
$f9W VRAM plane #5 palette
bit0, 3 : red, red brightness
bit1, 4 : green, green brightness
bit2, 5 : blue, blue brightness
$faW VRAM plane #6 palette
bit0, 3 : red, red brightness
bit1, 4 : green, green brightness
bit2, 5 : blue, blue brightness
$fbW

Colour mask

bit0 : blue
bit1 : red
bit2 : green

When a displayed colour includes a colour mask element, other colour elements are removed.
In other words, if (display colour & colour mask) display colour &= colour mask;

$fcW Background colour
bit0, 3 : red, red brightness
bit1, 4 : green, green brightness
bit2, 5 : blue, blue brightness
$fdW 
$feW VRAM plane display mask
bit0 : 1 displays plane #1
bit1 : 1 displays plane #2
bit2 : 1 displays plane #3
bit3 : 1 displays plane #4
bit4 : 1 displays plane #5
bit5 : 1 displays plane #6
$ffW Sound register
SN76489-compatible, clock is 3.579545MHz
Key map
Column b0b1b2b3b4b5b6b7
1 01234567
2 89:;,-./
3 @ABCDEFG
4 HIJKLMNO
5 PQRSTUVW
6 XYZ[\]↑↓←→
7 SPACECLR/HOME INST/DEL
8    STOP RETURN SFTLOCK
9 CTRL SHIFT     
10 J1-UJ1-LUJ1-LJ1-B1J1-UJ1-LUJ1-LJ1-B1
11 J1-LDJ1-RU  J1-LDJ1-RU  
12 J1-DJ1-RDJ1-RJ1-B2J1-DJ1-RDJ1-RJ1-B2
13 J2-UJ2-LUJ2-LJ2-B1J2-UJ2-LUJ2-LJ2-B1
14 J2-LDJ2-RU  J2-LDJ2-RU  
15 J2-DJ2-RDJ2-RJ2-B2J2-DJ2-RDJ2-RJ2-B2

When a key (or joystick for 10-15) is pressed, the corresponding bit becomes 1.
When column is set to $30, an OR of all the columns is obtained.




The information on this page was personally researched by Takeda.
The accuracy of the contents is not guaranteed.