Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Richard Thomson
Director, Computer Graphics Museum
@CGMuseum
http://ComputerGraphicsMuseum.org
info@ComputerGraphicsMuseum...
BEFLIX First Publication
"A Computer Technique for
Producing Animated Movies",
Kenneth C. Knowlton
AFIPS Conference Procee...
Hardware Environment
 IBM 7090 computer
 Card keypunch
 Card reader
 Line printer
 Magnetic tape drive
 Disc drive
...
IBM 7090 Computer
 IBM's first transistor based mainframe
 First install November, 1959
 Typical cost $2.9 million in 1...
IBM 7090 Computer
 3 index registers
 227 instructions
 single-precision floating-point (36-bits)
 36-bit words
 32,7...
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 fi...
Stromberg-Carlson SC4020
Language
 BEFLIX is an Embedded DSL
 Embedded
○ Embedded in another language
○ Hosted in FORTRAN II environment
○ Uses F...
Programming Model
 Memory organized into surfaces
 Coarse resolution: 126x92
 Fine resolution: 252x184
 3 bits/pixel
...
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
...
Coarse Surface Designators
Coarse resolution alternatives:
WW
126x92
XX
126x92
YY
126x92
ZZ
126x92
TT or YY, ZZ
SS or XX, ...
Scanners
 Scanners are named A...Z
 Scanners live on a surface
 Scanners have:
 A coordinate within the surface
 A va...
Low Level Operations
 Place a scanner at a location on a surface
 PLACE sc, surf, x, y
 Conditionally perform some oper...
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:
 sca...
Scanner Conditions
 Conditions are of the form (scnr,rel,quant)
 scnr name of the scanner to be tested
 rel relation be...
Scanner Comparison
Relations
 Compare scanner position to a value
 Compare positions of two scanners
 Compare scanner p...
Scanner Move Operations
 Move to absolute X or Y coordinate
 Move relative along X or Y axis
 Move to surface and posit...
Scanner Pixel Operations
 Write pixel from value or other scanner's
pixel
 Write complement of other scanner's pixel
 E...
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)
...
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
C...
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...
Instant Rectangle Operations
PAINT scTR,scBL,mode,ns
BORDER scTR,scBL,width,mode,ns
SHIFT scTR,scBL,dir,amount
ROTATE scTR...
Dynamic Rectangle
Operations
DISOLV scTR,scBL,sc3,pat
ZOOMIN scTR,scBL,fctr
REDUCE scTR,scBL,fctr
STRECH scTR,scBL,dir,fct...
The Master Film
 The SC2040 produces a master film
 Duplicate frames are output only once
 A repeat count is written ab...
Workflow
1. Develop program in BEFLIX
2. Preview output samples on printout
3. Run program to create magtape
4. Load magta...
Stan VanDerBeek
Artist Stan VanDerBeek collaborated with Ken Knowlton on a
series of films:
 Poem Field No. 1 (1965)
 Po...
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
...
Museum Exhibit Futures?
 7090 simulation with BEFLIX
implementation
 No known source to BEFLIX exists?
 7090 simulation...
Upcoming SlideShare
Loading in …5
×

BEFLIX

527 views

Published on

BEFLIX is an embedded domain-specific language for generating computer animated films. BEFLIX was created by Ken Knowlton in 1963 for the IBM 7090 mainframe computer with a Stromberg-Carlson SC2040 microfilm recorder for output. Ken Knowlton created BEFLIX while working at Bell Laboratories and used it to make a number of artistic, educational and engineering films.

Published in: Software
  • Be the first to comment

BEFLIX

  1. 1. Richard Thomson Director, Computer Graphics Museum @CGMuseum http://ComputerGraphicsMuseum.org info@ComputerGraphicsMuseum.org
  2. 2. BEFLIX First Publication "A Computer Technique for Producing Animated Movies", Kenneth C. Knowlton AFIPS Conference Proceedings 25 (Spring Joint Computer Conference 1964)
  3. 3. Hardware Environment  IBM 7090 computer  Card keypunch  Card reader  Line printer  Magnetic tape drive  Disc drive  Stromberg-Carlson 4020 microfilm recorder
  4. 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. 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. 6. IBM 7090 CPU and Memory
  7. 7. IBM 7090
  8. 8. IBM 7090
  9. 9. IBM 7090
  10. 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. 11. Stromberg-Carlson SC4020
  12. 12. 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
  13. 13. 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
  14. 14. Fine Surface Designators Fine resolution alternatives: AA 252x184 BB 252x184 CC 252x368 VV 252x368
  15. 15. 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
  16. 16. 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
  17. 17. 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
  18. 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. 19. 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.
  20. 20. 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
  21. 21. Scanner Comparison Relations  Compare scanner position to a value  Compare positions of two scanners  Compare scanner pixel to a value  Compare pixel between scanners
  22. 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. 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. 24. Static and Dynamic Operations  Static operations happen immediately  Dynamic operations occur over multiple frames
  25. 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. 26. 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
  27. 27. 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)
  28. 28. 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
  29. 29. 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
  30. 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. 31. 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
  32. 32. 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)
  33. 33. Poem Field No. 2 View the Video
  34. 34. 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
  35. 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

×