The QX10 Archive

The design of the Epson QX10 micro-computer (shown) predates the now ubiquitous PC hurriedly launched by IBM in August 1981. The QX10 was one of many offerings based on the Zilog Z80 microprocessor with the CP/M "operating system".

The QX10 was described as an all business computer system. It had 192K bytes of volatile RAM memory, 2K CMOS battery-backed memory, 640x400 dot monochrome display and two double-sided double-density 5.25" floppy disk drives providing 320K bytes storage capacity per diskette (there was no industry standard diskette format). A "MultiFonts BASIC" interpreter was provided on diskette, and "PeachText" from Peachtree Software provided state-of-the-art word processing.

The QX10 software presented here "front-ended" some wholesalers' mini-computer systems (including BCL Molecular18, Singer System 10, Convergent Technology and other UNIX offerings) to receive bulk orders electronically via telephone in the pre-internet era. QX10-based systems running this software were in use commercially in the United Kingdom from 1983 to 2001, although I transferred all software development to PCs running MS-DOS in 1989 (due to hardware availability considerations and escalating hard disc capacities).

The QX10 proved to be an excellent choice for the job of picking up customer orders from the telephone system and passing them on to the in-house minicomputer. One was also used from 1985 at the head office of George Staples Ltd. to communicate with early EPOS tills in their shops around Stoke-on-Trent, see the operating manual. These machines just kept on going for year after year of continuous use. I bought a QX10 (with an Epson RX80 dot-matrix printer) for £2,035.50 in August 1984. I didn't succumb to the need to own a PC until March 1987.

The QX10 Source Code

Because the Electronic Order Entry application needed to communicate simultaneously with the in-house minicomputer and with remote customer equipment via the external telephone system, it provided its own multi-tasking environment. Therefore the code did not use any CP/M services and interfaced directly with the QX10 hardware. We kept the software on the left-hand floppy drive A (maintained by standard CP/M utilities) and the order data on the right-hand floppy drive B (using direct sector read/write).

CP/M provided an 8080 assembler (ASM.COM) and a debugging utility (DDT.COM) as standard. As the QX10 used the more advanced Z80 microprocessor, Z80 specific instructions were simply hand-coded into the source code in hexadecimal as required.

QX10 Memory Map

User Bank 0 (Main)

0000h0FBDhOperating System
1000h1865hOverlay U: System Utilities
1C00h Overlay O: Interface Options
 1F6EhCT (uses 84 bytes User Line workspace at 1A00h)
2000h2795hTask I: Initial Task & Telecomms Controller
2800h30ABhFLOP : SDA Floppy Disc Transfer
3200h3620hTask R: Reporter
3800h3BCAhEOE : Electronic Order Entry mainframe interface
4000h448EhTask V: VDU Display
4600h4DE0hOverlay K: Telecomms Utilities
5000h Mainframe interface overlays
5600h5800hCustomer Message save area (512 bytes)
5800h Option Overlays:
 59A7hL : List Spooled Transactions
 5A4EhP : Passwords Print
5C00h5EAChOverlay T: A2 and A3 Protocol Handler
6000h635FhOverlay A: 01 and 02 Protocol Handler
6800h6E0FhOverlay H: V1 Protocol Handler
7000h7520hOverlay G: R1 Protocol Handler
7800h7C00hTelecomms Input Buffer (1K)
7C00h7E00hText Area for current job (512 bytes)
7E00hC000hData Buffers (256*66 bytes)
B800hBE72hTask E: Mainframe Emulator (overlays top of Data Buffers)

Memory Bank Independent Area

E000h Overlay X: Operating System Utilities


SET.ASM loads text into the Programmable Function Keys.

LAY.ASM converts the .HEX assembler output file to .OVL. The CP/M LOAD command (LOAD.COM) converted the .HEX assembler output file into an executable .COM file, but this would only work if the code origin was 0100h which was not the case with overlays.

TIME.ASM sets the QX10 clock.

ALARM.ASM sets the QX10 alarm.

The QX10 Archive