!@$%^&*()+=

From Esolang
Jump to navigation Jump to search
This article is not detailed enough and needs to be expanded. Please help us by adding some more information.

This is a language based on !@$%^&*()+.
Because the creator, User:Xyzzy, did not have much time (he's still in school), he only left us with a text file for us to parse.
Here's the text file. ALL OF IT.
top of stack is 1st on stack, then 2nd on stack, and so on...

NOTES:
In addition to the stack, an artificial memory is present. This behaves like normal memory except that each cell contains a number instead of a byte.
=========
~ bitwise not
` idk
! pops and output as number on stack
@ implementation dependent
# push zero onto stack
$ bitwise xor
% double top of stack
^ manipulate: pops a number, and pushes the nth item on stack (from the top) to top. if n is negative, pop the previously pushed stack element 
& bitwise and
* multiplication
( if top of stack is zero goto matching ). pops top of stack.
) if top of stack is nonzero goto maching (. pops top of stack.
- subtraction (2nd on stack minus 1st on stack)
_ increment
+ addition
= push 1 if top of stack is 0, 0 otherwise.
[ like ( but if nonzero
] like ) but if zero
\ exit from loop
{ push code pointer to stack
} pop and set code pointer to top of stack
| bitwise or
: pop [addr], then push value at [addr] (MEMORY)
; pop [number] then pop [addr], set [addr] to [number] (MEMORY)
*NOTE FOR : AND ;* if [addr] is out of bounds, then the program halts. DO NOT MESS UP YOUR POINTERS
" implementation dependent
' implementation dependent
< push 1 if top of stack is larger than 0, 0 otherwise.
> push 1 if top of stack is smaller than 0, 0 otherwise.
? pushes input as number onto stack
, pushes input as char onto stack
. pop and output as char
/ floored divison (2nd on stack divided by 1st on stack)

more notes

The point of this esolang is to make use of literally every symbol I could type on my keyboard lol --Xyzzy (talk) 12:24, 24 December 2024 (UTC)
How to get numbers:

numbers begin with #
use #_^+ to shift 0 into number and #_^+_ to shift 1 into the number
low enough numbers can use _ to slowly work your way up: #,#_,#__,#___,...
some people can also make good use of *.


useful operations:

dup: #_^
swap: ##__-^
rot: ##___-^
over: #__^
pop: #_^--