Slaying the Giant

My first job was writing bespoke software in BASIC. The software was a specialised, complex suite of programs for the gaming industry. Nothing to do with producing games, but rather the more boring side of orchestrating hire, cash collections and movements of video games, fruit machines and jukeboxes.

This software ran on MP/M (a multi-user version of CP/M) on 8-bit Z80 processors, as found in many of the early home computers, including the ZX81 and Spectrum.

One of our clients was migrating from a VAX mainframe.  Once a month, the VAX would be tasked with running a complex report. The task had to be run for about 8-10 hours, overnight because the CPU demand made the entire system largely unusable. My task… to port this report program to our Z80 based systems.

My first attempt, 2 hours. But, this was not deemed good enough, despite being about 4 times faster than the VAX.

Slowly, step by step, the time was reduced, finding faster methods to process the data. 1 hour…40 minutes… 30 minutes… and finally, 10 minutes. Almost 60 times faster than a VAX, on hardware that had ¼ of the number crunching ability and a fraction of the memory.