Richard Thomson
Director, Computer Graphics Museum
@CGMuseum
http://ComputerGraphicsMuseum.org
info@ComputerGraphicsMuseum.org
BEFLIX First Publication
"A Computer Technique for
Producing Animated Movies",
Kenneth C. Knowlton
AFIPS Conference Proceedings 25
(Spring Joint Computer Conference 1964)
Hardware Environment
 IBM 7090 computer
 Card keypunch
 Card reader
 Line printer
 Magnetic tape drive
 Disc drive
 Stromberg-Carlson 4020 microfilm recorder
IBM 7090 Computer
 IBM's first transistor based mainframe
 First install November, 1959
 Typical cost $2.9 million in 1960
 Evolution of IBM 709 vacuum tube
mainframe
 Created for scientific/engineering markets
 NASA: Mercury, Gemini and Apollo
 JPL: Space Flight Operations Facility
 American Airlines: SABRE
IBM 7090 Computer
 3 index registers
 227 instructions
 single-precision floating-point (36-bits)
 36-bit words
 32,768 words of core memory
 2.18 µs memory cycle time
 4.36 µs floating-point add time
 4.36-30.53 µs floating-point multiply time
IBM 7090 CPU and Memory
IBM 7090
IBM 7090
IBM 7090
Stromberg-Carlson 4020
Microfilm Recorder
 Magtape drive for input
 Charactron tube for creating image
 16mm or 35mm film camera
 Character beam can be defocused
 Draw grayscale pixels as character blobs
Stromberg-Carlson SC4020
Language
 BEFLIX is an Embedded DSL
 Embedded
○ Embedded in another language
○ Hosted in FORTRAN II environment
○ Uses FAP (FORTRAN II Assembly Program) macro
language constructs
 Domain-Specific Language
○ Represent concepts from the problem domain
directly
Programming Model
 Memory organized into surfaces
 Coarse resolution: 126x92
 Fine resolution: 252x184
 3 bits/pixel
 12 pixels/word
 Enough memory to hold 2 fine resolution frames
Fine Surface Designators
Fine resolution alternatives:
AA
252x184
BB
252x184
CC
252x368
VV
252x368
Coarse Surface Designators
Coarse resolution alternatives:
WW
126x92
XX
126x92
YY
126x92
ZZ
126x92
PP
252x92
OO
378x92
FF
504x92
PP or WW, XX
OO or WW, XX, YY
FF or WW, XX, YY, ZZ
Coarse Surface Designators
Coarse resolution alternatives:
WW
126x92
XX
126x92
YY
126x92
ZZ
126x92
TT or YY, ZZ
SS or XX, YY, ZZ
EE or WW, XX, YY, ZZ
EE or AA
TT
126x184
SS
126x276
EE
126x368
Scanners
 Scanners are named A...Z
 Scanners live on a surface
 Scanners have:
 A coordinate within the surface
 A value read from the surface
 Manipulate a surface by conditionally
performing operations on a scanner or
between two scanners
Low Level Operations
 Place a scanner at a location on a surface
 PLACE sc, surf, x, y
 Conditionally perform some operations and
jump
 IFxxx (c1)...(cN)T(o1)...(oM)label
 Evaluate each condition c1...cN
 Combine them according to logical predicate xxx
 If true, perform operations o1...oM
 Optionally jump to label
Low Level Operation Example
IFANY (B,R,10)(B,A,C)(A,E,7)T(A,T,B)(A,U,2)(A,W,3)LOC5
If any of the following are true:
 scanner B is Right of x=10
 scanner B is Above scanner C
 scanner A is sitting on a number Equal to 7
Then the following operations are performed:
 scanner A moves To the same surface and pixel as scanner B
 scanner A moves Up 2 pixels
 scanner A Writes the number 3 to its pixel
Then control jumps to the label LOC5 in the program.
Scanner Conditions
 Conditions are of the form (scnr,rel,quant)
 scnr name of the scanner to be tested
 rel relation between scanner and quant
 quant can be a number or another scanner
Scanner Comparison
Relations
 Compare scanner position to a value
 Compare positions of two scanners
 Compare scanner pixel to a value
 Compare pixel between scanners
Scanner Move Operations
 Move to absolute X or Y coordinate
 Move relative along X or Y axis
 Move to surface and position of other
scanner
 Move to X or Y coordinate of another
scanner without changing surfaces
 Move one square based other scanner's
pixel
 Scanners wrap around surface boundaries
in a helix
Scanner Pixel Operations
 Write pixel from value or other scanner's
pixel
 Write complement of other scanner's pixel
 Exchange pixels between two scanners
 +, -, *, / between two scanners (modulo 8)
 bitwise OR and AND between two scanners
Static and Dynamic Operations
 Static operations happen immediately
 Dynamic operations occur over multiple
frames
High Level Operations
 Output control and temporary storage of
pictures
 Drawing primitives (line, arc, polyline, text)
 BitBlt like operations on rectangular areas
 Dynamic operations on rectangular areas
 Macros using low-level operations
Output Operations
CAMERA n
FRAMES n
FILTER n
TABLE n,c0,...,c7
AIM sc
SAMPLE n
LINES n
FILM
NOFILM
UNTIL n,label
RESET n
COARSE
FINE
STORE surf,where
RETREV surf,where
Drawing Primitives
LINE sc1,sc2,mode,ns,width,speed
ARC sc1,ctr,d,mode,ns,w,speed,t1,w1,t2,q2
TRACE lb1,len,sc,orient,mode,ns,width,speed
TYPE lb2,sc,size,hspace,vspace,mode,ns
lb1 OCT n,(curve to be drawn by TRACE)
lb2 BCI n,(text to be drawn by TYPE)
Instant Rectangle Operations
PAINT scTR,scBL,mode,ns
BORDER scTR,scBL,width,mode,ns
SHIFT scTR,scBL,dir,amount
ROTATE scTR,scBL,dir,amount[,n]
EXPAND scTR,scBL,dir,rep1,rep2
SQUASH scTR,scBL,dir,del,kp
COPY scTR,scBL,mode,orient,sc3,sc4[,n]
CENTER scTR,scBL
GROW scTR,scBL,ns1,ns2,ns3,label
SMOOTH scTR,scBL
Dynamic Rectangle
Operations
DISOLV scTR,scBL,sc3,pat
ZOOMIN scTR,scBL,fctr
REDUCE scTR,scBL,fctr
STRECH scTR,scBL,dir,fctr
PRESS scTR,scBL,dir,fctr
The Master Film
 The SC2040 produces a master film
 Duplicate frames are output only once
 A repeat count is written above the frame
 Repeated frames are duplicated by optical
printing when the film is developed
Workflow
1. Develop program in BEFLIX
2. Preview output samples on printout
3. Run program to create magtape
4. Load magtape into microfilm recorder
5. Produce master film
6. Optical print/expand to create work print
Stan VanDerBeek
Artist Stan VanDerBeek collaborated with Ken Knowlton on a
series of films:
 Poem Field No. 1 (1965)
 Poem Field No. 2 (1966)
 Poem Field No. 3 (1967)
 Poem Field No. 4 (no date)
 Poem Field No. 5 (1967)
 Poem Field No. 6 (no date)
 Poem Field No. 7 (1971)
 Poem Field No. 8 (no date)
 Collido-Oscope (1966) (VanDerBeek, Knowlton and
Bosche)
 Man and His World, 1967 (Shown at Expo '67)
Poem Field No. 2
View the Video
Looking Back at BEFLIX
 BEFLIX is considered an "esoteric"
programming language
 Its unique syntax depends on the macro
facilities of FAP
 Later FORTRAN IV version resembled more
traditional subroutine library
 First(?) language for procedural animation
Museum Exhibit Futures?
 7090 simulation with BEFLIX
implementation
 No known source to BEFLIX exists?
 7090 simulation is boring
 7090 real experience was physical
 VR exhibit?
 BEFLIX IDE
 Open source IDE to explore BEFLIX programs
 Evolve BEFLIX to a GPU oriented language
 Produce procedural moves in real-time

BEFLIX

  • 1.
    Richard Thomson Director, ComputerGraphics Museum @CGMuseum http://ComputerGraphicsMuseum.org info@ComputerGraphicsMuseum.org
  • 2.
    BEFLIX First Publication "AComputer Technique for Producing Animated Movies", Kenneth C. Knowlton AFIPS Conference Proceedings 25 (Spring Joint Computer Conference 1964)
  • 3.
    Hardware Environment  IBM7090 computer  Card keypunch  Card reader  Line printer  Magnetic tape drive  Disc drive  Stromberg-Carlson 4020 microfilm recorder
  • 4.
    IBM 7090 Computer IBM's first transistor based mainframe  First install November, 1959  Typical cost $2.9 million in 1960  Evolution of IBM 709 vacuum tube mainframe  Created for scientific/engineering markets  NASA: Mercury, Gemini and Apollo  JPL: Space Flight Operations Facility  American Airlines: SABRE
  • 5.
    IBM 7090 Computer 3 index registers  227 instructions  single-precision floating-point (36-bits)  36-bit words  32,768 words of core memory  2.18 µs memory cycle time  4.36 µs floating-point add time  4.36-30.53 µs floating-point multiply time
  • 6.
    IBM 7090 CPUand Memory
  • 7.
  • 8.
  • 9.
  • 10.
    Stromberg-Carlson 4020 Microfilm Recorder Magtape drive for input  Charactron tube for creating image  16mm or 35mm film camera  Character beam can be defocused  Draw grayscale pixels as character blobs
  • 11.
  • 12.
    Language  BEFLIX isan Embedded DSL  Embedded ○ Embedded in another language ○ Hosted in FORTRAN II environment ○ Uses FAP (FORTRAN II Assembly Program) macro language constructs  Domain-Specific Language ○ Represent concepts from the problem domain directly
  • 13.
    Programming Model  Memoryorganized into surfaces  Coarse resolution: 126x92  Fine resolution: 252x184  3 bits/pixel  12 pixels/word  Enough memory to hold 2 fine resolution frames
  • 14.
    Fine Surface Designators Fineresolution alternatives: AA 252x184 BB 252x184 CC 252x368 VV 252x368
  • 15.
    Coarse Surface Designators Coarseresolution alternatives: WW 126x92 XX 126x92 YY 126x92 ZZ 126x92 PP 252x92 OO 378x92 FF 504x92 PP or WW, XX OO or WW, XX, YY FF or WW, XX, YY, ZZ
  • 16.
    Coarse Surface Designators Coarseresolution alternatives: WW 126x92 XX 126x92 YY 126x92 ZZ 126x92 TT or YY, ZZ SS or XX, YY, ZZ EE or WW, XX, YY, ZZ EE or AA TT 126x184 SS 126x276 EE 126x368
  • 17.
    Scanners  Scanners arenamed A...Z  Scanners live on a surface  Scanners have:  A coordinate within the surface  A value read from the surface  Manipulate a surface by conditionally performing operations on a scanner or between two scanners
  • 18.
    Low Level Operations Place a scanner at a location on a surface  PLACE sc, surf, x, y  Conditionally perform some operations and jump  IFxxx (c1)...(cN)T(o1)...(oM)label  Evaluate each condition c1...cN  Combine them according to logical predicate xxx  If true, perform operations o1...oM  Optionally jump to label
  • 19.
    Low Level OperationExample IFANY (B,R,10)(B,A,C)(A,E,7)T(A,T,B)(A,U,2)(A,W,3)LOC5 If any of the following are true:  scanner B is Right of x=10  scanner B is Above scanner C  scanner A is sitting on a number Equal to 7 Then the following operations are performed:  scanner A moves To the same surface and pixel as scanner B  scanner A moves Up 2 pixels  scanner A Writes the number 3 to its pixel Then control jumps to the label LOC5 in the program.
  • 20.
    Scanner Conditions  Conditionsare of the form (scnr,rel,quant)  scnr name of the scanner to be tested  rel relation between scanner and quant  quant can be a number or another scanner
  • 21.
    Scanner Comparison Relations  Comparescanner position to a value  Compare positions of two scanners  Compare scanner pixel to a value  Compare pixel between scanners
  • 22.
    Scanner Move Operations Move to absolute X or Y coordinate  Move relative along X or Y axis  Move to surface and position of other scanner  Move to X or Y coordinate of another scanner without changing surfaces  Move one square based other scanner's pixel  Scanners wrap around surface boundaries in a helix
  • 23.
    Scanner Pixel Operations Write pixel from value or other scanner's pixel  Write complement of other scanner's pixel  Exchange pixels between two scanners  +, -, *, / between two scanners (modulo 8)  bitwise OR and AND between two scanners
  • 24.
    Static and DynamicOperations  Static operations happen immediately  Dynamic operations occur over multiple frames
  • 25.
    High Level Operations Output control and temporary storage of pictures  Drawing primitives (line, arc, polyline, text)  BitBlt like operations on rectangular areas  Dynamic operations on rectangular areas  Macros using low-level operations
  • 26.
    Output Operations CAMERA n FRAMESn FILTER n TABLE n,c0,...,c7 AIM sc SAMPLE n LINES n FILM NOFILM UNTIL n,label RESET n COARSE FINE STORE surf,where RETREV surf,where
  • 27.
    Drawing Primitives LINE sc1,sc2,mode,ns,width,speed ARCsc1,ctr,d,mode,ns,w,speed,t1,w1,t2,q2 TRACE lb1,len,sc,orient,mode,ns,width,speed TYPE lb2,sc,size,hspace,vspace,mode,ns lb1 OCT n,(curve to be drawn by TRACE) lb2 BCI n,(text to be drawn by TYPE)
  • 28.
    Instant Rectangle Operations PAINTscTR,scBL,mode,ns BORDER scTR,scBL,width,mode,ns SHIFT scTR,scBL,dir,amount ROTATE scTR,scBL,dir,amount[,n] EXPAND scTR,scBL,dir,rep1,rep2 SQUASH scTR,scBL,dir,del,kp COPY scTR,scBL,mode,orient,sc3,sc4[,n] CENTER scTR,scBL GROW scTR,scBL,ns1,ns2,ns3,label SMOOTH scTR,scBL
  • 29.
    Dynamic Rectangle Operations DISOLV scTR,scBL,sc3,pat ZOOMINscTR,scBL,fctr REDUCE scTR,scBL,fctr STRECH scTR,scBL,dir,fctr PRESS scTR,scBL,dir,fctr
  • 30.
    The Master Film The SC2040 produces a master film  Duplicate frames are output only once  A repeat count is written above the frame  Repeated frames are duplicated by optical printing when the film is developed
  • 31.
    Workflow 1. Develop programin BEFLIX 2. Preview output samples on printout 3. Run program to create magtape 4. Load magtape into microfilm recorder 5. Produce master film 6. Optical print/expand to create work print
  • 32.
    Stan VanDerBeek Artist StanVanDerBeek collaborated with Ken Knowlton on a series of films:  Poem Field No. 1 (1965)  Poem Field No. 2 (1966)  Poem Field No. 3 (1967)  Poem Field No. 4 (no date)  Poem Field No. 5 (1967)  Poem Field No. 6 (no date)  Poem Field No. 7 (1971)  Poem Field No. 8 (no date)  Collido-Oscope (1966) (VanDerBeek, Knowlton and Bosche)  Man and His World, 1967 (Shown at Expo '67)
  • 33.
    Poem Field No.2 View the Video
  • 34.
    Looking Back atBEFLIX  BEFLIX is considered an "esoteric" programming language  Its unique syntax depends on the macro facilities of FAP  Later FORTRAN IV version resembled more traditional subroutine library  First(?) language for procedural animation
  • 35.
    Museum Exhibit Futures? 7090 simulation with BEFLIX implementation  No known source to BEFLIX exists?  7090 simulation is boring  7090 real experience was physical  VR exhibit?  BEFLIX IDE  Open source IDE to explore BEFLIX programs  Evolve BEFLIX to a GPU oriented language  Produce procedural moves in real-time