This makes instructions that address the stack twice meaningful instead of confusing and useless.
ADD PEEK, POP should pop the top of the stack and add it to the second entry, but currently the
PEEK is evaluated before the
This makes writing functions that store extra variables or arguments on the stack easier.
POP isn't useful as an a value, and PUSH isn't useful as a b value, so they should be combined into one value, with postincrement and predecrement determined by whether they're in a/b.
A literal a value is not very useful, and having 2x more opcodes is very useful. bbbbbbaaaaaaoooo becomes bbbbbbaaaaaooooo
Shift the literal range from [0, 31] to [-1, 30].
Having -1 as a literal lets you useful one-word instructions like:
NEG X --> MUL X, -1
NOT X --> XOR X, -1
O and 0 are very easy to confuse, other special registers are two characters, and it doesn't always represent overflow.
Signed operations make maneuvers, targeting, and fixed-point trigonometry routines more efficient.
Signed operations are useful.
Supporting all the relations (<, >, <=, >=) will make assembly easier to write and read. Suggested mnemonics and effects:
0x11: IFB a, b - performs next instruction only if (a&b)!=0 (Bit set) 0x12: IFE a, b - performs next instruction only if a==b (Equal) 0x13: IFN a, b - performs next instruction only if a!=b (Not equal) 0x14: IFG a, b - performs next instruction only if a>b (signed) (Greater) 0x15: IFA a, b - performs next instruction only if a>b (unsigned) (Above) 0x16: IFL a, b - performs next instruction only if a<b (signed) (Less) 0x17: IFU a, b - performs next instruction only if a<b (unsigned) (Under)
As jecowa noted on reddit, you can't make full boxes with the current line drawing characters.
These 22 glyphs let you draw boxes:
Suggestions for extra 5 glyphs:
° (Degree) and ♠♥♦♣ (Card suits)
Note that the full block █ with fg color X is equivalent to space with bg X. Replace it with a dithered ▒ half-block.