Skip to content

[WIP] The first Befunge-98 interpreter in Ruby (abandoned in favour of RASEL)

License

Notifications You must be signed in to change notification settings

Nakilon/befunge98

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status

There are a lot of Befunge-93 Ruby implementations in the wild but I don't see any Befunge-98.
So let it be the first one.

  • Befunge-93 ("Befunge-93 Documentation")
  • memory size and code format edits
  • Befunge-98 ("Funge-98 Final Specification")
    • operations
      • q -- quit
      • a-f -- push 10..15 onto stack
      • n -- clear all stacks
      • ', s -- fetch and store a char
      • ; -- comments
      • ], [, w, r, x -- change delta
      • j -- jump forward
      • k -- iterate
      • {, }, u -- push cells between TOSS and SOSS
      • (, ) -- we don't implement semantics
      • y -- what do 13th and 14th slots mean?
      • z -- can we just skip it?
    • y specification allows us to skip these
      • (execute) =
      • (filesystem) i, o
      • (concurrent) t
      • (3D) h, l, m
  • tests
    • bin
      • Hello, World!
      • failures, ^C, hanging, etc.
    • operations
      • Befunge-93
        • @
        • "
        • 0..9
        • $, :, \
        • #
        • >, <, ^, v, ?
        • +, -, *, /, %
        • |, _
        • ~, &, ,, .
        • !, `
        • p, g
      • Befunge-98
        • ~, &
        • q
        • a-f
        • n
        • ', s
        • ;
        • w
        • ], [, w, r, x
        • j
        • k
        • {, }, u
        • (, )
        • y
        • ...
  • Github Actions test
  • gemify
  • announce

This implementation in another language somewhat helped me: https://bitbucket.org/lifthrasiir/pyfunge/src/default/funge/languages/funge98.py