Cellular automata and 2d languages may take input from code being insertedby interfacing with a user-built structure
Many of these languages do not have any other way to take input. By "code being inserted""interfacing", I mean additional structures being created by the user to interact with the existing code in a way that provides only the necessary information (such as some sort of serial representation of the inputted values) in a way that could feasibly be used by the user's program and controlled by another turing-complete automaton (so not in a tiny space in the middle of the program, or in an area that will be overwritten).