Scratchsembly is a 'low-level' programming language inspired by the simplicity of Assembly x64 and the accessibility of Python, made on Scratch! It uses basic commands to allow you to execute code! Scratchsembly now integrates DIfToS into the editor! Not sure how the typing system works? Try this! https://scratch.mit.edu/projects/889042600/ Code is first written to the #main.asm. When the [run] button is used, the code is then executed! Slight word of warning that it doesn't actually use real assembly code, rather a heavily modified version for easier understanding and less hassle. There is a hello world example pre-loaded onto the #main.asm. The guide for all functions is near the bottom if you need it INTERFACE COMMANDS [q] => stops the programme I'd bet most issues arise from DIfToS. If you are having issues, try https://scratch.mit.edu/projects/889042600/ . Here is the guide for all functions (BTW ignore [ ]'s and { }'s , they have no use in the actual code) : Firstly, [space] is used as the delimiter in the programme. If the value you are trying to move / initiate into has spaces, add quotation marks around it. E.g. { mov "Scratch Rocks!" svb }. Using quotation marks within quotation marks WILL break the system. 4 variables, [sva] [svb] [svc] and [svd] are already provided. Use them at your will! In this guide, [var]'s are signifying variables in the programme (native or created), [val]'s signify any string or number and [num]'s signify only numbers. If you see '0b', that means the variable or number has to be either 1 or 0. // comment => use "// " to denote a comment; a space is required in front of the double slashes _start => used to denote the start of the programme _end => used to denote the end of the programme, may cause glitches if not used mov [var/num1] [var2] => sets [var2] as [var/num1] print [val/var1] => prints [val/var1] onto the console init [var1] [val2]=> ONLY if [var1] is not created, it creates it and assigns it [val2] jmp [num1] => jumps to line [num1] of the code jg [var1] [num1] [num2] => jumps to [num2] if ( [var1]>[num1] ) #{jg} means jump (if) greater. {jl}, {jeg} and {jel} are easily derivable and follow the same format je and jne are slightly different; they follow the same format, but strings are allowed in the second argument. inc [var1] => change [var1] by 1 dec [var1] => change [var1] by -1 add [var/num1] [var/num2] [var3] => adds [var/num1 and [var/num2] together and puts the answer in [var3] #{add} means addition. {sub}, {mul}, {div} and {pwr} should be easily derivable and follow the same format. NOT [0bvar1] [var2] => takes the reverse of [0bvar1] and stores it in [var2] OR [0bvar1] [0bvar2] [var3] => If [0bvar1] or [0bvar2] is true ( that means if either equals 1 ), then 1 is put into [var3], else 0 is put into [var3] AND [0bvar1] [0bvar2] [var3] => If [0bvar1] and [0bvar2] is true ( that means if both equal 1 ), then 1 is put into [var3], else 0 is put into [var3] XOR [0bvar1] [0bvar2] [var3] => If [0bvar1] or [0bvar2] but not [0bvar1] and [0bvar2] is true ( that means if only one equals 1 ), then 1 is put into [var3], else 0 is put into [var3] inp [val1] [var2] => Requests for an input with subtext [val1], then moves the answer into [var2] randint [num1] [num2] [var3] => picks a random integer between [num1] and [num2] (both inclusive) and move it into [var3] slp [num1] => waits for [num1] milliseconds JOIN [val/var1] [val/var2] [var3] => joins [val/var1] and [val/var2] together, then moves it into [var3] FLR [val1] [var2] => Takes the floor of [val1] and moves it into [var2] RND [val1] [var2] => Rounds [val1] and moves it into [var2] sin [val1/var1] [var2] => Takes the sine of [val1/var1] and moves it into [var2] #{cos} and {tan} also follow the same format, taking the cosine and tangent respectively. Degrees is used as the unit of angle. factorial [val1] [var2] => takes the factorial of [val1] and moves it into [var2] SCREEN FUNCTIONS Now we're getting into how to utilise the graphical output! Firstly, the output works like this: 0,0 starts from the top left. For example, 9 0 is the top right and 9 9 is the bottom right. From here, [x] is the x value of the light you want to activate and [y] is y value. s.reset => turns off all lights; s.fill does the opposite. s.add [x] [y] => turns on specified light; s.sub [x] [y] does the exact opposite s.line [x1] [y1] [x2] [y2] => draws a line from the first specified position to the other That's all commands for now. I will likely be adding more, including for the graphical output. Have fun I guess? -CHANGELOG- 0.0.1--Released 0.0.2--New commands added 0.1.0--Graphical output and commands added 0.2.0--First integration of "DIfToS" into system 0.2.1--Full integration of "DIfToS" into system 0.2.2--Comment system added 0.2.3--Major Bug Squishing 0.2.3.1--Fixed {init} bug