The computer language “immediate C”

The programming language “immediate C” or iC is a declarative, event-driven extension of the procedural language C – useful for machine control, robotics and for dealing with events generated in a GUI.

iC utilizes the syntax of C to give meaning to statements that have no semantic support in C. In addition to standard variables, which are modified by the flow of instructions, iC provides so-called ‘immediate‘ variables, whose values are updated, whenever a change of input calls for an immediate change in output. An efficient Data Flow technique implements this strategy.

iC provides programmers with built-in operators, whose function is closely modelled on integrated circuits. The name iC is a reminder of this fact. Logical AND, OR, EXCLUSIVE-OR and NOT as well as D flip-flops, SR flip-flops, shift registers and many others are implemented in such a way, that their use in iC follows the same design rules, which apply to their hardware counterparts. These rules have led to a well-developed hardware technology, whose effectiveness is demonstrated by the success of today’s complex computer hardware. Particularly the concept of clocked functions plays an important role in the language iC. It gives the same protection against timing races in iC programs, as it provides for hardware IC designs. But iC is not a hardware description language nor a simulation language – it provides the functionality and some of the speed of field-programmable gate arrays with a language, which is pre-compiled into straight C code, which is portable and produces efficient machine code.

Continue reading “The computer language “immediate C””

Real Time Operating System “OSCAR”

In 1969 I worked at an industrial research laboratory designing factory automation systems using mainly TTL IC hardware. I was interested in doing some of this work in software using the newly emerging mini-computers. To come up to speed I studied at night for a Masters degree in computer science at the University of NSW (UNSW) in Sydney, Australia.

As part of this course, I designed and programmed a “Real-Time Operating System” for programming Real-Time Control Systems. It was called a Monitor at the time. The first version of this program was implemented on a PDP-8 minicomputer in the Electrical Engineering department of the university. Afterwards, I ported the software to a Data General NOVA mini-computer for my then employer (which was not a good idea I discovered later). I gave the system the acronym OSCAR for Operating System CSR Automation Research.

For the 50th anniversary, I obtained a PDP-8/I kit from Oscar Vermeulen in Holland, which works beautifully. The kit has an exact facsimile of a PDP-8/I front panel with working switches and lights. In the back is a Raspberry Pi running the SIMH PDP-8 emulator software with all major PDP-8 system programs on a simulated RK05 disc. I was able to reconstitute all the OSCAR sources from printouts I have and assemble and run it all, as I did 50 years ago (see PDP-8 sources).

Continue reading “Real Time Operating System “OSCAR””