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, UNIX offerings from Convergent Technology and others) 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 chemist 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.
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.
Base | End | |
---|---|---|
0000h | 0FBDh | Operating System |
1000h | 1865h | Overlay U: System Utilities |
1C00h | Overlay O: Interface Options | |
1E95h | M18 (Molecular 18) | |
1D0Dh | SING (Singer System 10) | |
1F6Eh | CT (Convergent Technology) (uses 84 bytes User Line workspace at 1A00h) | |
2000h | 2795h | Task I: Initial Task & Telecomms Controller |
2800h | 30ABh | FLOP : SDA Floppy Disc Transfer (Sales Data Analysis records for Intercontinental Medical Statistics) |
3200h | 3620h | Task R: Reporter |
3800h | 3BCAh | EOE : Electronic Order Entry mainframe interface |
4000h | 448Eh | Task V: VDU Display |
4600h | 4DE0h | Overlay K: Telecomms Utilities |
5000h | Mainframe interface overlays | |
5600h | 5800h | Customer Message save area (512 bytes) |
5800h | Option Overlays: | |
59A7h | L : List Spooled Transactions | |
5A4Eh | P : Passwords Print | |
5C00h | 5EACh | Overlay T: A2 and A3 Protocol Handler |
6000h | 635Fh | Overlay A: 01 and 02 Protocol Handler |
6800h | 6E0Fh | Overlay H: V1 Protocol Handler |
7000h | 7520h | Overlay G: R1 Protocol Handler |
7800h | 7C00h | Telecomms Input Buffer (1K) |
7C00h | 7E00h | Text Area for current job (512 bytes) |
7E00h | C000h | Data Buffers (256*66 bytes) |
B800h | BE72h | Task E: Mainframe Emulator (overlays top of Data Buffers) |
Base | End | |
---|---|---|
E000h | Overlay X: Operating System Utilities |
SET.ASM loads text into the Programmable Function Keys.
LAY.ASM converts the .HEX assembler output file to an executable .OVL file. Whilst the CP/M LOAD command (LOAD.COM) similarly converted the .HEX assembler output file into an executable .COM file, LOAD.COM would only work when the code origin was 0100h which was not the case with overlays.
TIME.ASM sets the QX10 clock.
ALARM.ASM sets the QX10 alarm.