|A computer known as the first laptop, but
definitely one of the first portable microcomputers which could
be used from rechargeable batteries. Its story begins in early
1980s. In 1980, inventor received a
patent on different forms of portable computers. The system
has been announced in 1981, having release in 1982 and 1983.
The computer has everything a typical computer contains: There is a full QWERTY mechanical keyboard, a non-backlit liquid crystal display (4x20 text or 120x32), small dot-matrix printer, in many versions even a microcassette recorder. Everything was powered from the batteries allowing to work around 50 hours with in-ROM BASIC using 16kB of accessible RAM (if no extensions were used). The computer was not much larger than A4 book, and because it was one of first such machines it is sometimes known as the first notebook computer.
The CPU were two Hitachi 6301 chips clocked at
0.614MHz. The master processor controlled the keyboard, memory and
display, while slave one driven speaker, printer and cassette
drive. The CPUs exchanged data with 38400bps serial bus. These
strange steps had to be taken (Hitachi 6301 are like Motorola
6809, closer to microcontrollers than microprocessors) to
conserve energy and make the system run from battery. Additional
logic has been made using CMOS chips.
|Year of unit||1985|
|Year of introduction||1981/2|
|End of production||1986?|
|CPU||2x Hitachi 6309|
|Display modes:||Text: 4x20
Built-in LCD screen only.
Internal microcassette recorder
External tape recorder
Male DC jack at the computer:
Read further about details!
Barcode scanner in
|Possible upgrades:||Battery replacement, memory by side expansion|
|Software accessibility:||Possible (dedicated sites)|
The addition has a multi-channel digital input, serial output
and additional serial pass-through to connect printer.
|Contents:||Power, battery||Starting||Typical problems||Loading programs||Pinouts||Links|
The power supply is UNREGULATED 6V DC at 600mA with
specific voltage drop when under load. According to
page, it has 9.3V when no load and 7.2V when 150mA load.
Because the charging battery makes a natural load which makes this
voltage smaller (around 150mA is a charging current) it is important to
use such voltage.
The computer should not be used without battery, as the transformer unit will not be loaded enough to make the supply voltage lower - then, the computer may not regulate voltages properly.
However, it is possible to run it without battery for testing purposes if you use a regulated power unit scaled at ca. 7V. It must be high enough not to generate "POWER ABNORMAL" signal (this shuts the computer down permanently to prevent deep battery discharge, present if battery voltage is too low) and not too high to make regualtors work right.
More about battery
The battery consists of 4 Sub-C size, 1.2V 110mAh NiCd cells connected in series. Like these cells used in battery-powered drilling machines.
The common trend in these computers is to replace the old NiCd batteries with modern cells, like 4 AA cells (for example NiMH). This is not a good idea. First, let's be honest, this computer has no intelligent charging circuitry at all, there is just a current limitting resistor acting as a voltage drop if batteries would take a really big current (charging current should be about 150mA). Nothing more. Look at the schematic presented by the end of this section to see how it looks like (it's from Technical Reference Manual). AC+ and AC- are + and - of AC adapter, that's how they mark it in technical manual.
So in result, the battery is not only charged with inappropriate current, but also for uncontrolled time which dramatically shortens its lifespan.
I think, but I nevet tried it, that it should be made using a battery set with own charging circuit, like in one of these ready modules available in DIY stores. This way the circuit limits the current and the battery doesn't overcharge.
The computer will not operate if the battery is shorted, wat sometimes happens. So if the computer during printing shows "CHARGE BATTERY!" and resets, it means that the batteries need replacing.
The computer needs some time plugged to power adapter to
charge its battery. It was not designed to operate from power supply,
and user must remember to disconnect power supply after 8 hours starting
from the empty batteries, or the power unit will overcharge the
For a short time for testing, a voltage around 7-9V may be used, if it won't blow the internal fuse.
After powering up, the system beeps and displays (if not, try pressing the Reset button)
In German units there is a paragraph sign (§) instead of
@. If it doesn't go to BASIC or displays garbage, counts more than 2
items or does similar strange things, press CTRL-@ (or CTRL-§ in German
units) to set date, time and clear RAM. You may do it after pressing
Reset or Menu, trying a few times to make the computer catch it in the
right moment (which may be very short).
If it beeps, but doesn't display anything try to tune contrast with a "VIEW ANGLE" knob.
According to manual (Page 34), DIP switches change character set. The last one selects between Disk and ROM BASIC.
The printer is a true precision mechanics device. The single motor operates head, ink ribbon and paper transmission. First, the motor spins driving cylinder with cam, this cam moves the head back and forth making a "machine gun" noise. Simultaneously, the same motor spins the gear for moving the ink ribbon. Every head move back and forth, the pulling rod advances the paper. The result is printed on 57mm-wide paper tape.
If it doesn't move its head well, it means that you need to open the computer (remember not to tear the expansion ribbon cable from the connector - open the casing in few centimeters, disconnect ribbon and proceed, pay attention to bottom keyboard ribbons too), then remove the silver shiny cover from printer and lubricate the leading cylinder and driving rods. Don't use WD40 for it. WARNING: The head's ribbon cable breaks very easily, so don't bend it too much.
For the future: The ribbon cartridge is called ERC-09.
While the printer was a precision mechanics, this is even more complex. The main motor has magnetic tachogenerator to coordinate speed and counter. Additional motor moves the head to tape using the screw thread mechanism. This way, the recorder can operate back and forth by control only with software.
A typical fault is fatigue of a belt which transfers rotation from motor to the mechanism. This is a piece of precise mechanical part, so don't use excessive force here. In my unit, unfortunately I had to re-work one bolt's head to unscrew it.
First of all, the belt: 50mm in diameter, 1x1 or 0.8x0.8mm square.
|How to replace the belt:
1. Remove two screws and the rear/bottom cover of tape recorder.
2. Remove bolts holding the circuit board in place. The long bolt at the upper part near motor has a distance tube under the board, don't loose it, don't install distance tubes in places of another tubes! I use labelled boxes to temporarily store these bolts and tubes during repair in removing order.
3. Carefully move the board downwards (seeing the recorder motor upwards, connector to the right) to see the motor's part. Be careful of the wires! Remove two bolts holding the speed detector in place and remove it taking care about 2 distance tubes under (the proper service name for this round piece is "FG yoke assembly"). Now you can remove belt from the motor.
4. Having the speed detector hanging on the cables, you can move the board to the sides enough to remove bolts locking the aluminum piece holding the big, brass wheel and smaller plastic wheel (using flat spring) in place. One bolt, then PCB goes to the other side and the second one. Take a photo or note about wires soldered to the board, which one goes where. You may need it when one breaks.
5. Remove this aluminium part (service name: Clinched
cassette support plate) holding brass wheel (Pressure-fitted
cassette wheel), taking care not to loose bolts and wheels.
6. Remove the old belt from wheels. Replace the belt, Check does it run smoothly. The belt should go from the motor parallel to the connector side, then to the brass wheel, then it should go back to the motor, touching the smaller wheel (Pulley) - the small wheel should be outside of the belt's loop.
7. Replace the aluminum part, fasten the bolts.
8. Clean the rotating magnet and the sensor using soft brush.
9. Replace the speed sensor. Restore distance tubes and bolts. Check the cylindrical magnet by rotating the brass wheel and observing does the motor shaft run inside speed sensor - it should not scratch the detector during spinning and it should spin without problems. If it gets stuck - move the sensor a bit to center it. Repeat until it works (requires more time if bigger force was used to remove bolts, be patient here).
10. If any wires fell off the board during speed sensor alignment, now its time to resolder them.
11. Replace PCB and its bolts with distance. Two smaller distances may require to be glued to the PCB (use very small amount of a weak glue - this is temporary) to be installable easier.
12. Close the casing.
BASIC programs are usually distributed by text. It can
be fed to the computer using serial port by rs232 cable. Programs in
machine code are very rare and sometimes distributed on the Internet
with BASIC loaders.
HXTape is a tool to make tapes waves under Linux, I haven't tested it and it seems that it requires... PHP. Generally tapes, because they are micro-cassettes, are recorded in a computer as it's harder and harder to get decks (usually portable) for them.
Driving the cartridge-type tape recorder is purely automatic, program-based. There is a built-in "tape recorder mode", press Ctrl-PF1 to get to it. The screen will show tape counter position. Then:
PF1 - Fast forward
PF2 - Slow forward
PF3 - Stop
PF4 - Rewind
PF5 - Exit this mode.
Like in a sticker under PF keys. You can also use WIND command to rewind tape.
The saving is made by
and it saves instantly. If the floppy disk is conencted,
it is saved on floppy, then microcassette, and if it's not found,
external cassette output. The name mustnot contain characters: . / , ( )
- the dot may happen once like extension separator.
Just LOAD loads the first BASIC program from microcassette, or ROM cartridge if present. It is also possible to look for program:
To load from other device, you can make the "device;
program name" notation, while devices are CAS0 (microcassette), CAS1
(external tape), PAC0 (ROM cartridge), A, B, C, D (disk drives).
To print something on the printer, use LPRINT command.
Loading from PC's serial port
Loading from RS232 port is useful when transmitting programs from the PC.
Here is the way to do it the most simple way, but it's a bit slow. There are other methods, like using additional flow control wires (a full cable) or with internal loops in PC side of serial port. Making the cable. 3 wires: GND, Tx and Rx. You can use 5-pin DIN plug, only 3 pins are used. Warning: Pinout belo shows connectors at the computers, so you need a male DIN8 (or even DIN5) plug and female 9-pin plug for serial port. The pins should correspond to these, i.e. pin marked as 1 on the male DIN plug should not fit to pin 3 in this picture. If in doubt (because Epson manuals show pin numbers both in plugs and in connectors in different places) - check in which pin the GND is.
|Connectors at the computers!|
|Epson RS232C||PC COM port|
In the PC, configure the terminal program (e.g. Minicom or WIndows' HyperTerminal) to the proper serial port, baud rate, parity and stop bits. Do not use any handshaking. Now the most important parts: Loading. The command for loading is:
Filling the BLPSC:
B is a number meaning speed:
0 - 110bps, 1 - 150bps, 2 - 300bps, 3 - 600bps, 4 - 1200bps, 5 - 2400bps, 6 - 4800bps. A very safe, but slow option is 300bps.
L is number of bits, 7 or 8.
P is parity: N (none), E (Even) or O (Odd)
S is stop bits, 1 or 2.
C determines state of CtS/RtS, DSR and CD lines. For example is "B" ignoring CtS and CD, using DSR, RtS (high level), F ignores everything, only notifies the system by high level on RtS.
will load 300bps, 8-bits, no parity, 1 stop bit,
ignoring data lines.
After confirming the command, order PC terminal program to send text file with BASIC code. After the file is sent, press the BREAK on the computer and LIST newly loaded program. You can use it or save to cassette.
The exact tables of characters in BLPSC is shown in this archived page.
|Barcode reader port:
1 - GND
WARNING: According to the schematic, POUT is output while PIN is input. According to the Technical Reference manual (Section 2.2.2), it's opposite. In cable connecting two HX-20s they're crossed.
- Epson's support, guides and manuals.
http://web.archive.org/web/20160313142222/http://classway.com/hx20/index.html - HX-20 Enthusiast's page.
http://oldcomputers.net/hx-20.html - In collection, description.
https://fjkraan.home.xs4all.nl/comp/hx20/ - In collection, some handy tips for running HX-20, how to dump ROMs etc.
http://electrickery.xs4all.nl/comp/hx20/doc/index.html - PDF documentation of Epson HX-20.
http://www.ganjatron.net/retrocomputing/epson-hx20/index.html - Description and advertisements.
http://web.archive.org/web/20090805173203/http://www.geocities.com/abcmcfarren/hx20/hx20.htm - programs in BASIC as well as interface cable schematic, plus information how to load/save to RS232 port using terminal. Additionally memory map, character table and system ROM partitioning, opcode list.
http://web.archive.org/web/20140228044441/http://www.wickensonline.co.uk/hx-20/index.html - Programs and information
http://hx20.jatman.uk/ - More information on a HX-20 in a specific application.
http://www.atarimagazines.com/creative/v9n3/101_Epson_HX20_computer.php - Review from Creative Computing, March 1983.
http://bahamas.gestalter.at/hx20/ - Some photos of RAM-upgraded units, Software for download.
http://www.zock.com/8-Bit/D_HX20.HTML - German description with emulator screenshots.
http://frigolit.net/projects/hxemu - HX-20 emulator project. At least works (builds) on Linux.
http://takeda-toshiya.my.coocan.jp/ - eHC-20 emulator. To download visit eHC-20 page and "Common source code archive", then get binaries or sources
http://web.archive.org/web/20150524014207/http://www.schwaben.de/home/glassix/HX20schnitt.htm - Pinouts.
http://web.archive.org/web/20150323081245/http://efb-1.de/c_hx20.htm - Photos e.g. of display output on monitor.