HP 1000 Pascal

I worked at KSLA Shell Amsterdam labs 1980-1983. One of my projects was to develop a realtime system in Pascal.

Goal of the project was to emulate a TDC 2000 device, with only the public information supplied by Honeywell, in hardware and software.
The Honeywell TDC 2000/3000 is an advanced distributed control system. TDC 2000 was introduced in 1975.
To do this special hardware was developed (a 6809 micropocessor system) as a device driver in an HP1000 minicomputer to talk to the TDC2000 bus.
The HP1000 itself was running its own real time operating system RTE. The application I wrote, in HP1000 Pascal, was responsible for communication over the TDC2000 bus via this device driver, being a node in the TDC2000 system.

HP1000 Pascal was quite a good implementation of Standard Pascal. Via systems calls one could communicate with device drivers. The whole system, operating systen and application, was in the end burned into EPROMs as disk  (many 2716s!) so the machine could run diskless in harsh environments.

The program was a realtime application. And Shell wanted it to be in a higher level language and Pascal was en voque in the KSLA lab these days. I learned and discussed a lot with fellow engineers there about Pascal (Concurrent Pascal, Standard Pascal, Pascal Plus etc).

As a realtime applciation the standard layout was chosen: an init part and an endless main loop servicing the devices with commands over the bus and transmitting results over the bus with answers on queries.
I do remember the HP1000 was not the fastest machine. Since the response had to be realtime, I encountered several performance problems during the loop of the 1 second dutycycle available. One was a calculation of a real variable, a sinus value. Floating point was done in software, so that was a bottleneck. I solved that by at the init part calculating and storing in a table the sinus values in the resolution required and doing a table lookup in the main loop. It all worked out very well.

xlg_hp_barcode_0