![]() |
Bespoke Software Projects Done Personally for Clients Via My Own Business 1976-1991 Ledgers & Payroll System for a commercial vehicle dealer Payroll System: for a toy manufacturer Sales Order Analysis System Equipment Register Program [Sept88+] News Wholesalers Retail Stock Monitoring System [May-Sep 1988] X25 Network Management Suite [1989-90] |
In March 1978, Sparshatts of Kent Ltd needed to automate their accounting. They asked me to help. Being a relatively new and small Mercedes-Benz commercial vehicle dealer, they had a limited budget. Since this was just before microcomputers appeared on the market, the only options were either a Burroughs-type accounting machine or a large programmable calculator. The latter was chosen because it could be soft-programmed thus allowing full functional flexibility. The configuration below was supplied and implemented completely by me through my own business.

The PC2600 had little memory and no disk operating system. Sharp and its third party providers could offer only trivial software with totally inadequate functionality for the purpose in hand, although the hardware had all functionality and performance necessary to do the job. Between March 1978 and April 1982, I wrote all the system software and the following application software:
In 1980, microcomputers started to appear on the market among which was the ITT 2020 (or 'European Apple II'). At the end of March 1980, I bought two ITT 2020 microcomputers, one with a Texas Instruments 825 RO printer and one with a Centronics printer.
A A Gaffney & Sons Ltd, a toy manufacturer of Tiptree, Essex, wished to automate their payroll. They had a tradition of paying their employees by cheque which the local shops within the village would gladly take and give change in cash. I selected the following configuration for them on which to run their new payroll system:

Not having had my own ITT 2020 any length of time, I had not yet developed any software for it. I therefore bought-in a suitable payroll package which I adapted to print employee pay directly onto pre-printed continuous stationery cheques. These I designed myself and had them printed by a specialist printer. Over the next few years, I updated their payroll fixed data.
The management of Jaguar Communications plc wanted clear tabular and graphical representations of their sales orders for the current month, financial year to date and the trailing 12-month period. The software was to run on a Novell-based network of IBM compatible PCs. The required sales order information was available as a printed report which listed the details of each individual sales order for the period concerned. The report was a normal output from the accounting package they used called MicroFACTS.
I wrote a program module to extract the values of the required sales orders from a text file image of the MicroFACTS printed sales orders report. This required scanning the text for strings such as column headings or constant annotations from which each necessary value-field could be located and captured. The program then accumulated these values in a 3-dimensional array file of which the three axes were: product type, market sector, and sales rep. I then wrote other program modules which extracted the accumulated sales order values from the array file and displayed - in tabular and percentage bar-chart form - the order revenue, number of units ordered and profit for:
An example of the kinds of displays produced is shown below. A printed analytical management report combining all the above was also provided.

Jaguar Communications plc needed an Equipment Register to create a permanent record for each equipment unit received into stock, allowing it to be continually updated to reflect the unit's status throughout its entire operational life with details of its sale, installation, maintenance, repairs, enhancements and modifications during its warranty period and beyond. The system also had to provide criteria-selectable management reports and was to run on a Novell-based network of IBM compatible PCs to replace a dBase III system which was far too slow and cumbersome to handle this mission-critical function. I designed and implemented this system as outlined below:

The following management reports were provided and can be set to be restricted to a specified Model Code, Customer, Site, Date-of-origin range, in-house location, allocation, condition, and reason received back (if applicable).
The client (News Technology Ltd) had produced a stock management system for a large news wholesaler on an HP3000 minicomputer and wanted to automate the gathering, processing and reporting of stock information directly from the news retailers served by their client - the wholesaler. The client asked me to produce IBM PC & Psion Organiser software to achieve this objective within the configuration shown below:

After learning the Psion Organiser's programming language, OPL, I wrote programs to allow a news agent or rep to: view a file of all the magazine titles carried by the wholesaler, enter and amend the Week Number and the end-of-day unsold quantity for each magazine flagged for stock monitoring, and transmit these quantities via a modem when called each night by the wholesaler's remote PC. I then wrote and implemented PC software in QuickBASIC to do the following:
The client required a means of viewing (in real-time) the variation with time of day of the data traffic on the four trunks connected to any 4-way X25 data switch in a large private network. A permanent record of this information had to be provided so that it could be analysed later off-line. I wrote the software in Microsoft Quick BASIC.
My design made full use of the multi-tasking Finite State Machine programming model with which I had become familiar from my work in the public switching industry. The software was implemented on an IBM PS/2 with an X25 expansion card. Software drivers were provided with the card. The essence of the design is shown below:

The network address, location, device-type and the speeds of the attached trunks are entered into the Device Data File - and thereafter kept up to date - via the Device Data Editing Window. The Test Call Sequencer may then be activated to make X25 test calls automatically to each device on the network in turn to align each device's on-board clock to the PS/2's system time, test for alarm conditions and gather traffic data.
If the Device Data Editing Window is open while the test call sequencer is running, then as each test call is made, the device currently being tested is indicated. If an alarm condition occurs during that test call, a warning 'siren' sounds and the device's details become highlighted in red. Also an alarm window appears showing the date, time and nature of that plus the previous 11 alarm events relating to that device. Through the Device Data Editing Window, the user can then 'acknowledge' the alarm whereupon the 'siren' stops and the highlighting turns to yellow. The user may then, when appropriate, clear the alarm.
When the Device Data Editing Window is not in view, it is replaced by two other windows: a Site Status Window which shows the name of each site and whether or not all the equipment there is currently alarm-free; and a Test Call Phase Window which indicates the current phase of the current test call. The possible phases are: prompting: the device to be called, connecting an X25 call to it, testing the device for alarms or traffic, and clearing the call.
The Test Call Sequencer makes test calls to each network device on a continuous cycle to gather information from which it calculates and stores in the Traffic Data File the mean and peak percentages of trunk loading and logical X25 channel occupancy for each of the 1440 1-minute sampling periods in each 24-hour day. Comprehensive VGA graphics-based display and print functions allow the user to view this data in a variety of clear and concise ways.
The mean/peak percentage traffic loading on each of a data switch's 4 trunks for each of 288 5-minute sampling periods throughout a 24 hour day is displayed in a different colour. The part of the day so far gone is shown on a grey background with the plots in bright colour. The remainder has a black background and shows in dull colour the plots for that part of 'yesterday'. Once the graph is displayed, it is automatically updated in real-time as new test calls are being made. This illustration shows the percentage occupancy of a trunk throughout a 24 hour period with the 11am and 3pm 'busy hours' clearly visible.
Another form of display is the adjacent bar-chart showing the 'Top 10' most heavily loaded trunks on the network and gives the network manager warning as to which links of his network may need extra capacity installed. There are both screen & printed versions of these reports. A 'system heartbeat' - a heart symbol which alternates bright and dull red every ½ second - indicates when the graphical display is being updated in real-time from live input data. Annotated 'LEDs' are provided to show X21 signal states on the trunks connected to the device and also to show X25 call phases.
I wrote a special dual-port serial I/O function to allow COM1 and COM2 to be used concurrently - one by the Test Call Sequencer to make its on-going test calls to all devices on the network, and the other by a specially-written independent terminal window which allows more detailed tests to be made on any individual device and the capture of the whole session automatically in a capture file for later study.