self.registers = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
instead is adding ".value" all over the place where it isn't necessary. I haven't actually tried this but it looks like dropping the Cell class entirely, putting that line in as the definition of registers, then s/.values//g ought to work, or very nearly work.PC, SP, and O are already defined as variables containing the index for that register, a fine way to do it.