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?
$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.
Key map
Address Read/Write Contents $23 R $50 W $52 W $d0 W $e0 R/W $e1 R $e2 R/W Printer status (R)
bit0 : Busy
Printer control (W)
bit7 : Strobe
$e3 W Printer data
$ef W $f0 R Data recorder (R/W)
bit0 : Signal input/output $f1 W VRAM read plane
Specified using 1-6
$f2 W 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
$f3 W $f4 R/W Keyboard status(R)
Keyboard column(W)
$f5 W VRAM plane #1 palette
bit0, 3 : red, red brightness bit1, 4 : green, green brightness bit2, 5 : blue, blue brightness $f6 W VRAM plane #2 palette
bit0, 3 : red, red brightness bit1, 4 : green, green brightness bit2, 5 : blue, blue brightness $f7 W VRAM plane #3 palette
bit0, 3 : red, red brightness bit1, 4 : green, green brightness bit2, 5 : blue, blue brightness $f8 W VRAM plane #4 palette
bit0, 3 : red, red brightness bit1, 4 : green, green brightness bit2, 5 : blue, blue brightness $f9 W VRAM plane #5 palette
bit0, 3 : red, red brightness bit1, 4 : green, green brightness bit2, 5 : blue, blue brightness $fa W VRAM plane #6 palette
bit0, 3 : red, red brightness bit1, 4 : green, green brightness bit2, 5 : blue, blue brightness $fb W 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;
$fc W Background colour
bit0, 3 : red, red brightness bit1, 4 : green, green brightness bit2, 5 : blue, blue brightness $fd W $fe W 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 $ff W Sound register
SN76489-compatible, clock is 3.579545MHz
Column b0 b1 b2 b3 b4 b5 b6 b7 1 0 1 2 3 4 5 6 7 2 8 9 : ; , - . / 3 @ A B C D E F G 4 H I J K L M N O 5 P Q R S T U V W 6 X Y Z [ \ ] ↑↓ ←→ 7 SPACE ↓ ↑ → ← CLR/HOME INST/DEL 8 STOP RETURN SFTLOCK 9 CTRL SHIFT 10 J1-U J1-LU J1-L J1-B1 J1-U J1-LU J1-L J1-B1 11 J1-LD J1-RU J1-LD J1-RU 12 J1-D J1-RD J1-R J1-B2 J1-D J1-RD J1-R J1-B2 13 J2-U J2-LU J2-L J2-B1 J2-U J2-LU J2-L J2-B1 14 J2-LD J2-RU J2-LD J2-RU 15 J2-D J2-RD J2-R J2-B2 J2-D J2-RD J2-R J2-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.