mirror of
https://github.com/holub/mame
synced 2025-06-30 16:00:01 +03:00
canon_s80.cpp: added hardware info and trojaned internal HD6301 ROM for canonts3 [Guru]
This commit is contained in:
parent
022e70fea6
commit
1f460d4e5b
@ -10,9 +10,142 @@
|
||||
*
|
||||
* known issues:
|
||||
* - memory-map is uncertain
|
||||
* - maincpu clock is guessed
|
||||
* - maincpu clock was only verified for canonts3, but it's probably the same for canons80
|
||||
* - still lacks description of the keyboard inputs
|
||||
* - as well as a "paper" device to plot the output of the dot matrix print head
|
||||
|
||||
*************************************************************************************
|
||||
Canon Typestar 3 Electronic Typewriter, Canon 1989/1990.
|
||||
Hardware info by Guru
|
||||
Last updated: 21st May 2021
|
||||
---------------------------
|
||||
|
||||
This is an electronic typewriter made by Canon.
|
||||
It uses a thermal printing process with ribbon cartridges containing a coil
|
||||
of plastic tape coated with black 'ink' that is fused onto the paper via
|
||||
heat from the thermal print-head.
|
||||
The LCD has an alpha-numeric 15 character display with full editing capability and
|
||||
some other areas that show fixed functions and operation modes.
|
||||
It appears to be functionally identical to the Canon S80 Electronic Typewriter.
|
||||
|
||||
PCB Layout
|
||||
----------
|
||||
|
||||
CANON NH1-0275-04
|
||||
|------------------------------------------|
|
||||
|CN1 CN2 CN6 |
|
||||
| PIEZO VR2 FUSE(3A) DC|
|
||||
| T1719A |
|
||||
| CN3 CN4 M5233 M54523P SW1|
|
||||
| CN5 |
|
||||
| LC3518 |
|
||||
| MB64H192 HD63A01X0P NH4-0268.IC6 VR1|
|
||||
| 6MHz |
|
||||
|------------------------------------------|
|
||||
Notes:
|
||||
CN1 - Head left-travel end-of-stroke switch connector (2 wires)
|
||||
On power-up the head moves left to touch this switch then moves right about 1 inch then stops.
|
||||
CN2 - Multi-pin flat cable for carriage power and data
|
||||
CN3 - Multi-pin flat cable for LCD
|
||||
CN4/CN5 - Multi-pin flat cables for keyboard
|
||||
CN6 - Connector for battery power input (6V via 4x 1.5V D-Cells). There are 3 wires so
|
||||
the CPU can detect when the battery is low and give the user a warning about it.
|
||||
VR1 - Print darkness adjustment pot
|
||||
VR2 - Piezo volume adjustment pot
|
||||
PIEZO - Piezo speaker/beeper
|
||||
LC3518 - Sanyo LC3518BL-15 2kb x8-bit SRAM, equivalent to 6116
|
||||
NH4-0268.IC6 - Toshiba TC53257P 32kb x8-bit mask ROM marked 'NH4-0268' at location IC6
|
||||
The ROM supports all characters in English, German, French, Spanish and Italian languages.
|
||||
HD63A01X0P - Hitachi HD63A01X0P micro-controller with 4kb x8-bit internal mask ROM. Clock input 6MHz.
|
||||
HD63A01 has an on-chip divide-by-4 clock divider so the MCU runs at 1.5MHz internally.
|
||||
MCU is marked with a Canon part number 'NH4-0021' at location IC5.
|
||||
The internal ROM was trojan-dumped using the undocumented test mode.
|
||||
T1719A - Toshiba T1719A. Datasheet not available. This is most likely the keyboard and LCD
|
||||
controller and probably made exclusively for Canon.
|
||||
MB64H192 - Fujitsu MB64H192. Datasheet not available. This is most likely the carriage
|
||||
motor controller and probably made exclusively for Canon.
|
||||
M5233 - Mitsubishi M5233 Dual Comparitor, equivalent to LM4558
|
||||
M54523P - Mitsubishi M54523P 7-Unit 500mA Darlington Transistor Array with clamp diode
|
||||
DC - 6V DC power input 5.5mm barrel jack
|
||||
SW1 - Power on/off switch
|
||||
|
||||
Keyboard Layout
|
||||
---------------
|
||||
|
||||
Keyboard is made by Matsushita
|
||||
Part#: NS5-0594
|
||||
|--------------------------------------------------------------------------------|
|
||||
|MARGIN KB |---------------------| L/MARGIN R/MARGIN|
|
||||
|RELEASE | LCD | VR |
|
||||
| MODE | | TABSET TABCLR |
|
||||
| |---------------------| |
|
||||
| ! @ # $ % Yen & * ( ) _ + <- -> |
|
||||
|+- 1 2 3 4 5 6 7 8 9 0 - = |
|
||||
| 1/4 |
|
||||
| TAB Q W E R T Y U I O P 1/2 BS |
|
||||
| |
|
||||
| : "[ |
|
||||
| LOCK A S D F G H J K L ; '] |
|
||||
| RETURN|
|
||||
| ?3 |
|
||||
| SHIFT Z X C V B N M , . /2 SHIFT |
|
||||
| |
|
||||
| REPEAT SPACE RELOC CODE|
|
||||
|--------------------------------------------------------------------------------|
|
||||
Notes:
|
||||
In the diagram above not all characters are shown due to being special or
|
||||
international characters that are not available on US keyboards, however every
|
||||
character used in the languages included in the ROM are available from this keyboard.
|
||||
|
||||
There are several keys with up to 4 different characters on them. They are
|
||||
accessed by holding the key modifier SHIFT and KB keys.
|
||||
KB is used to select the characters on the left side of a key or the right side
|
||||
of a key. On the LCD fixed lower display, it will show I or II denoting either
|
||||
the left (I) or right (II) side of the key is active. When typing a key the lower
|
||||
character is normally active and the upper character is accessed by holding SHIFT.
|
||||
|
||||
VR2 - LCD brightness adjustment pot
|
||||
|
||||
MODE KEY FUNCTIONS (* = power-on default)
|
||||
---------|---------------------------------------------------
|
||||
* MODE + | +- Sets line spacing mode to 1
|
||||
MODE + | 1 Sets line spacing mode to 1 1/2
|
||||
MODE + | 2 Sets line spacing mode to 2
|
||||
MODE + | 3 Sets typing mode to C (character by character printing like a mechanical typewriter, characters do not appear on the LCD)
|
||||
* MODE + | 4 Sets typing mode to L (line printing, characters show on LCD and can be edited, then printed as one line by pressing RETURN)
|
||||
* MODE + | 5 Sets printing mode to normal print
|
||||
MODE + | 6 Sets printing mode to double-width print
|
||||
MODE + | 7 Sets printing mode to underlined print
|
||||
MODE + | 9 Sets manual carriage return mode
|
||||
* MODE + | 0 Sets automatic carriage return mode
|
||||
MODE + | = Sets justified text mode
|
||||
MODE + | Q Moves the carriage while using the display for manual carriage positioning (for example typing in columns etc)
|
||||
* MODE + | <- Sets typestyle mode to A (COURIER 10)
|
||||
MODE + | -> Sets typestyle mode to B (CUBIC PS)
|
||||
MODE + | Z Sets/cancels shading print mode. A 2nd menu will appear showing 4 shading modes that are selected by pressing numbers 1 - 4
|
||||
---------|---------------------------------------------------
|
||||
|
||||
|
||||
CODE KEY FUNCTIONS
|
||||
---------|---------------------------------------------------
|
||||
CODE + | 1 Sets centering between margins
|
||||
CODE + | 2 Sets centering between tabs
|
||||
CODE + | 4 Executes right margin alignment
|
||||
CODE + | 5 Sets/clears indent position
|
||||
CODE + | 6 Executes decimal tab
|
||||
CODE + | 0 Executes automatic paper feed (i.e. loads paper to a fixed start position automatically)
|
||||
CODE + | TABSET Sets decimal tab
|
||||
CODE + | TAB Confirms decimal tab position
|
||||
CODE + |TAB+TABCLR Clears specific decimal tab
|
||||
CODE + | TABCLR Clears all tabs and decimal tabs
|
||||
CODE + | = Executes permanent hyphen
|
||||
CODE + | B Executes permanent space
|
||||
CODE + | SPACE Executes controlled carriage movement
|
||||
CODE + | RETURN Returns carriage without line feed
|
||||
CODE + | D Prints a demo on the paper
|
||||
---------|---------------------------------------------------
|
||||
|
||||
*************************************************************************************
|
||||
*/
|
||||
|
||||
#include "emu.h"
|
||||
@ -60,7 +193,7 @@ void canons80_state::canons80_map(address_map &map)
|
||||
void canons80_state::canons80(machine_config &config)
|
||||
{
|
||||
// basic machine hardware
|
||||
hd6301x0_cpu_device &maincpu(HD6301X0(config, "maincpu", 5000000)); // hd63a01xop 5 MHz guessed: TODO: check on PCB
|
||||
hd6301x0_cpu_device &maincpu(HD6301X0(config, "maincpu", 6_MHz_XTAL)); // hd63a01xop
|
||||
maincpu.set_addrmap(AS_PROGRAM, &canons80_state::canons80_map);
|
||||
|
||||
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
|
||||
@ -96,15 +229,8 @@ ROM_END
|
||||
|
||||
ROM_START( canonts3 )
|
||||
ROM_REGION( 0x1000, "maincpu", 0 )
|
||||
ROM_LOAD( "hd63a1x0p.bin", 0x0000, 0x1000, NO_DUMP )
|
||||
ROM_FILL( 0xfec, 1, 0xbf )
|
||||
ROM_FILL( 0xfed, 1, 0xf2 )
|
||||
ROM_FILL( 0xff4, 1, 0xbf )
|
||||
ROM_FILL( 0xff5, 1, 0xf5 )
|
||||
ROM_FILL( 0xffa, 1, 0xbf )
|
||||
ROM_FILL( 0xffb, 1, 0xf8 )
|
||||
ROM_FILL( 0xffe, 1, 0xbf )
|
||||
ROM_FILL( 0xfff, 1, 0xfb )
|
||||
// every 0x100 range was read via trojan 7 times, but reads weren't totally consistent. This was reconstructed by taking the most consistent reads for each byte.
|
||||
ROM_LOAD( "nh4-0021.ic5", 0x0000, 0x1000, BAD_DUMP CRC(b859b7d4) SHA1(3a5a80b1b8040fe0b13c0fb52b93f738a06eff16) )
|
||||
|
||||
ROM_REGION( 0x8000, "external", 0 )
|
||||
ROM_LOAD( "nh4-0268.ic6", 0x0000, 0x8000, CRC(bbdd9f74) SHA1(347fa0d37f4df0c175ff1d7feb634f681739804f) )
|
||||
|
Loading…
Reference in New Issue
Block a user