We are currently working on new rules for what content should and shouldn't be allowed on this website, and are looking for feedback! See Esolang:2026 topicality proposal to view and give feedback on the current draft.

Calligulan Assembly

From Esolang
Jump to navigation Jump to search

Calligulan Assembly is an esoteric programming language created by User:ArthroStar11 that is written entirely in Roman Numerals

Data Structure and Syntax

  • Commands and arguments in Calligulan Assembly are represented as roman numerals separated by newlines
    • capital letters represent the numerals we all know and love
    • the values of lower case letters are multiplied by 1000
  • data structure
    • hold cell (32-bit unsigned integer)
    • boolean cell (boolean value, duh)
    • variables [array of 30000, 1-index] (32-bit unsigned integer)

Command List

  • I (Label)
    • defines a label for goto statements, 30000 labels may be used (I - xxx) as specified in <line + 1>
  • II (go to)
    • jumps to the corresponding label as specified in <line + 1> if the boolean cell is true
  • III (less than)
    • sets the boolean cell to true if <variable[line + 1]> is less than <variable[line + 2]> else false
  • IV (equal to)
    • sets the boolean cell to true if <variable[line + 1]> is equal to <variable[line + 2]> else false
  • V (not)
    • inverts the boolean cell
  • VI (input)
    • takes console input as an ASCII character if <line + 1> == I
    • takes console input as a number if <line + 1> == II
    • stored in hold cell
  • VII (output)
    • outputs an ASCII character to the console if <line + 1> == I
    • outputs a number to the console if <line + 1> == II
    • printed from hold cell
  • VIII (store)
    • stores the value of the hold cell into the variable specified in <line + 1>
  • IX (retrieve)
    • retrieves value of the variable specified in <line + 1> and stores it in the hold cell
  • X (add)
    • hold cell = <variable[line + 1]> + <variable[line + 2]>
  • XI (subtract)
    • hold cell = <variable[line + 1]> - <variable[line + 2]>
  • XII (constant)
    • stores the number specified by <line + 1> into the hold cell

sample programs

print "HI"

XII
LXXII
VII
I
XII
LXXIII
VII
I

truth machine

VI
II
VIII
I
XII
I
VIII
II
I
I
III
I
II
V
IX
I
VII
II
II
I

print 99 to 0

XII
XCIX
VIII
I
XII
I
VIII
II
I
I
III
I
II
V
IX
I
VII
II
XI
I
II
VIII
I
II
I

Implementation

ArthroStar11's Interpreter (C++ source)