Add 0815 to yacc shaving and first meme description. - brcon2024-hackathons - Bitreichcon 2024 Hackathons
 (HTM) git clone git://bitreich.org/brcon2024-hackathons git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/brcon2024-hackathons
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) Tags
       ---
 (DIR) commit 99a24579afb492d678361f389b7d4ed42afa3c47
 (DIR) parent fe1953cc524f2263d68e4bd294c5c97364270469
 (HTM) Author: Christoph Lohmann <20h@r-36.net>
       Date:   Sat, 15 Jun 2024 13:31:25 +0200
       
       Add 0815 to yacc shaving and first meme description.
       
       Diffstat:
         A meme/description.md                 |       6 ++++++
         A yacc-shaving/0815/0815.txt          |     167 +++++++++++++++++++++++++++++++
       
       2 files changed, 173 insertions(+), 0 deletions(-)
       ---
 (DIR) diff --git a/meme/description.md b/meme/description.md
       @@ -0,0 +1,6 @@
       +# Meme Hackathon
       +
       +## txt memes to image
       +* Make it possible to for example loop txt images.
       +        * Somehow transform txt to image and then reuse that.
       +
 (DIR) diff --git a/yacc-shaving/0815/0815.txt b/yacc-shaving/0815/0815.txt
       @@ -0,0 +1,167 @@
       +¤0815
       +
       +0815 - Language details
       +
       +0815 is based around a queue and 3 registers. It understands
       +hexadecimals only, so every numeric input and output are in
       +hexadecimals. It also ignores everything that is not one of its
       +instructions, for that matter: everything that is not an instruction
       +is a comment.
       +
       +Registers
       +
       +0815 has 3 signed integers 64 bit wide registers: X, Y, and Z. All
       +three are initialized with 0. X is a write only register and Z is a
       +read only register. Y is a helper register and cannot be accessed by
       +the programmer.
       +
       +Parameters
       +
       +Some of 0815 instructions need parameters. All parameters must be
       +surrounded by colons, e.g.:3c:
       +Labels are also considered parameters; therefore they also need the
       +surrounding colons.
       +If a parameter is needed but any is found the instruction will simply
       +be ignored, no error message will be displayed.
       +
       +Jumps
       +
       +In 0815 you find 2 kinds of jumps: if Zero( #) or if not Zero( ^).
       +Jumps' labels can contain any character, except the language reserved
       +symbols, e.g.:_loop: or:34:
       +If the label that the jump is pointed to is not found, the program
       +terminates.
       +
       +New lines
       +
       +Either ASCII 10 or 13 will be interpreted as a new line.
       +
       +Instructions
       +
       ++-----------+---------+---------------------------------------------------------------------------+
       +| | |<:2: will move'2' to register X |
       +| move | < |(parameter is mandatory) |
       +| | | |
       ++-----------+---------+---------------------------------------------------------------------------+
       +| | |swaps register X and Y |
       +| swap | x | |
       +| | | |
       ++-----------+---------+---------------------------------------------------------------------------+
       +| | |}:_loop: this creates a label called'_loop' |
       +| label |} |(parameter is mandatory) |
       +| | | |
       ++-----------+---------+---------------------------------------------------------------------------+
       +| input | |inputs a signed 64 bit integer and stores it into X |
       +| number | | |(hexadecimal base) |
       +| | | |
       ++-----------+---------+---------------------------------------------------------------------------+
       +| input | |inputs an ASCII char and stores it into X |
       +| ASCII |! | |
       +| | | |
       ++-----------+---------+---------------------------------------------------------------------------+
       +| print | |prints a signed 64 bit integer stored in Z |
       +| number | % |(hexadecimal base) |
       +| | | |
       ++-----------+---------+---------------------------------------------------------------------------+
       +| print | |prints an ASCII char stored in Z |
       +| ASCII | $ | |
       +| | | |
       ++-----------+---------+---------------------------------------------------------------------------+
       +| roll | |rolls all registers to the left: X <- Y <- Z |
       +| registers | ~ |after roll: X = Y, Y = Z and Z = X |
       +| left | | |
       ++-----------+---------+---------------------------------------------------------------------------+
       +| roll | |rolls all registers to the right: X -> Y -> Z |
       +| registers | = |after roll: X = Z, Y = X and Z = Y |
       +| right | | |
       ++-----------+---------+---------------------------------------------------------------------------+
       +| jump | |^:_loop: jumps to label _loop if Z is not 0 |
       +| if not | ^ |(parameter is mandatory) |
       +| zero | | |
       ++-----------+---------+---------------------------------------------------------------------------+
       +| jump | |#:_loop: jumps to label _loop if Z is 0 |
       +| if | # |(parameter is mandatory) |
       +| zero | | |
       ++-----------+---------+---------------------------------------------------------------------------+
       +
       +Queue instructions
       +
       ++-----------+---------+---------------------------------------------------------------------------+
       +| | |clears the queue |
       +| clear |? | |
       +| | | |
       ++-----------+---------+---------------------------------------------------------------------------+
       +| | |enqueue the number stored in Z |
       +| enqueue |> | |
       +| | | |
       ++-----------+---------+---------------------------------------------------------------------------+
       +| | |dequeue a number and stores it into X |
       +| dequeue | { | |
       +| | | |
       ++-----------+---------+---------------------------------------------------------------------------+
       +| roll | |rolls the queue to the left: the first value becomes the
       +last, the second |
       +| queue | @ |will be first and so on. If no parameter is found, it
       +will roll the queue |
       +| left | |once, otherwise rolls it parameter times. e.g. @:a: rolls
       +the queue ten |
       +| | |times to the left. |
       ++-----------+---------+---------------------------------------------------------------------------+
       +| roll | |the same as'@' just that the roll will go to the right: |
       +| queue | & |the last will be the first, the first will be the second
       +and so on. |
       +| right | | |
       ++-----------+---------+---------------------------------------------------------------------------+
       +
       +Arithmetic instructions
       +
       ++-----------+---------+---------------------------------------------------------------------------+
       +| | |Z = X + Y |
       +| add | + | |
       +| | | |
       ++-----------+---------+---------------------------------------------------------------------------+
       +| | |Z = X - Y |
       +| sub | - | |
       +| | | |
       ++-----------+---------+---------------------------------------------------------------------------+
       +| | |Z = X * Y |
       +| multipl. | * | |
       +| | | |
       ++-----------+---------+---------------------------------------------------------------------------+
       +| | |Z = X / Y |
       +| division | / |Y = rest |
       +| | | |
       ++-----------+---------+---------------------------------------------------------------------------+
       +
       +Interpreter
       +
       +I re-wrote my Brainfuck interpreter to run 0815 programs. This version
       +just runs (interprets) 0815 programs.
       +Probably, I'll write another version that can interpret both
       +languages, but for now, this will do.
       +There is another issue that I should mention: In this version, the
       +Queue will only show its first 2070 items.
       +0815 Interpreter
       +
       +0815 Programming examples
       +
       +• Hello World!
       +• Cat
       +• Odd or Even
       +• Binary representation of an integer
       +• Factorial sequence (0 - 14h)
       +• Arithmetic mean(averages)
       +• Fibonacci sequence (0 - a94fad42221f2702h)
       +• 99 bottles of beer (63h bottles of beer)
       +• Prime numbers
       +• Hailstone sequence
       +• Simple randomizer
       +• Sum of squares
       +• Truth machine - numeric
       +• Truth machine - ASCII
       +
       +Home | Esolang
       +
       +Last updated: Wednesday, 24 August 2016 - 01:00:00
       +©2004 - 2024 Paulo Jorente
       +Impressum | xhtml | css | cc