The Meta-Machine Code Tool Implemented in a Spreadsheet: Partial Little Man Computer Targeting I've played with GNU SES, and by now become bored. Intended for release last month, I now share the simple minor mode I've written which attempts to turn GNU SES into something vaguely resembling that Little Man Computer targeting I'd written back in 2020. Nicely, the code is very small; nicely not, there's no support for names and the code has minor flaws I'm likely not going to bother correcting. To use this program, load the spreadsheet normally through find-file, and then enter the minor mode. The cell model here is very simple, and I found a good way to recreate the MMC's interface using the spreadsheet: Each column has a special printer function, and columns holding repeated data draw from a master cell; the first cell is hidden by the minor mode with buffer narrowing and contains initial data that shouldn't be changed, allowing uniform cells for the remainder of the spreadsheet. I made the spreadsheet by constructing the first two cells, and then repeating that second cell ninety-nine times. Column A increments the value of the previous row's column A; column B holds the instruction itself; column C holds the label, which is unused; and column D repeats column B, but with a printer function which displays the integer as an instruction. All added commands operate only on column B. The first cell also acts as a header by using cell-specific printer functions, and is the reason for the default column widths. Another nicety would be defining menu bindings to allow easy exploration and mouse control, but this hasn't been done. Rather than attempt to mimic the MMC's interface very closely in all respects, the instruction-generating functions defined here simply use the mode line. The following interactive functions are defined, all but that last of which create the instructions: mmc-ses-lmc-1xx mmc-ses-lmc-2xx mmc-ses-lmc-3xx mmc-ses-lmc-5xx mmc-ses-lmc-6xx mmc-ses-lmc-7xx mmc-ses-lmc-8xx mmc-ses-lmc-901 mmc-ses-lmc-902 mmc-ses-lmc-minor-mode The printer function for column D is mmc-ses-lmc-disassemble, which functions similarly to any other disassembling function in those other MMC targetings I've written, except the code is self-contained due to its simple nature. A very simple macro was defined for the instruction-generating functions. As for problems, enabling the minor mode and then altering the first cell acts erroneously the first time, likely due to some manner of caching done by GNU SES. Most of the keyboard is free, but I was unable to override key bindings already used by GNU SES, and cared too little to figure out why. My most pressing problem was finding no good way to manipulate and persist the names in this targeting, making it weak and rather useless. The GNU SES documentation specifies that the spreadsheet is able to update those names adhering to its naming convention for cells only; another spreadsheet intended solely to store names would be best here, likely, but appears to be outside of the scope of GNU SES. The following Elisp code suffices to collect the entered program as a series of integers, in a list: (ses-range B2 B101) It's clear to me that GNU SES will never work for my purposes, it was clear to me beforehand, though I have a better idea of what I want after toying with it. Ideally, a spreadsheet program would draw a line between using and altering spreadsheets; it's not ideal to so easily place the spreadsheet in some invalid state. Ideally, columns, rows, and cells could have specified types, further cementing their proper use. Ideally, cells and collections thereof could have arbitrary names. None of these properties exist in GNU SES, and I'm concerned that I'll be led to implementing a spreadsheet system myself, defeating my purpose, or find myself drawn to better but proprietary systems for my purpose. I'm not certain what to do, and I once again grow bored at the prospect of doing anything with this. .