Random

Like the title says

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.