|Table of Contents
1. What was a Molecular?
What was a molecular?
The Molecular was an 18 bit, dual accumulator, programmable computer, with a typical von Neumann architecture.
The Molecular could address up to 64K words of memory. In later models, memory extensions were made available by the use of bank switching. The top 32K memory could be switched between four banks, giving an overall memory limit of 160K words. There was a complex (for the time) instruction set, a simple interrupt system, multiple input/output ports, and Direct Memory Access or Data Channel for high speed peripherals.
No industry standard operating system was supported, but in later years an standard control program was installed on all machines. The control programs produced, LOS and OS, gave the machine it's multi-user function. Note that the task scheduling was co-operative, pre-emptive multi-tasking was never developed.
There was a gradual progression in the models available, although the basic instruction set didn't change over the years.
The primary use for the Molecular was in commercial systems, particular distribution companies.
(Very confused story this!!!!)
Initially the machines were made by Systemation Ltd (in Hove, nr Brighton), and programmed and serviced by Business Mechanisation Ltd (HQ in London and branch offices around country).
In 1968 the two companies merged and Business Computers Ltd was formed. (BCL now producing kit in Portslade, nr Brighton).
The company was known as Business Computers Ltd in 1972 at least.
They were taken over by Computer World Trade in 1973. (Computer World Trade also owned Computer Field Maintenance.)
Or : BCL Ltd went bust in 1974, and CFM Ltd took over hardware maintenance. Software looked after by Trident. BCL's factory sold to ABS Ltd.
They were taken over again in 1974/75 by ex-Singer senior management. The ex-Singer people, Mike Munelli and Peter Hayes, for example, stayed in charge until the take over by EDP.
Systemation also made the Distributor machine with the new processor set. The same processor set was used in the Mk5 so I presume they made that as well!
At some point they become Business Computers Plc.
SADIE - Sterling and Decimal Invoicing Electronically.
SUSIE - Stock and Sales Invoicing Electronically.
Both these machines were pre-programmed using Mullard combi-logic boards, and used Drum storage.
Four foot high cabinet and two foot square.. One cabinet for the processor and it's front panel. Right hand cabinet for the font loading disk packs. An optional left hand cabinet was available for paper tape punch and reader. The disk unit was especially big to contain the refrigeration unit in the base!
The Mk One had a cycle time of 3.2 microseconds.
The one and only model with water cooled Processor and Core!
Cycle time now variable between 1.2 and 1.6 microseconds.
"I still remember the day we had one at Leicester and forgot to put anti-freeze in and the externally mounted heat-exchanger froze solid!" - Chris Green.
The Mk 3ME and Mk 6ME machines used the Mk II processor, but 'crippled' to emulate the original Mk 1.
Seem to remember seeing one of these. Slightly slimmer - the Mk 2 being the same height, but twice as wide. Front loading disk drive in similarly tall matching cabinet.
Very popular model, much smaller than the mark 3, with the same front panel.
This was the first machine with the new style bus and board size. Not core store, but static RAM chips with battery backup. The Mark V was a huge machine, with one of the biggest front panels I have ever seen. Certainly not a machine that was shy about it's buttons, lights and switches!
The distributor used the same bus and board form as the earlier Mark 5, but the case and styling was radically different. A new very subtle control panel, with the same controls as all the previous models, was hidden under the top cover. This was the first machine with a built in disk drive, the CDC Lark drive.
BCL went on to develop new SCSI based disk controller cards, and microprocessor based 8 port serial cards for an new super Distributor. A 'soft' control panel was also produced.
Systemation worked on combining the three board processor set into a single board to be known as the Amigo. This used programmable gate arrays to reduce the chip count. They also produced a maths co-processor board using the then new Inmos parallel processor. Systemation had there own design for an 8 port serial board.
Bill Gannon, Colin Chapman and others designed the early machines. (As Systemation Ltd in Hove.)
<Who was the elderly guy that worked with Dave ?? in the development office in Milton Keynes?>
Initially the machines were made by BCL themselves from the Brighton office.
At some stage, the machines were made by Allied Business Systems known as ABS.
(ABS used to produce a range of machines called the GRI-99. This was a 16 bit machine, but looks to share a lot with the Molecular.)
Mark 5 and Distributors were made by Systemation Developments Ltd - also in Brighton.
Mark One to Mark Three machines used a D400 front loading cartridge. Capacity of 875KB. The D800 was also available with doubled capacity - some 1.75MB.
The DD800 had the same capacity as the D800, but was top loading, with a fixed disk inside the cabinet. (Much like the popular DD1600 referred to later.)
Not often seen was the D8000 - this was a multi-platter disk pack, equivalent in both software and hardware to ten DD1600 packs bolted together! (I remember visiting a customer in Wembley with one of these drives, and being frightened witless by it!)
Mark Four machines were normally supplied with CDC Hawk drives. (Code name DD1600) Up to four drives could be supported, but two was the usual. The Hawk drive had an internal 3.5M disk and an exchangeable top loading disk pack, also 3.5M. The two platters shared the same spindle, and the two sets of heads moved in synch. (Each sector was 128 x 17 bit words. i.e. 272 bytes per sector. The disk had 12992 sectors, equating to 3.5MB.)
Mark Five machines could also support up to four CDC Lark drives.
The Distributor was generally supplied with an in-built Lark drive. (Code name DD9600) Matching cabinets were available to hold an additional three drives.
"The mark I had all sorts of weird and wonderful devices connected to it
Back to Top
The Molecular word size is 18 bits, and the basic memory is 32K words. The machine was generally known as the Molecular-18 for this reason.
The MSB (Bit 18) was a parity bit, so for all intents and purposes it was a 17 bit machine.
The minimal CPU contained the following registers:
PC - Program counter
MA - Memory address
REGA - Register A
REGB - Register B.
C - Carry Flag
GT - Greater Than Flag
Operation codes 2 through to 26 - Memory reference instructions
These instructions operated on either current page or zero page. All of these instructions could operate indirectly.
Instruction words are organized as follows:
|17|16|15|14|13|12|11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1|
| | | | | | |
|OP-CODE |I |Z | ----- Memory Address ------ |
I = Indirection Flag Z = Zero Page Flag
02 - JUMP Jump to address 15 - ADAC Add to Reg A with carry
03 - JSBR Jump to subroutine 16 - ADBC Add to Reg B with carry
04 - INSZ Increment and skip on zero 17 - SFAC Subtract from Reg A with carry
05 - DESZ Decrement and skip on zero 20 - SFBC Subtract from Reg B with carry
06 - ANDA Logical AND 21 - LDA Load Reg A
07 - IORA Logical OR 22 - LDB Load Reg B
10 - XORA Logical Exclusive OR 23 - CMPA Compare with Reg A
11 - ADA Add to Reg A 24 - CMPB Compare with Reg B
12 - ADB Add to Reg B 25 - STA Store Reg A
13 - SFA Subtract from Reg A 26 - STB Store Reg B
14 - SFB Subtract from Reg B
The CMPA and CMPB and other skip instructions conditionally skip the next instruction in sequence. The INSZ and DESZ instructions were commonly used to increment or decrement a loop counter and skip if done, and it is also used as an general increment instruction, either followed by a no-op or in contexts where it is known that the result will never be zero.
The JSBR instruction stores the return address in relative word zero of the subroutine, with execution starting with relative word one. Subroutine return is done with an indirect JUMP through the return address. Subroutines commonly increment their return addresses to index through inline parameter lists or to perform conditional skips over instructions following the call. This is exactly the same as the PDP8
Operation code 0 - Register Instructions
No memory reference in this group, so they execute in one machine cycle.
Micro-instructions could be combined, but only if from the same group.
|17|16|15|14|13|12|11|10 | 9| 8| 7| 6| 5| 4| 3| 2| 1|
| | | | | | |
|Opcode 0 |Mode |A/B| --- Micro Instruction -- |
| 12| 11|10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
| | | | |
| 0 | 1 |A/B|Clear|Left/ |Shift|Ro'te|With|Dec |Inc |Skip |Skip |
| | |1/0|Carry|Right| | |carry| | |B16=0|B1=0 |
| 0 | 1 |A/B|Clear|One's|Clear|Comp |Skip |Swap |Clear|Comp |Read |
| | |1/0|Reg |Comp |Carry|Carry| | |Sign |Sign |SWREG|
| 0 | 1 |A/B|True |Left/ |Skip |Skip |Skip |Skip|Clear|Clear|One's|
| | |1/0|False|Right|-ve |not 0|carry|GT |GT |Reg |Comp |
Mode 00 - Various instructions
0 NOP No Operation
1 HALT Halt Processor
2 MASK Interrupt disable flags
3 ACKI Acknowledge Interrupt
4 ION Interrupts On
5 IOFF Interrupts Off
6 SION Skip if Interrupts On
7 SIOFF Skip if interrupts Off
10 SMOF Skip if Mains Fail interrupt
11 SMON Skip if mains on interrupt
12 PRTY Skip if partiry interrupt
13 PRCT Skip if memory protect interrupt
14 BNDY Skip if memory boundary interrupt
15 MASW Skip if MA=SR(Switch Reg)
16 CONT Skip if Continuous Interrupt switch on
17 RSTN I/O Reset
Mode 01 - Shift and Rotate (Applies to Reg B also if bit 10 not set)
2400 CLC Clear Carry (Wrong group?)
3001 ALSB Skip if LSB of Reg A set
3002 AMSB Skip if MSB of Reg A set
3004 INCA Increment Reg A
3010 DECA Decrement Reg A
3300 LSA Left Shift Reg A (into carry)
3100 RSA Right shift Reg A
3040 RRA Rotate right Reg A
3260 LRAC Left rotate Reg A with carry
3060 RRAC Right rotate Reg A with carry
Mode 10 - Clear and Complement (Applies to Reg B alsi if bit 10 not set)
5400 CLA Clear Reg A
5200 CPLA Complement Reg A
4100 CLC Clear carry flag
4040 CMPC Complement carry flag
4020 SKIP Skip next instruction
5010 SWPA Swop top and bottom half of Reg A
5004 CLSA Clear sign (Bit 17) of Reg A
5002 CPSA Complement sign bit if Reg A
5001 ESRA Enter Switches in to Reg A
Mode 11 - Alter/Skip
7200 APOS 2 Skip if Reg A +ve (i.e. Bit 17 not set)
7100 A=0 2 Skip if Reg A is zero
7002 CLA - Clear Reg A
7001 CPLA - Complement Reg A (NOT twos complement)
6040 SKNC 2 Skip if carry not set
6010 SNGT 2 Skip if not greater than set
6004 CLGT - Clear greater than flag
7600 ANEG 1 Skip if Reg A is -ve (i.e.Bit 17 not set)
7500 AN0 1 Skip if Reg A is not zero
6440 SK=C 1 Skip if carry flag set
6410 S=GT 1 Skip if greater than flag set
Instructions in the same group may not be combined.
Operation code 1 - Input / Output instructions
| 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
| | | |
|A/B | Function | -- Mode -- | ------- Device Address ------- |
|1/0 | 0 | 0 | |Device Reg | |
| |No Operation | |1, 2 or 3 | |
| | 0 | 1 | |Device Reg | |
| |Set Busy / | |1, 2, or 3 | |
| |Clear Done | | | |
| | 1 | 0 | |Device Reg | |
| |Clear Busy/ | |1, 2, or 3 | |
| |Clear Done | | | |
| | 1 | 1 |Read/|Device Reg | Read or Write transfer to device |
| |Input/Output |Write|1, 2, or 3 | register. Action depends on the |
| |Pulse | | | actual device |
| | 0 | 0 | 1 | 1 | 1 | |
| |Skip if Busy | Skip Mode | No data transfer during |
| | 0 | 1 | 1 | 1 | 1 | skip mode instructions. |
| |Skip not Busy| Skip Mode | |
| | 1 | 0 | 1 | 1 | 1 | |
| |Skip if Done | Skip Mode | |
| | 1 | 1 | 1 | 1 | 1 | |
| |Skip not Done| Skip Mode | |
Disk drives were assigned device codes from 70 to 77. Terminals and Printers were assigned device codes from 47 up to 67.
Although a console as such wasn't needed, a terminal attached to device code 47 was necessary
Each attached device, in fact the device driver card, had up to three registers. The actual function of the registers depended on the attached device.
Processor interrupts could come from the following sources
Mains Power Failure
Mains Power Restored
Memory Parity Error
Accessing protected memory
Memory boundary error
Memory address same as switch register
Continuous interrupt switch on
When any interrupt occurred, after completing the current operation, the processor would automatically execute a JSBR (Jump to Subroutine) to memory location 2 in zero page. The action of the JSBR is to leave the calling address (plus one) at this location. Execution would then continue from location 3. Generally this would then make a jump to the location of the interrupt handler. Once the interrupt routine has completed, the processor would make an indirect jump using the address in location 2 to return to the running program.
Once the interrupt has been received, the interrupt system is disabled, until re-enabled using a ION instruction at the end of the interrupt service routine.
In the same fashion as the PDP8, the ION instruction would delay one cycle, to allow execution of the indirect jump back, to avoid having to handle another interrupt while still in the interrupt service routine.
Early machines, prior to the Mark 3 were not necessarily provided with any operating system - the programs would be designed to operate at fixed locations in memory. Most systems supplied included only a single screen, and one printer. If more than one screen was required, and the customer expected to run the same program on both screens, two versions of the code was supplied, each designed to operate at a different core address.
LOS - Leicester Operating System
The first recognisable operating system was produced in Leicester by Joe Templeman. in late 1974.
"Version 1 of LOS was developed entirely by Joe Templeman specifically for a client called C Victor (Swimwear) who had ordered two 8 line CDC VDUs and I, as Midlands Software Manager, had said that I wanted them to be able to run any program from either VDU without having two copies of each program" - Chris Green's recollection
"Well, I joined BCL in May 1975 so my story begins a little while after that, as it took a little time to gain familiarity with the Molly through maintaining some existing Mark I installations.
C Victor (in St. Albans) was the first project we did from scratch but it certainly wasn’t LOS. Its foundation was the "BCL Supervisor". As I recall, this was a task scheduler sitting on top of the Mark I "firmware" with a gap in between where you could put the application code. You were supposed to order your Supervisor from Brighton, so I filled the form in and sent it off, visualising a hectic office despatching reels of paper tape to new projects starting up around the country. Nothing happened. Eventually I got the last BCL Supervisor tape ever issued, from a surprised Peter Dale. As you’ve recorded, we had to set out separate areas for each "task", and write separate versions of code for each task that might run it. We didn’t solve that problem with C Victor, rather it drew attention to the need to find a solution whilst we attended to other rather more pressing matters, such as setting up a file structure instead of working with absolute sector numbers on the discs. The 300 baud 8-line VDUs were certainly a novelty (what on earth could that key marked "Escape" be for?), and there was the girl at C Victor who heroically stayed at her screen through a thunderstorm, to the admiration of her colleagues.
Next came the Tate Gallery. Again this was a pre-LOS system (though Mark Adams upgraded it at the first opportunity), but it was probably the first place where we used "offset" addressing to run program code in different partitions without maintaining separate versions. The "offset" solution revealed itself in the Newcastle Arms in Nottingham one evening. It was implemented in software by lunchtime the next day." - Joe Templeman's recollection.
AL/1 - A High Level Language/Operating System
While work proceeded in Leicester, BCL in Brighton were developing a 'proper high level language' called AL/1. Mick Benham was primarily involved in this development. AL/1 needed a lot of memory, which was expensive, and quickly ran out of memory running several big programs.
Some AL/1 systems were installed by the Brighton team (Mason Master for example?), but after the success of the Philip Harris installation, LOS became the standard operating system.
"I remember being ordered to develop the Philip Harris system in AL/1, and nearly being sacked for refusing to do it!" - Chris Green.
OS - Operating System
When Joe Templeman left BCL in April 1979, LOS development was passed to Bob Doncaster. OS was subsequently produced by Bob Doncaster and Mick Benham. OS was became considerably different to LOS in operation terms, with many more features, and was consequently a little slower. OS became the standard OS for all installations during the 1980's. OS supported all the operating system calls that LOS has defined.
July 1982 Multi-Systems OS released (Series 26)
MPOS - March 1986
<Extension to OS. To support new hardware primarily?>
Back to Top
Apart from the abortive effort of AL/1 no high level languages were produced. In fact no assembler was produced either.
BCL from the London office, and in particular Rod Lugger, developed a system of linking on-line comments to machine code lines to produce explained source code listings. (The primary package produced by the London, later Milton Keynes, office was known as the London Package, and the on-line source annotation was maintained until the end.)
Later a PC based assembler was produced by Systemation.
All programming was in machine code. Programmers wrote programs on pre-printed coding sheets. The sheets were ruled into rows representing consecutive memory addresses. A single sheet represented locations 0 to 77 (octal), one page of memory. The programs were written in a pseudo assembly language, and the translated by the programmer will being entered into an on-line core editor. (See note in section above regarding on-line program documentation.)
Many of the common operations, such as file handling, arithmetic, and input/output was provided by sub-routines in the 'operating system'.
Later an assembler was produced by ??? (Birmingham lot - Bill Gethin et al?)
Both LOS and OS, the two control programs, resided in the first 12K words or core. Both systems were memory resident.
Above the OS area, was reserved areas for buffers, and resident application overlays.
Individual tasks were assigned either 2K or 4K fixed partition. Each attached screen or printer was allocated a partition.
It can be seen from the Molecular instruction set, that the memory reference instructions can only address 1K words of core, either from the current page or from zero page. All OS calls were made indirectly through pointers in zero page. The application programmer generally stuck to addresses in his or her page.
From the programmers point of view memory was divided into columns of 64 (100 in octal) words. Each 16 (20 in octal) column forms a single page. Pages 0 to 37(octal) for the first 32K bank, and pages 40 to 77(octal) for the second bank-switchable 32K bank.
One useful feature of both operating systems was that any relative address at the start of a core image, when loaded into core from disk, would be resolved to absolute addresses. Using this, the programmer could refer to addresses in their second 1K page.
Primarily the Molecular used ASCII for all input and output, but the programmer could also store character strings in a packed format. Packing three characters into a single word was known as Metacode. This limited the character set to capitals only, and a limited set of punctuation characters, however it did offer space savings when disk space and core space was at a premium.
Sales Order Processing
Accounts - Sales, Puchase, and Nominal Ledgers
Live Stock Markets
The primary market for the machines was in distribution companies. Another market for the machines was livestock markets throughout the UK.
The basic architecture of the machine is very similar to the PDP8, although many machines were of the same style for many manufacturers.
The technique of storing the calling address at the first location of a called subroutine is identical to the PDP8.
The interrupt system is similar to the PDP8, although again, the techniques were very common at the time.
To my knowledge, none of the Molecular range had a series of auto-increment registers such as were in all of the PDP8 range. Correction - The Mk II machines had auto-increment and auto-decrement registers using locations 10-17 and 20-27 respectively.
Metacode (the storing of a limited ASCII char set - three chars per word) was very similar to the same techniques used in early DEC machines.
Not having a pre-emptive operating system or architecture, did mean that tasks that stuck in a infinite loop, would cause the machine to 'crash'. It was quite possible using the font panel switches to get out of this problem however.
Although fence registers seem to have been developed, there was no means of protecting areas of memory. A rogue task in one partition could overwrite memory in another partition or indeed overwrite the operating system, again causing the machine to crash.
As a rebuttal against this view Joe Templeman, the designer of LOS, offered the following:-
Where you say what was wrong with the Molly, I say that is what was right with it! Pre-emptive task scheduling would have drastically downgraded Molly performance (and bloated the operating system). It was an irrelevance, as programmers could easily enough ensure any necessary time slicing with strategically placed calls to SUSPEND task execution. The fatal flaw in the design of the Mark II was precisely its attempt to "fence" each running task, because it denied the application programmer any means of communication between tasks. Inter-task communication was a vital component in LOS and very efficiently implemented in the hardware. Why throw this away because some errant program might cause trouble? There was nothing to be gained, because errant programs have to be fixed anyway.
LOS was designed on the principle of co-operation, both with the Molly’s hardware and with the programmer, to produce what was wanted. In return it was not an option to divert resources to protect programmers from themselves (or from their colleagues). This didn’t just work; it often opened up possibilities well beyond what had originally been proposed. Of course, some programming developments were justified as they improved productivity. Such as the ability to load or edit a program while seated at a keyboard, rather than by flicking it in bit by bit standing at the control panel switches.
Back to Top
Where did the molly come from?
The legend is that BCL started in a garage in Brighton. Unfortunately I never heard any specific names mentioned.
I’m pretty sure ABS only appeared on the scene sometime during my time at BCL (probably after the Singer influx). It was a commercial arrangement of some sort. The idea might have been that the Brighton factory would make anything the sales team managed to sell, whether that was an ABS machine or a Molly. The ABS used a programming language called "Simple". I attended a presentation on this and I remember asking for a listing of a simple Simple program. After the printer had been chugging away at this for over an hour, with no sign of finishing, I decided it wasn’t worth missing any more trains home. (JT)
I believe this was ABS's Molecular 80 (KRM)
The Molly the Russians got hold off!
There is a legend that a Mark 1 was bought by a hotel in Moscow - presumably the KGB hoped to glean the secrets of western high technology. (JT)
The Molly 17 after all?
There is a (highly plausible) legend that the Mark 1’s parity bit gave so much trouble to its designer that he cut it out (so it should really have been the Molecular-17). (JT)
The night Anne and Griffo re-entered the whole market run!
One of the special features of the Molly bootstrap was leaving switch 9 on the console up when running the bootstrap - this would start a recovery copy of the removable disk down to the fixed disk. Fine - good idea. It isn't a good idea, when after a system problem, you have spent most of the night re-entering a customer's data, and are getting very tired. Good time to make a backup! Why Griffo re-booted the machine it is not known! Neither is it known why he left Switch 9 up!!! If is not known which one cried first! (KRM)
The mechanical nightmare that was the Mark 5
At some stage the backplanes for the Mark 5 (and possibly the distributor) were made using MIL spec edge connectors that had been ordered by mistake. Such was the force needed to get cards into these machines it was touch and go whether the board would snap first! (KRM)