Presentation tools are feature-rich and assume the presentation exists before it is delivered. That assumption breaks the moment the presentation becomes an act of thinking. I started thinking about a presentations tool I would love to use and which semantics such a machine would have.
Things I want it to do:
- one mode only: live mode. One starts editing while already being in the presentation.
- it is possible to add or remove a slide.
- it is possible to enter one title, sometimes one subtitle, some text or one image.
- it is also possible to embed a program in a slide (which means that not only the presentation tool is a machine, the slide is also a machine).
- it is possible to decide to go to a different slide than the next one, both manually and depending on the embedded program execution.
- the tool environment has reflective properties too.
State model:
- Registers: PC (program counter), M (memory pointer), ACC (accumulator/data pointer)
- RAM (todo: spec)
- ROM: tool ROM, addressable slide ROMs for programmable slides
ISA:
- Arithmetics: ADD, SUB, MUL, DIV, MOD
- Memory: LDI (load immediate), LDA (load address), STI (store immediate), STA (store address)
- Jumps: JMP (jump), JZ (jump if 0), JNZ (jump if not 0)
- Misc: SYS (system calls
Conclusion: building specific presentation tool semantics in the machine is not needed. When looking at the chosen ISA, it becomes visible that the designed machine can be adopted to solve a wide range of problems which are not at all related to presentations. How the machine makes use of such an instructions set, how the memory is used to represent a programmable presentation tool and how the system calls are implemented, may define presentation semantic.