Commits

Anonymous committed 6b63089

Put license and README in separate files from definition.

  • Participants
  • Parent commits ccb34c8

Comments (0)

Files changed (3)

+Copyright (c)2005-2013 Chris Pressey, Cat's Eye Technologies.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+  1. Redistributions of source code must retain the above copyright
+     notices, this list of conditions and the following disclaimer.
+  2. Redistributions in binary form must reproduce the above copyright
+     notices, this list of conditions, and the following disclaimer in
+     the documentation and/or other materials provided with the
+     distribution.
+  3. Neither the names of the copyright holders nor the names of their
+     contributors may be used to endorse or promote products derived
+     from this software without specific prior written permission. 
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.

File README.markdown

+Braktif
+=======
+
+Braktif is an esoteric programming language very similar to
+_Brainfuck F_ and _Archway_, with a small but significant
+difference: Braktif is formulated as a 28-state cellular automaton.
+
+Braktif playfields are divided into a program on the right and
+a data storage area on the left.  (The data storage area can be
+considered to extend indefinately to the left.)  The program
+and data area are connected by a "bus".  On the bus sit the
+instruction pointer, which rests underneath the part of the
+program which is currently executing, and the data pointer, which
+rests underneath the part of the storage which is currently being
+addressed.  The instruction pointer and data pointer communicate
+by means of signals (from the IP to the DP) and replies (from the
+DP to the IP) sent along the bus.
+
+The instructions of a Braktif program resemble those of Smallfuck
+or Brainfuck F:
+
+    *   flip current data bit
+    >   advance DP one cell to the right
+    <   advance DP one cell to the left
+    [   if current data bit == 0, skip to matching ]
+    ]   skip back to matching [
+
+The structure of Braktif programs resembles that of Archway.  Each
+nested loop must be raised up one level.  In addition, extra space
+must be left after `[` instructions, and at least one non-`[]`
+instruction must occur after a `]` instruction, so that signals have
+sufficient space in which to propagate.
+
+The data storage area of a Braktif playfield resembles the tape of
+a Brainfuck F program (or a Smallfuck program, if an arbitrary limit
+is imposed on it) except that it is bounded on the *right*, not the
+left.
+
+The final result of all this is that the following Brainfuck F
+program translates to the following Braktif program (the `...`
+indicates the quiescent repeating pattern extending off to infinity):
+
+Brainfuck F:
+
+    +[>+]
+
+Braktif:
+                          <*
+    ... 00000000000000 *[---]
+    ... -------------d-i-   --
+
+So... why Braktif?
+
+- eliminates "spooky action at a distance" from the Brainfuck model:
+  the communication between the code and the tape is made explicit
+  (and explicitly planar, FWIW WRT the wire-crossing problem.)
+- horribly inefficient because of this.  Flipping the _n_'th data cell
+  from the _m_'th instruction of the program is now an O(_n_+_m_)
+  operation.  What fun!
+- makes a passable "poor man's visual debugger" for Brainfuck F.
+- makes experimenting with concurrent models easily.  For example it
+  might be feasible to add a few states what would act as a simple
+  mutex so that two different programs could share one data store.
+
+Finally, I do not claim that this is the most efficient formulation
+imaginable... there is certainly room for optimization.  For
+example, half of the `Tool` states could probably be done away with
+entirely if the signals were to transition themselves directly into
+responses.  But a minimum of states is not the real goal (otherwise
+one could just settle for John Conway's Game of Life and be done
+with it,) and the `Tool` states lend a certain straightforwardness.

File src/braktif.alp

 /*
  * The Braktif Cellular Automaton
- * June 2005, Chris Pressey
- * BSD License added May 3 2007
- */
-
-/*
- * Copyright (c)2007 Chris Pressey, Cat's Eye Technologies.
- * All rights reserved.
+ * A brainfuck-like programming language in a 28-state cellular automaton.
+ * Covered under a BSD-style license; see LICENSE for more information.
  *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   1. Redistributions of source code must retain the above copyright
- *      notices, this list of conditions and the following disclaimer.
- *   2. Redistributions in binary form must reproduce the above copyright
- *      notices, this list of conditions, and the following disclaimer in
- *      the documentation and/or other materials provided with the
- *      distribution.
- *   3. Neither the names of the copyright holders nor the names of their
- *      contributors may be used to endorse or promote products derived
- *      from this software without specific prior written permission. 
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
- * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
+ * June 2005: original design and definition of the Braktif CA.
+ * May 3 2007: added BSD license.
  */
  
-/*
- * Braktif is an esoteric programming language very similar to
- * 'Brainfuck F' and 'Archway', with a small but significant
- * difference: Braktif is formulated as a 28-state cellular automaton.
- *
- * Braktif playfields are divided into a program on the right and
- * a data storage area on the left.  (The data storage area can be
- * considered to extend indefinately to the left.)  The program
- * and data area are connected by a 'bus'.  On the bus sit the
- * instruction pointer, which rests underneath the part of the
- * program which is currently executing, and the data pointer, which
- * rests underneath the part of the storage which is currently being
- * addressed.  The instruction pointer and data pointer communicate
- * by means of signals (from the IP to the DP) and replies (from the
- * DP to the IP) sent along the bus.
- *
- * The instructions of a Braktif program resemble those of Smallfuck
- * or Brainfuck F:
- *
- *   *   flip current data bit
- *   >   advance DP one cell to the right
- *   <   advance DP one cell to the left
- *   [   if current data bit == 0, skip to matching ]
- *   ]   skip back to matching [
- *
- * The structure of Braktif programs resembles that of Archway.  Each
- * nested loop must be raised up one level.  In addition, extra space
- * must be left after [ instructions, and at least one non-[]
- * instruction must occur after a ] instruction, so that signals have
- * sufficient space in which to propagate.
- *
- * The data storage area of a Braktif playfield resembles the tape of
- * a Brainfuck F program (or a Smallfuck program, if an arbitrary limit
- * is imposed on it) except that it is bounded on the *right*, not the
- * left.
- *
- * The final result of all this is that the following Brainfuck F
- * program translates to the following Braktif program (the '...'
- * indicates the quiescent repeating pattern extending off to infinity):
- *
- * Brainfuck F:           +[>+]
- *
- * Braktif:
- *                           <*
- *     ... 00000000000000 *[---]
- *     ... -------------d-i-   --
- *
- * So... why Braktif?
- *
- * - eliminates 'spooky action at a distance' from the Brainfuck model:
- *   the communication between the code and the tape is made explicit
- *   (and explicitly planar, FWIW WRT the wire-crossing problem.)
- * - horribly inefficient because of this.  Flipping the n'th data cell
- *   from the m'th instruction of the program is now an O(n+m) operation.
- *   What fun!
- * - makes a passable "poor man's visual debugger" for Brainfuck F.
- * - makes experimenting with concurrent models easily.  For example it
- *   might be feasible to add a few states what would act as a simple
- *   mutex so that two different programs could share one data store.
- *
- * Finally, I do not claim that this is the most efficient formulation
- * imaginable... there is certainly room for optimization.  For
- * example, half of the 'Tool' states could probably be done away with
- * entirely if the signals were to transition themselves directly into
- * responses.  But a minimum of states is not the real goal (otherwise
- * one could just settle for John Conway's Game of Life and be done
- * with it,) and the 'Tool' states lend a certain straightforwardness.
- */
-
 /* -------------------- Transmission Media --------------------- */
 
 state Space	" "