beflix
TRANSCRIPT
BEFLIX First Publication
"A Computer Technique forProducing Animated Movies",Kenneth C. KnowltonAFIPS 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 4020Microfilm 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 DSLEmbedded
○ Embedded in another language○ Hosted in FORTRAN II environment○ Uses FAP (FORTRAN II Assembly Program) macro
language constructsDomain-Specific Language
○ Represent concepts from the problem domain directly
Programming Model
Memory organized into surfacesCoarse resolution: 126x92Fine resolution: 252x1843 bits/pixel12 pixels/wordEnough memory to hold 2 fine resolution frames
Fine Surface Designators
Fine resolution alternatives:
AA252x184
BB252x184
CC252x368
VV252x368
Coarse Surface Designators
Coarse resolution alternatives:
WW126x92
XX126x92
YY126x92
ZZ126x92
PP252x92
OO378x92
FF504x92
PP or WW, XXOO or WW, XX, YYFF or WW, XX, YY, ZZ
Coarse Surface Designators
Coarse resolution alternatives:
WW126x92
XX126x92
YY126x92
ZZ126x92
TT or YY, ZZSS or XX, YY, ZZEE or WW, XX, YY, ZZEE or AA
TT126x184
SS126x276
EE126x368
Scanners
Scanners are named A...Z Scanners live on a surface Scanners have:
A coordinate within the surfaceA 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 surfacePLACE sc, surf, x, y
Conditionally perform some operations and jumpIFxxx (c1)...(cN)T(o1)...(oM)labelEvaluate each condition c1...cNCombine them according to logical predicate xxxIf true, perform operations o1...oMOptionally 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 nFRAMES nFILTER nTABLE n,c0,...,c7AIM scSAMPLE nLINES nFILM
NOFILMUNTIL n,labelRESET nCOARSEFINESTORE surf,whereRETREV surf,where
Drawing Primitives
LINE sc1,sc2,mode,ns,width,speedARC sc1,ctr,d,mode,ns,w,speed,t1,w1,t2,q2TRACE lb1,len,sc,orient,mode,ns,width,speedTYPE lb2,sc,size,hspace,vspace,mode,nslb1 OCT n,(curve to be drawn by TRACE)lb2 BCI n,(text to be drawn by TYPE)
Instant Rectangle Operations
PAINT scTR,scBL,mode,nsBORDER scTR,scBL,width,mode,nsSHIFT scTR,scBL,dir,amountROTATE scTR,scBL,dir,amount[,n]EXPAND scTR,scBL,dir,rep1,rep2SQUASH scTR,scBL,dir,del,kpCOPY scTR,scBL,mode,orient,sc3,sc4[,n]CENTER scTR,scBLGROW scTR,scBL,ns1,ns2,ns3,labelSMOOTH scTR,scBL
Dynamic Rectangle Operations
DISOLV scTR,scBL,sc3,patZOOMIN scTR,scBL,fctrREDUCE scTR,scBL,fctrSTRECH scTR,scBL,dir,fctrPRESS 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 BEFLIX2. Preview output samples on printout3. Run program to create magtape4. Load magtape into microfilm recorder5. Produce master film6. 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 implementationNo known source to BEFLIX exists?7090 simulation is boring7090 real experience was physicalVR exhibit?
BEFLIX IDEOpen source IDE to explore BEFLIX programsEvolve BEFLIX to a GPU oriented languageProduce procedural moves in real-time