Halforth

From Esolang
Jump to navigation Jump to search

Halforth - is an esolang based on Forth by User:ChuckEsoteric08 in which every instruction takes half of a byte (a single hexadecimal digit)

Description

Language works on a stack as well as a tape to store data, which could contain both negative and positive integers

Commands (in hex)
Command Opcode Description
0-9 push x Push a single digit to the stack
A op pop operation, a and b and perform b<op>a (see below)
B if Pop a value, and start if nonzero block
C dup Duplicates top of the stack
D endif End if block
E define / ; Pop a value of and start a procedure with that name, which is finished by another E
F exec Pop a value and execute a procedure with that name

There is four I/O related procedures which could be executed with and F:

Procedure name Opcode Description
0 out Pop element from the stack and output it as a number
1 cout Pop element from the stack and output it as a character
2 in Input a number and push it to the stack
3 cin Input a character and push it's value in the stack

Instructuon A performs operation on the elements using a value of the element above them:

Value Opcode Operation
0 add Addition
1 sub Subtraction
2 mul Multiplication
3 div Division
4 less Less than
5 eq Equals
7 bigger Bigger than
8 swap Swap instruction, pushes b and then a
9 store Store value a at index b
10 load Push a back, and then load value from index b and push it to the stack