The Flexipede Revisited

Kate Sullivan, David Duce, Bob Hopgood

On The Flexipede:

Hugh 'Ras' Riddle: I didn't see it as significant as I do now.
Tony Pritchett: I didn't think of it that way either. I thought - this is fun!

1. Introduction

Tony Pritchett created The Flexipede in 1967, probably the first known character computer animation telling a story worldwide, certainly in the UK. And it had a soundtrack.

Large View

Outside the Chilton Atlas building: Kate Sullivan, Tony Pritchett, Dik Leatherdale, Bob Hopgood, 26 February 2016 when Tony showed Kate around one of his old stomping grounds

Sadly, Tony Pritchett passed away on the 28 August 2017.

Animator and filmmaker Kate Sullivan was a friend of Tony’s. She is currently creating a multimedia project which documents his work. The pair were working on the project together.

Kate is providing a temporary home for Tony’s archive. The collection includes all sorts of fascinating materials relating to his animation career, (1967 – 1982). Items include, the original 16mm master negative of ‘The Flexipede’ along with film footage and printed materials relating to a wide range of projects, (Ridley Scott’s ‘Alien’, ‘Blade Runner’ and the very first Channel Four logo to name but a few.)

Kate is very keen to hear from any one who would like to contribute to the project, which is currently in progress. It is centred upon Tony’s career, but by extension documents the work of his colleagues and the formative years of the British computer animation industry. All contributions would be very much appreciated. No contribution is either too anecdotal or technical! If you would like to get in touch or simply find out more about the project-in-progress, please visit; it’s (regularly-updated) home: www.Tonypritchett.co.uk.

Back in the archive - Kate mentioned to Victoria Marshall that amongst Tony's possessions was a 2000-card drawer of computer punched-cards cards which, according to Tony, included his Flexipede program. Would it be possible to recreate The Flexipede 50 years after it was written?

Large View

2. Flexipede Card Box

The card box included several card decks destined for the London Atlas Computing Service. Most cards had printing across the top, rather faded at times. Some had no printing. It was then necessary to read the hole punching.

Card with Printing

Large View

An early deck that we looked at appeared to be Flexipede but it was an earlier version. Kate has some experimental 16mm footage containing this version. Other decks were from other animation projects.

An Early Flexipede

3. The Flexipede Program

Eventually, a card deck was found that looked correct. It was generating an IBM-compatible ½in magnetic tape for the Benson-Lehner 120 (BL120) Microfilm Recorder at Culham Laboratory (where Tony Pritchett said the film was produced).

In the 1960s, the sensible way to generate computer animation was to use a microfilm recorder. A Stromberg-Carlson 4020 (SC4020) microfilm recorder was installed at AWRE Aldermaston in 1963 and was also used by Harwell for displaying nuclear simulations on hardcopy paper or 16mm/35mm film. In 1965 thermonuclear research moved from Harwell to Culham, who purchased a BL120 microfilm recorder (compatible with the SC4020). The BL120 was a faster cheaper second-generation alternative that could process all SC4020 magnetic tapes.

Kate Sullivan took on the mammoth job of photographing the box of cards, 3 cards per photograph. Bob Hopgood typed in the contents (making quite a few errors in the process) and David Duce produced a Java program that performed as close to the Fortran program as possible generating frames of SVG graphics that could be displayed approaching 24 frames per second to simulate the BL120 output. This uncovered quite a few errors in the card transcriptions that needed to be addressed.

Only two cards of the deck were missing and we were able to deduce these to arrive at a complete listing of the card deck. Four subroutines were not found called IDST, IDEND, ADVFLM and VECTOR. It turned out that these were provided as BAS cards, the Atlas object code on binary punched cards.

Later, Kate found in her archive confirmation that Tony had made visits to Aldermaston, Culham and Chilton to see if he could get access to the Culham BL120 or the Aldermaston SC4020 and was offered access to the BL120. Paul Nelson at Chilton offered him Harwell's Fortran (Hartran) version of the basic SC4020 SCORS code for generating ½in magnetic tapes for either the BL120 or the SC4020. Tony used these as the basis of a rewrite in London's Fortran V. The result was the BAS subroutines IDST, IDEND, ADVFLM and VECTOR which Tony used on a number of projects. To give some idea of the code, Woody Anderson did a similar recoding for the IBM 360 which he published in the UAIDE Proceedings for 1970. Tony's Fortran deck included a large set of data cards giving all the positions of the flexipede legs An earlier program must have pre-calculated these to save time in short development runs.

4. Approach

The ultimate goal was a Scalable Vector Graphics (SVG) definition of The Flexipede using either Javascript or SVG's declarative animation that was as close to the original as possible. The ability to repeat an animation cycle via the repeatCount attribute in SVG would greatly reduced the size of the completed SVG document.

To understand the Flexipede program itself, the decision was made for David Duce to reprogram it in Java and for Bob Hopgood to focus on generating an animation that used the full power of SVG. Although the Flexipede Program is not overly long, some of the code around the algorithms used was worth reprogramming to ensure correctness.

The titles at the beginning and end were not part of the Flexipede Fortran program. Tony had mentioned to Kate that he had done these using Letraset and Kate found the original Letraset artwork in the archive and was able to produce a good rendering of these. The existing sound track needed some filtering to make it sound more like the original. Paul Hopgood obliged.

The graphics package used was unknown initially but eventually it was clear that it was a low level set of routines that just took coordinates defined on the 1023 by 1023 grid of the microfilm recorder and output vectors given the start and end positions.

4.1 The Java Approach

The aim here was to answer the question Is it feasible that the Fortran we have was used to create The Flexipede animation? The Fortran used had some unusual features. DO loops could have alphabetic labels. There was an Algol-like block structure with BEGIN and END statements and the Fortran subroutines could be nested (three END statements in a row was certainly unexpected). Some variables were passed through subroutine arguments, others were shared, but did not use COMMON blocks. Later, a Fortran V manual (dated May 1967) came to light in Tony's archive which described these Fortran extensions so we are confident this is the Fortran dialect used.

The aim of the Java translation was then to generate a frame-based animation from output "similar" to that produced by the original program. The four subroutines IDST, IDEND, ADVFLM and VECTOR defined in BAS code were replaced by code that recorded the routine invocations and argument values in a trace file. IDST and IDEND were microfilm recorder initialisation and termination routines that could largely be ignored. ADVFLM(1) advanced the film one frame. VECTOR drew a vector from (XS, YS) to (XF, YF) in the 1023 by 1023 coordinate system. Debugging via a trace file helped us understand how the program worked. The trace file was then converted to Scalable Vector Graphics (SVG) line drawing elements for display. Using SVG's visibility controls, we could run through the frames, 24 per second or a frame at a time. We discovered some transcription errors in the data cards and worked out some subtle changes such as the solipede swallow. Buttons and JavaScript code were added to update the animation at 24 frames per second or to single-step one frame at a time.

Screen shot of the animation control panel

Animation Control Panel

5. Reprogramming Flexipede in SVG

5.1 Body Parts

The body parts are defined by the arrays BODY, SOLIBOD, FOOT, SKULL, DJAW, EYE and PAD at the beginning of the program:

BODY FOOT SKULL DJAW EYE SOLIBOD PAD FLEXIPEDE PARTS TOGETHER PLUS LEGS

The SKULL and JAW are separate so that the flexipede can open up its head to swallow the solipede. Only the first two lines of the eye are normally drawn but the full eye is drawn when the solipede passes overhead. PAD is the suction end of the flexipede's tongue.

5.2 Story Board

The storyboard of the animation is quite simple where the numbers indicate the number of frames of the activity: (1) Flexipede lumbers across screen from Left to Right (420 then 24 blank), (2) Solipede bounces across from Right to Left (150 frames then 24 blank), (3) Flexipede returns from R to L, stops as solipede bounces over its head, continues off R (100, 120, 300), (4) Solipede bounces fast from R to L and starts returning L to R when it is caught by a large tongue (34, 14, 2), (5) Pause then pan and zoom showing the long tongue of the flexipede and another pause (24, 40, 24), (6) The flexipede's jaws open, hold, tongue pulls solipede in, it is then swallowed (gulp) increasing flexipede's size by one segment, jaws close, hold, (52, 24, 3, 24, 24, 44) (7) The satisfied flexipede crosses from R to L (270). The flexipede and solipede sizes change on each crossing.

Effectively the flexipede and solipede only travel from left to right at full size but two variables adjust the size and flip the coordinate in the X-direction about the centre so that right-to-left and left-to-right traversals at various sizes can be easily achieved.

Accompanying the animation is a sound track of a flexipede that needs oiling and a sprightly bouncing solipede that Tony created. Tony told Kate that he created the film's soundtrack recording the sound of a squeaky office chair, a garage hoist, a Jew's harp and himself gulping using a domestic Philips reel-to-reel tape recorder belonging to the sister of his friend, Hugh 'Ras' Riddle.

(Tony went on to create the installation 'Sidebands' with Ras, which, along with The Flexipede, was exhibited at Cybernetic Serendipity, 1968.) Tony told Kate that the sound was sneakily recorded at night at Ras's workplace - a basement lab in the medical electronics research department of Bart's Hospital.

Tony: "There was no security in those days!"
Ras: "True geeks work unlimited hours!"
Ras (laughing): "He (Tony) was facing the wrong way round on it (the squeaky office chair) bouncing up and down ..."
Tony (laughing): "If anybody had seen it through the window they would have wondered what was going on!"
Ras: "We thought it was hilarious. We were conscious of the absurdity of it all the way through. Absurdity was in a way part of what one lived for. This was Tony. It was what he did."

The timings for the various events defined in the program matched those in The Flexipede film except that the holds between scenes were not the same in the released film version. Our guess is that additional blank frames were inserted at some later stage, presumably to fit the soundtrack exactly to where it should be relative to the animation and titles.

5.3 Flexipede Walk

The Flexipede walk in the card deck is defined by a set of arrays giving the absolute positions of the 11 legs for the 24 positions of the animation cycle which are read in from data cards labelled WALK DATA. Using absolute position values somewhat obscures the fact that the leg movements are in a cycle of four (the 5th segment of the flexipede has the same leg movement as the first, the 6th the same as the second and so on. Also, the 2nd leg cycle is the same as the first but displaced by 6 places, the 3rd displaced by 12 and the 4th displaced by 18. So one leg cycle provides all the information needed to create the animation of all the legs.

The path of each leg is from the top of the leg to the knee and then to the start of the foot with the same horizontal foot for each position.

The 24 leg positions are shown below. The dashed lines are the starting positions from right to left of the animation of the first four legs which then get repeated for the following legs.

Going from right to left, the foot positions move backwards along the ground then come forward on the curve of a circle. The knee positions are calculated using a similar algorithm we believe to that which is used for the solipede.

Foot positions Knee positions

The Flexipede Walk

For each traversal of the flexipede variables are set to give its size and direction of travel. For the initial walk the legs cycle through the 24 positions as the flexipede traverses the screen over 420 frames. At 24 frames per cycle that amounts to 17.5 repeats which SVG can handle so only a single 24 loop needs to be declared but with a repeatCount attribute set to 17.5.

5.4 Solipede Leap

The path of the Solipede is defined by the leap trajectory which gives the Y position of the top of leg and how far the foot is off the ground for a 12-frame rather than 24-frame cycle.

The solipede foot moves forward 6 units each frame of the cycle and the position of the knee is calculated from the X and Y positions of the foot and the Y-position of the top of the leg defined by the leap trajectory table. The basic motion from the leap trajectory table is shown together with a forward movement to give the leaping motion.

The Solipede Jump

The leap program is designed to give a reasonably correct positioning for the knee in this motion. This is done by a heuristic that moves the knee up and forward depending on the distance that the foot is in front of the top of the leg. The line between the top of the leg and the foot is moved forward as though the leg was longer creating a parallel line that stops at an arbitrary line above the top of the leg. The knee is then positioned half way between the original half way point and the new one. The choice of heuristic seems to be one that Tony invented. Perhaps flexipedes and solipedes do have legs that stretch and contract.

line above leg top

Positioning the Knee

The table of positions that define the flexipede's walk appear to be defined in a similar way. An earlier program found in the deck of cards may be an early version of the program that generated the flexipede's leg movements.

The cycle of the animated solipede jump is shown below:

5.5 Solipede Capture

The solipede capture is reasonably complicated as the solipede has to be sucked into the open jaws without the legs dangling below and then to right the legs once the capture has occurred.

The array defined by:

     REAL PL(4,4)/50.,50.,90.,110.,66.,25.,120.,70.,69.,10.,136.,30.,70.,0.,140.,6./

gives the intermediate coordinates of the solipede leg during capture. Once captured, the head moves forward half a body segment length and the body back by the same amount thus creating a flexipede with an extra segment that walks off satisfied.

class="line07" d="M0,0 l 32,64 l -40, 56 l0,10l40,0l-40,-10"/>

The Solipede Capture

5.6 Flexipede Hits the Wall

One unusual aspect of the Flexipede film was that on reaching the edge of the screen area it starts to generate a wall. Effectively the lines of the Flexipede that are greater than 1023 in the X direction or less than zero have the X-coordinate changed to either 1023 or zero creating a set of vertical lines. This overstriking gives a more intense (thicker vertical line) on the film image indicating that the Flexipede used a low level routine with no genuine clipping at the screen boundary (0 and 1023 in the X and Y directions).

The VECTOR routine in the basic SCORS library first changes all coordinates less than zero to zero and those greater than 1023 to 1023 before splitting long vectors into 64-bit segments required by the microfilm recorder. This confirmed that Tony used low-level SCORS clipping for generating the Flexipede BL120 output. An animation of The Flexipede shows the SCORS clip as the flexipede emeges from a wall on the left and exits via one on the right.

6. Conclusions

The big question was whether the card deck we found was the program that generated the film called The Flexipede. The Java program indicated that the program generated 1784 frames of film. Kate managed to find a Job Control card saying it was the final run and the lineprinter output giving the results of the run on the London Atlas. This was:

LRF91PB1, A PRITCHETT BL120 TEST
DATE 07.10.67   TIME 14.35.27   SERIAL NUMBER    12337285
                         REQUESTED        USED          COMPILE
INSTRUCTION INTERRUPTS       96000       43353             1360
COMPILE STORE                  120          89 
EXECUTION STORE                 50          34
                             DECKS      BLOCKS          WAITING
MAGNETIC  TAPES                  1          37               56
IBM MAGNETIC TAPES               1        1799
                        STORE TIME   DRUM TIME        DECK TIME
                             16718          10              322
......

The run was made on 7 October 1967, ran for 4 minutes and 31 seconds (of which 8.5 secs were for compilation). The main output was 1799 blocks of ½in magnetic tape. Magnetic tape blocks destined for the SC4020 and BL120 had a maximum of 512 instructions. New frames took place each advance film. Looking at the amount of instructions required for each flexipede frame this was well within the 512 instruction limit for most. Tapes destined for the BL120 had header and footer frames added to identify whose output it was. In consequence, the flexipede program generating 1784 film frames would require just a few more than 1784 blocks of ½in tape so 1799 blocks produced is pretty well exactly what you would expect for a complete run of the Flexipede card deck. The evidence is not conclusive but leads us to believe that Kate does have the card deck that generated the film The Flexipede.

Some of the manuals that Tony had related to his use of the Culham BL120 microfilm recorder from the London Atlas are available at the Chilton website. A longer version of this paper which includes the Flexipede code, the small animations and the links to the various Flexipede animations described above and relevant 1967 manuals can be found at:
http://www.chilton-computing.org.uk/acl/htmls/flexipede/flexipede.htm.

7. Acknowledgements

We would like to thank Paul Hopgood for getting rid of the worst of the background noise on the soundtrack and increasing it to a meaningful volume. Also to Victoria Marshall at Chilton who made us aware of the possibilities, provided a home for online copies of the relevant manuals etc, and gave many useful comments on the paper.