BEFLIX: Difference between revisions
Expand article based on the original paper |
KMaster888 (talk | contribs) Undid revision 1261259794 by KMaster888 (talk) |
||
(10 intermediate revisions by 10 users not shown) | |||
Line 1: | Line 1: | ||
'''BEFLIX''' is the name of the first [[Domain- |
{{Short description|Programming language for animation}} |
||
'''BEFLIX''' is the name of the first [[Domain-specific language#Usage patterns|embedded domain-specific language]] for [[computer animation]], invented by [[Ken Knowlton]] at [[Bell Labs]] in 1963.<ref>{{cite journal |
|||
|last=Knowlton |
|last=Knowlton |
||
|first=Kenneth C. |
|first=Kenneth C. |
||
Line 6: | Line 7: | ||
|journal=AFIPS Conference Proceedings |
|journal=AFIPS Conference Proceedings |
||
|volume=25 |
|volume=25 |
||
⚫ | |||
|issue= |
|||
}}</ref> |
|||
⚫ | |||
|doi= |
|||
|access-date= }}</ref> |
|||
The name derives from a combination of ''Bell Flicks''. |
The name derives from a combination of ''Bell Flicks''. |
||
Ken Knowlton used BEFLIX to create animated films for educational and engineering purposes. |
Ken Knowlton used BEFLIX to create animated films for educational and engineering purposes. |
||
He also collaborated with the artist [[Stan Vanderbeek]] at Bell Labs to create a series of computer-animated films called ''Poemfields'' between 1966 and 1969. |
He also collaborated with the artist [[Stan Vanderbeek]] at Bell Labs to create a series of computer-animated films called ''Poemfields'' between 1966 and 1969. |
||
BEFLIX was developed on the [[IBM 7090]] mainframe computer using a [[Stromberg-Carlson# |
BEFLIX was developed on the [[IBM 7090]] mainframe computer using a [[Stromberg-Carlson#SC4020 Microfilm Printer .26 Plotter|Stromberg-Carlson SC4020 microfilm recorder]] for output. The programming environment targeted by BEFLIX consisted of a [[FORTRAN II]] implementation with [[IBM 700/7000 series#FORTRAN assembly program|FORTRAN II Assembly Program]] (FAP) macros. The first version of BEFLIX was implemented through the FAP macro facility. A later version targeting [[Fortran#FORTRAN IV|FORTRAN IV]] resembled a more traditional subroutine library and lost some of the unique flavor to the language. |
||
The programming environment targeted by BEFLIX consisted of a [[FORTRAN_II|FORTRAN II]] implementation with |
|||
[[IBM_700/7000_series#FORTRAN_assembly_program|FORTRAN II Assembly Program]] (FAP) macros. The first version of BEFLIX |
|||
was implemented through the FAP macro facility. A later version targeting [[Fortran#FORTRAN_IV|FORTRAN IV]] resembled |
|||
a more traditional subroutine library and lost some of the unique flavor to the language. |
|||
Pixels are produced by writing characters to the screen of the microfilm recorder with a defocused electron beam. The SC4020 used a [[charactron]] tube to expose microfilm. In BEFLIX, the electron beam is defocused to draw pixels as blurred character shapes. Characters are selected to create a range of grayscale values for pixels. The microfilm recorder is not connected directly to the 7090, but communicates through magnetic tape. BEFLIX writes the magnetic tape output on the 7090 and the film recorder reads the tape to create the film output. BEFLIX also supports a preview mode where selected frames of the output are written to the line printer. |
|||
Pixels are produced by writing characters to the screen of the microfilm recorder with a defocused electron beam. |
|||
The SC2040 used a [[Charactron|charactron]] tube to expose microfilm. In BEFLIX, the electron beam is defocused to |
|||
draw pixels as blurred character shapes. Characters are selected to create a range of grayscale values for pixels. |
|||
The microfilm recorder is not connected directly to the 7090, but communicates through magnetic tape. BEFLIX writes |
|||
the magnetic tape output on the 7090 and the film recorder reads the tape to create the film output. BEFLIX also |
|||
supports a preview mode where selected frames of the output are written to the line printer. |
|||
==Programming Model== |
==Programming Model== |
||
The memory of the 7090 is organized into rectangular surfaces of pixels. |
The memory of the 7090 is organized into rectangular surfaces of pixels. |
||
The surfaces are designated by a two |
The surfaces are designated by a two-letter code that identifies a particular surface geometry. BEFLIX supports two resolutions for output frames: fine (252x184) and coarse (126x92). The 7090 has enough memory to support two fine resolution frames. The surface organization in BEFLIX allows for different geometric combinations of smaller surfaces within available memory. BEFLIX pixels store values 0-7, allowing them to be packed 12 to a 36-bit word of the 7090. |
||
BEFLIX supports two resolutions for output frames: fine (252x184) and coarse (126x92). |
|||
The 7090 has enough memory to support two fine resolution frames. The surface organization in |
|||
BEFLIX allows for different geoemtric combinations of smaller surfaces within available memory. |
|||
BEFLIX pixels store values 0-7, allowing them to be packed 12 to a 36-bit word of the 7090. |
|||
BEFLIX provides low-level operations and high-level operations. For low-level operations, BEFLIX |
BEFLIX provides low-level operations and high-level operations. For low-level operations, BEFLIX provides 26 scanners named A through Z. A scanner has a value and a coordinate position on a surface. Low-level statements in BEFLIX apply operations to a scanner based on a set of conditions |
||
provides 26 scanners named A through Z. A scanner has a value and a coordinate position on a |
|||
surface. Low-level statements in BEFLIX apply operations to a scanner based on a set of conditions |
|||
being met. An example low-level operation is: |
being met. An example low-level operation is: |
||
Line 52: | Line 36: | ||
and then control is passed to the statement with the label <code>LOC5</code>. |
and then control is passed to the statement with the label <code>LOC5</code>. |
||
In this way, complicated patterns can be programmed into the behavior of the scanners |
In this way, complicated patterns can be programmed into the behavior of the scanners as the film output proceeds. All scanner operations are immediate operations and update the surfaces without any frame output in between operations. |
||
as the film output proceeds. All scanner operations are immediate operations and |
|||
update the surfaces without any frame output in between operations. |
|||
High-level operations in BEFLIX fall roughly into four categories: |
High-level operations in BEFLIX fall roughly into four categories: |
||
Line 70: | Line 52: | ||
* [http://manx-docs.org/details.php/19,8267 IBM 7090/7094 Programming Systems FORTRAN II Assembly Program (FAP)] |
* [http://manx-docs.org/details.php/19,8267 IBM 7090/7094 Programming Systems FORTRAN II Assembly Program (FAP)] |
||
* [http://www.slideshare.net/LegalizeAdulthood/beflix BEFLIX Presentation] |
* [http://www.slideshare.net/LegalizeAdulthood/beflix BEFLIX Presentation] |
||
* [ |
* [https://www.youtube.com/watch?v=_Lmi6cmrq0w How Computer-Generated Animations Were Made, Circa 1964 - AT&T Archives] |
||
* [ |
* [https://www.youtube.com/watch?v=V4agEv3Nkcs Visualing Poetry With 1960s Computer Graphics - AT&T Archives] |
||
==References== |
==References== |
||
Line 77: | Line 59: | ||
[[Category:Domain-specific programming languages]] |
[[Category:Domain-specific programming languages]] |
||
{{animation-stub}} |
|||
{{compu-lang-stub}} |
Latest revision as of 03:08, 5 December 2024
BEFLIX is the name of the first embedded domain-specific language for computer animation, invented by Ken Knowlton at Bell Labs in 1963.[1] The name derives from a combination of Bell Flicks. Ken Knowlton used BEFLIX to create animated films for educational and engineering purposes. He also collaborated with the artist Stan Vanderbeek at Bell Labs to create a series of computer-animated films called Poemfields between 1966 and 1969.
BEFLIX was developed on the IBM 7090 mainframe computer using a Stromberg-Carlson SC4020 microfilm recorder for output. The programming environment targeted by BEFLIX consisted of a FORTRAN II implementation with FORTRAN II Assembly Program (FAP) macros. The first version of BEFLIX was implemented through the FAP macro facility. A later version targeting FORTRAN IV resembled a more traditional subroutine library and lost some of the unique flavor to the language.
Pixels are produced by writing characters to the screen of the microfilm recorder with a defocused electron beam. The SC4020 used a charactron tube to expose microfilm. In BEFLIX, the electron beam is defocused to draw pixels as blurred character shapes. Characters are selected to create a range of grayscale values for pixels. The microfilm recorder is not connected directly to the 7090, but communicates through magnetic tape. BEFLIX writes the magnetic tape output on the 7090 and the film recorder reads the tape to create the film output. BEFLIX also supports a preview mode where selected frames of the output are written to the line printer.
Programming Model
[edit]The memory of the 7090 is organized into rectangular surfaces of pixels. The surfaces are designated by a two-letter code that identifies a particular surface geometry. BEFLIX supports two resolutions for output frames: fine (252x184) and coarse (126x92). The 7090 has enough memory to support two fine resolution frames. The surface organization in BEFLIX allows for different geometric combinations of smaller surfaces within available memory. BEFLIX pixels store values 0-7, allowing them to be packed 12 to a 36-bit word of the 7090.
BEFLIX provides low-level operations and high-level operations. For low-level operations, BEFLIX provides 26 scanners named A through Z. A scanner has a value and a coordinate position on a surface. Low-level statements in BEFLIX apply operations to a scanner based on a set of conditions being met. An example low-level operation is:
IFANY (B,R,10)(B,A,C)(A,E,7)T(A,T,B)(A,U,2)(A,W,3)LOC5
Which says that if any of the following conditions are true:
- scanner B is to the right of x=10
- scanner B is above scanner C
- the surface value at scanner A is equal to 7
then the following operations are performed:
- scanner A moves to the surface and position as scanner B
- scanner A moves up 2 rows
- scanner A writes the number 3 into the surface
and then control is passed to the statement with the label LOC5
.
In this way, complicated patterns can be programmed into the behavior of the scanners as the film output proceeds. All scanner operations are immediate operations and update the surfaces without any frame output in between operations.
High-level operations in BEFLIX fall roughly into four categories:
- control the output of pictures to the magnetic tape, storing and retrieving pictures on the disk drive
- rendering drawing primitives (line, arc, curve plot, and text)
- performing instantaneous operations on rectangular areas
- performing dynamic operations on rectangular areas
Drawing primitives and dynamic rectangle operations can be performed incrementally over a series of output frames as a quick way to encode animations.
External links
[edit]- The History of Crossover Art
- IBM 7090/7094 Programming Systems FORTRAN II Assembly Program (FAP)
- BEFLIX Presentation
- How Computer-Generated Animations Were Made, Circa 1964 - AT&T Archives
- Visualing Poetry With 1960s Computer Graphics - AT&T Archives
References
[edit]- ^ Knowlton, Kenneth C. (Spring 1964). "A Computer Technique for Producing Animated Movies". AFIPS Conference Proceedings. 25: 67–87.