A simple esolang interpreter
-
Sounds really interesting. Looking forward to try it out.
-
well when It's done I'll definitely let you know!
-
Added more commands. Now you can branch with B or b and return back to that point in the code where you branched and continue as is.
-
Ok, I think that will be enough for this Esolang now. With increase RAM/ROM capacity and larger screen buffer size. That should enable you guys to do whatever you like. As said above this will be my last upgrade to this language. Hope you guys have fun with it! :D
-
thanks! so much memory... endless possiblities -evil insane laughter-
-
@JMM161437 I've also changed the instruction operands. Now it's more easier to load and save to RAM, use RAM as a pointer, or with registers.
-
@LucasJG25 thats awesome! oh btw my Circuit Designer project I need help... should I simulate wire resistance and component overload if the voltage is too high on the power supply/ resistor value is too low to limit the current... also should I add a simulated AC power source or is that too much
-
@JMM161437 I think those are great ideas for your project. Plus, this could be a great way to teach electronics as well. So I'd say go for it!
-
good point @LucasJG25... might make it an educational type of project to learn at least the basics or electronics... thanks for your feedback!
-
The latest update is now live. Enjoy!!
-
So, I've been doing some reading on the 6502 assembly language and I'm thinking of adjusting the Esolang to enable labels to be used within the operands. I'm thinking that this will enable even more flexibility with the Esolang as I'm sure it's still difficult to create labels in the current version. Here is a BNF (Backus-Naur form) of the updated language and how it would work.
L -> <reg>, (<sym><num> | "*"<label>) C -> <reg>, (<sym><num> | "*"<label>) A -> <reg>, (<sym><num> | "*"<label>) a -> <reg>, (<sym><num> | "*"<label>) S -> <reg>, ("*"<label> | <sym><num>) J -> "*"<label> | <sym><num> j -> "*"<label> | <sym><num> g -> Get data from screen buffer--------------------------- P -> Display entire screen buffer | Imperative instruction p -> Acc => screenBuffer(reg_y * screenWidth + reg_x) | No operands for these | instructions. i -> input stream | R -> Return back to (B | b) | M -> switch modes | char | number ------------------------- B -> "*"<label> | <sym><num> b -> "*"<label> | <sym><num> Label Declaration: <label> "=" "$"<num> | @<label> <label> ::= ("a-z" | "A-Z")
-
UPDATE:
The labels are becoming more flexible. Lol, wow I just keep adding to this thing!Labels can now be assigned RAM addresses and be given names.
foo = $5; // This makes label foo become RAM[5] @example // This label is called an anonymous label since it is not assigned a RAM address and will instead use the current line number it resides on.
So instead of using #<number> all the time. You can now just give a RAM address a name. Say for example the RAM address for keyboard input 3999. You can put that into a label
Keyboard = $3999
Now you can use that label to load from input stream to the X register if you wanted
L X, Keyboard
-
Just did a little code test. Now this is looking like a real language. This is on the PC version by the way. Will port it to Fuze soon. Right now I need a break!!
//Test M; keyboard = $254; @loop L Acc, #0; i; L Acc, keyboard; C Acc, #0; J loop; P; C Acc, #10; J end; j loop; @end
-
I don’t really understand what this is or what it does exactly. Any vids of it in action?
-
@toxibunny i'll record it and post it up. Just need to make a few minor adjustments!
-
@toxibunny I've posted a GIF on the discord server in #off-topic
-
OK that's that. All that's left is to see if I can use this to make something. Just have to wait and see.