SLURP Countdown

Tony Pritchett and Stan Hayward

SLURP Card Deck

The countdown title sequence for the Halas and Batchelor film What is a Computer? was produced by Stan Hayward and Tony Pritchett using the CALCOMP Plotter at the University of London Computer Centre.

The Fortran program worked out the transformations from one bank-cheque numeral to the next and plotted each frame in outline on the plotter. The plotter output was then traced on to cels and coloured in by hand.

The SLURP Card Deck was found in Tony Pritchett's tray of cards after he passed away. It defines the frames of the countdown that were plotted on the London University CALCOMP plotter.

The Halas and Batchelor film was released in 1970 so this computer animation was probably done in 1968 or 1969.

JCL

This is the Job Control Card for running the Fortran job on the London Atlas that generated the CALCOMP frames.

OUTPUT 0 LINEPRINTER 500 LINES
1 PLOTTER 17*556 DENSITY PERMIT
STORE 16/54
COMPUTING 4 MINUTES
USE FORTRAN
*RUN SOURCE MAP
      BEGIN
      INTEGER CHARR(27,12)
      REAL IOX,IOY,ISC
C
      READ 1, CHARR
  1   FORMAT(6X,9I8)
C
      CALL STFLM(160,1)
      IOX=-32.0
      IOY=-40.0
      ZF=1.25
      DZF=1.025
C
      ISC=4.0
      DO 2 NCA=1,9
      NCB=0
      CALL SLURP
      ZF=ZF*DZF
      CALL ADVAN
      NCB=NCA+1
      DO 2 F=.125,.8751,.125
      CALL SLURP
      ZF=ZF*DZF
  2   CALL ADVAN
C
      ISC=2.0
      NCA=11
      NCB=0
      CALL SLURP
      ZF=ZF*DZF
      CALL ADVAN
      NCB=12
      DO 3 F=.125,.8751,.125
      CALL SLURP
      ZF=ZF*DZF
  3   CALL ADVAN
C
      NCA=12
      NCB=0
      DO 4 I=1,4
      CALL SLURP
  4   CALL ADVAN
C
      CALL ENDFLM
      STOP
C
      SUBROUTINE SLURP
      DO 4 K=1,27
C
      MA=CHARR(K,NCA)
      NAX=MA/1000
      NAY=MA-NAX*1000
      IF(NAX.GE.1000) NAX=NAX-1000
      IF(NCB.GT.0) GO TO 5
      NX=(IOX+NAX*ISC)*ZF+512
      NY=(IOY+NAY*ISC)*ZF+512
      GO TO 1
C
  5   MB=CHARR(K,NCB)
      NBX=MB/1000
      NBY=MB-NBX*1000
      IF(NBX.GE.1000) NBX=NBX-1000
      NX=((NAX+F*(NBX-NAX))*ISC+IOX)*ZF+512
      NY=((NAY+F*(NBY-NAY))*ISC+IOY)*ZF+512
      IF(MB.LT.1000000) GO TO 2
C
  1   IF(MA.GE.1000000) GO TO 3
  2   IF(NX=LX.AND.NY=LY GO TO 4
      CALL VECTOR(LX,LY,NX,NY)
C
  3   LX=NX
      LY=NY
  4   CONTINUE
C
      RETURN
      END
C
      END

C
*ENTER
01     1000002  016002  016002  016002  016002  016002  016002  016002  016002
02      016018  016018  000018  000011 1008011 1008018 1008018 1008011 1008011
03     1000011  000011 1008009 1008009 1008004 1008004 1008009 1000011  000002

91     1001000  015000  015000  015000  015000  015000  015010  015010  015010
92      015010  015020  011020  011011 1013011 1013019 1013019 1013011 1013011
93     1011011  001011 1003009  013009  013002  003002  003009 1001011  001000

81     1002000  014000  014000  014000  014000  014000  014010  016011  016011
82      016011  016020  000020  000011 1004011  004018  012018  012011  004011
83     1000011  002010 1004009  012009  012002  004002  004009 1002010  002000

71     1002000  014000  014000  014000  014000  014000  014009  009011  009011
72      009011  009020  007020  007010 1008011 1008018 1008012 1008011 1008011
73     1007010  007010  007010  012008  012002  004002  004006  002008  002000

61     1001000  010000  010004  008004  008002  004002  004011  015011  015011
62      015011  015020  001020  001013 1004013  004018  013018  013013  004013
63     1001013  001013  001013  001013  001002  001002  001002  001002  001000

51     1002000  014000  014002  012002  012002  005002  005009  011009  011009
52      014009  014020  002020  002018  004018  004018  011018  011011  005011
53      002011  002011  002011  002011  002002  002002  002002  002002  002000

41     1002000  006000  006002  006002  006002  006002  006013  011013  011009
42      015009  015020  011020  011018  011018  011018  011018  011015  002015
43      002013  002013  002013  002013  002002  002002  002002  002002  002000

31     1002000  013000  013000  013000  013000  013000  013010  015011  015011
32      015011  015020  002020  002018  011018  011011  011011  011011  002011
33      002009  011009  011009  011009  011002  011002  011002  002002  002000

21     1002000  014000  014000  014000  014000  014000  014011  005011  005018
22      014018  014020  002020  002018  002018  002011  002011  002011  002011
23      002009  011009  011009  011009  011002  011002  011002  002002  002000

11     1004000  008000  008000  008000  008000  008000  008012  012012  012018
12      012018  012020  004020  004020  004020  004012  004012  004012  004012
13      004012  006012  006012  006012  006003  006003  006003  004003  004000

1.1    1008000  016000  016018  016022  016024  016024  016024  016024  016024  
1.2    1016024  024024  024040  008040  008024  012024  012024  012024 1016024
1.3    1016024 1012024  012020  012016  012006  012006  012006  008006  008000

$1     1003000  029000  029018  018022  018030  018030  018030  018030  018030
$2     1019034  019034  019040  013040  013034  019034  019034  019034  019034
$3     1018030  014030  014020  025016  025004  007004  007016  003016  003000
(7/8 TERMINATOR JOB CARD)

Decoding the numbers, each define an X-value (3 digits) followed by a Y-value (3 digits), sometimes preceded by a single control digit 1. This indicates the start of a section of lines to be drawn.

Plotting the line segments starting a new segment each time there is a 1 gives the following:

Although it appears straightforward the need for 27 coordinates per character is less clear as none have more than 17 points. The 27 points are needed to morph one character into the next. The storyboard is straightforward:

0 9 8 7 6 5 4 3 2 1 1 

The main action of the program is the countdown. Starting at the first square figure:

Displaying the individual frames in the main sequence is shown below (click the green arrow):

It is difficult to see the individual frames during the animation. The diagram below shows the midway frames between each character. Just for fun we have also produced a similar countdown using SVG and animating the same set of lines between each of the frames.

SLURP SVG