https://assembly.louve.systems/ LOUVESYSTEMS' ASSEMBLY V1.0.4 kkkkkkkkkkkkkkkkkkkk.. kk@@BBBBBBBBBBBB@@kk@@.. kk@@........kkQQ@@kkRRRR.. kk@@......kk@@MM@@gg...... .... kk@@....kk@@MM@@@@@@@@@@........ kk@@..kk@@MM@@@@@@BB@@..wwTT.. kk@@kk@@TT@@@@@@BB@@..wwTT.. kk@@@@ll@@@@@@@@@@..BB.... kk@@ll@@@@@@@@@@..nn...... kk@@@@@@@@@@@@..nn....nn.. kk@@@@@@@@@@@@kkkk..kk@@.. kk@@@@@@kk@@kkBB..jj@@@@.. kk@@@@QQQQQQQQ..@@@@@@@@.. ..MMMMMMMMMMMMMMMMMMMMMM.. .......................... e Y8b dP"8 dP"8 888'Y88 e e 888 88b, 888 Y88b Y8P d8b Y8b C8b Y C8b Y 888 ,'Y d8b d8b 888 88P' 888 Y88b Y d888b Y8b Y8b Y8b 888C8 e Y8b Y8b 888 8K 888 Y88b d888888888b b Y8D b Y8D 888 ",d d8b Y8b Y8b 888 88b, 888 ,d 888 d8888888b Y8b 8edP 8edP 888,d88 d888b Y8b Y8b 888 88P' 888,d88 888 Welcome to LouveSystems' Assembly! We're thrilled to have you here Assembly is a sandbox conception game, where you design small programs called delegates using a natural language. Your delegate is then released on the assembly, free to roam and tag along with other programs. You can just take a look at the assembly for now by clicking the button below, and write a little delegate whenever you feel ready to try it out! LET'S TAKE A PEEK >> INTRODUCTION Welcome to Assembly! Here's a little bit of help to get you started - there's a lot you can do, so we don't want to get you overwhelmed. We promise to keep this tutorial short and simple! If you're already an expert, click here to exit the tutorial. LET'S SEE ABOUT THAT >> Assembly is a game where you write small programs called delegates. Each delegate is made of a very few, simple instructions, executed from top to bottom, like you see on the right. And each of these instructions take exactly one slot in the assembly. -------- do something do something go back two places -------- -------- -------- -------- WHAT'S THE ASSEMBLY ? >> Think of the assembly as a long list of mostly empty cells, and that's where your delegate lives and does its things. That's what your delegate interacts with, that's where it lives. But that's also where other delegates live! And sharing space with them can yield unpredictable results... OKAY... >> But let's focus on your own delegate for now. How does it work? Assembly uses something called relative addressing, which means that each instruction is referred to by how far it is from the current instruction being read. It's a core concept of Assembly - that delegates are not tied to a particular place within it. -------- -------- write the number 1234 to +7 write the number 0000 to +6 do nothing write the number 5555 to -5 write the number 0000 to -6 go back five places -------- -------- -------- -------- What that means in practice, is that if your delegate understands " write this value, five cells from here", or "read the value three cells above". But it does not understand, "read the value at location 423315". THAT'S A BIT CONFUSING >> It's a bit confusing, but it's also very important! Each instruction occupying 1 slot of the assembly, you can guess the address of any other location simply by counting how many instructions are before or after it. Here's what address of each cell looks like, as the delegate is being ran. AddressInstruction 0000-------- 0000-------- 0000write the number 1234 to +7 0000write the number 0000 to +6 0000do nothing 0000write the number 5555 to -5 0000write the number 0000 to -6 0000go to -5 0000-------- 0000-------- 0000-------- 0000-------- Don't think too hard about it, you'll see it comes pretty naturally when we're gonna write your first delegate. WHAT'S A DELEGATE DO ? >> Delegates can do a lot of different things, so let's not get into too much detail here. Let's just say most of what they do is WRITING stuff, READING stuff, and JUMPING to different locations in the assembly. Write data somewhere Copy data from one place to another Jump 300 steps ahead to some foreign location Move data around the assembly But it's also important to mention what they cannot do: only a few instructions are valid for a delegate. Whenever it meets an invalid instruction, a number, some piece of data, something that it cannot execute - ka-boom! It crashes. Execute a number (what does it mean??) Execute any data (what should I do with it?) So no matter what you do, for your delegate to live a long and fruitful life, you should try to keep it on a track of valid instructions. LET'S GET TO IT >> So let's write your first delegate! We'll keep it very simple, so here's the idea: The delegate is going to * 1) Increment a value * 2) Write data somewhere in memory, at a place depending on that value * 3) Then start over again! We'll call that delegate pebbles. It's gonna drop a pebble every here and there in memory until it's filled. WHERE DO I START ? On your right >> Select a line anywhere, and write "data 10" 10 is the position where we'll place the first pebble, we need to store it somewhere. On your right >> Awesome! Now we got storage, we're gonna write the logic Three places above the data line you just wrote, add the following: "write 1 to the address given at +3" This will do exactly what it says: Write the number one, ten cells away from there. We're keeping two spaces between the write and the data to put the next instructions we'll need. On your right >> Almost there! On the line just beneath the write, add the following instruction: "add 2 to the value at +2" That will add 2 to your data statement we wrote earlier, increasing its value every time this instruction is executed. On your right >> And now for the final step! On the line between the add and the data instructions, put the following line: "go to -2" This will keep your delegate from executing data, which would crash it! Instead, it will go back up every time it executes this instruction, running the same instructions over and over. Congratulations! This introduction is coming to an end and your first delegate is running! You'll have to wait for a few more cycles before you can send it to the global assembly. Press the SPEED+ button if you don't want to wait! Once the [SEND TO ASSEMBLY > >] button is shining, click on it to exit the tutorial. Have fun playing Assembly HELP << VIEW ASSEMBLY DELEGATE INSTRUCTIONS DELEGATE NAME: [ ] X CLEAR [?] LOAD SAVE [?] LOAD AN EXAMPLE TRAIN DELEGATE >> LOCAL TRAINING ASSEMBLY << KILL SPEED++ SPEED-- SEND TO ASSEMBLY >> LOADING... WRITE A DELEGATE >> join the DISCORD! Testing & feedbacks norckan | laupetin | newin Development louve hurlante Inspired by Jones & Dewdney's Core War