Redirect to demo programs: TBC
Me: SunVox is a small, fast, powerful and Turing complete modular synthesizer with pattern-based sequencer (tracker). It is a too...
Others: Wait... What did you say?
Me: SunVox is a small, fast, powerfull and Turing complete modular synthesizer...
Others: Wait, is SunVox really Turing complete?
Me: Alright, let me show you the largest and longest project I have ever done:
Behold, The VOXCOM 1610! The first computer ever achieved in SunVox!
Here is the summery of the computer:
Or watch it on Odysee
Spec:
- On the surface level, it is a massive project, containing 1500+ modules, which features a fully functional 16 Bit computer.
- 10 Hz Clock
- 16 Bit ISA, where 5 bits are used for opcode
- Expendable 16 Bit, word size, ROM and RAM, which is possible to expend up 64K words (128KB)
- 8 16 Bit general purpose registers
- 16 Bit ALU supports bitwise (left and right shift, byte swap, and nand), and mathematical (addition and negation(2's comp)) operation.
- 12 general I/O ports
-- Port 0: Unit Pulse (+128 DC)
-- Port 1: 16 Bit integer pulse
-- Port 2 - b: 16 bit registers
- Built in 6 x 8 displays.
-- Supports 50 characters
-- Support index write and clear all (Send both high and low byte with +127 DC (255))
To start the computer, you need to follow the steps:
1. Switch on the Reset Module at the bottom, to make sure that the program counter will be set to 0.
2. Switch on the Clock, located in the bottom right of the project.
3. Switch off the Reset Module again, to start the program and to enjoy the show!
I have prepared 3 programs for demo.
The First one is a display demo, it display my name and my computer name, like shown:
Code: Select all
--------
LOGICKIN
VOXCOM
1610
--------
Despite it slowness, bubble sort is one of the simplest sorting algorithm for computer.
All the algorithm do is to compare the adjacent element. If the adjacent element is smaller, the pair will be swapped.
The third program is the well known classic, Fibonacci sequence. The sequence continues by adding 2 previous numbers.
This program is complex, because it can process number up to 16 digits.
The register size is not enough to store the whole value, so I have borrowed the concept from java BigInteger, which stores the digits of a number separately.
To calculate a new number, the program adds the number digit by digit. If the current number is larger than 10, it will subtract the current digit by 10 and create a carry for the next digit.
After completed a new number, the program displays the number on the display and moves the new number to temp location, ready for the next calculation.
If you think three programs is not enough, you can build your own one!
Introducing The VOXCOM 1610 Assembler! This assembler can convert assembly into machine code, and it automatically write the machine code into SunVox! There is a built in tutorial to help you to write code into the SunVox, so you must follow the steps to properly compile your program. I will attach the assembly code for reference.
Despite being the first computer ever on SunVox, there are quite a few things I should do better. I didn't think of register swap and base + offset indexing. As a result, now we need to create weird work around just for swapping registers or wasting a few more registers just to getting a sequence of data in RAM.
Nevertheless, I still consider this project is a SunVox wonder, because it has proven a myth in SunVox: is the software Turing complete?
The video not really clear about this part, so I need to clarify in the following post.
Short answer:
VOXCOM 1610 is not Turing complete; however,
the rules of the modules are Turing complete, but it is limited by the software and hardware limitation.
Long answer:
Generally, people would say that the requirement for Turing completeness are, if given enough time and memory, a machine can compute any operation. People would also suggested a set of requirement for turing completeness as the following:
1. Possible to use infinite size of memory
2. It can run indefinitely
3. It can simulate any program, or any machine (e.g Turing machine).
For VOXCOM 1610, the answer is clear. It is not Turing complete, as the computer only able to use up to 64K words (128KB) of memory, where the memory is not infinite. Nevertheless, it can run the program infinitely long time, thanks to the conditional jumps.
How about the SunVox itself? People would argue that. Well, here is the complicated one. We need to prove that SunVox can have infinite number of memory, thus having infinite number of modules to simulate a Turing machine. It is in theory true to say that SunVox can do this, since we have the overpowered MetaModule. Ideally, there is no hard limit to the number of layer in a MetaModule, as long as you create a new module, you can always click the "Edit" button to access the next layer, suggested that is a sign of infinite space to work with. In reality, it is not really the case, since there are 2 problems to prevent user to achieve that. The first problem is that if you keep creating a new layer of MetaModule and editing them, you will crash SunVox after layer 32 without warning. I have proven that behavior can be reproduced in windows and ios, crashing on the same layer. The 32 layer limit can be bypass though, which you can use the "Make MetaModule" option in the right click menu. By using that method, you can make a MetaModule with around 253 layers. You can keep adding a new one even you have passed layer 253, but you will completely break the module and will not give any sound.
In conclusion, the logic and the mechanism behind SunVox modules are Turing complete, while SunVox the program itself is not Turing complete but it is close, due to the bug of crashing on editing a deep layer of MetaModules. (If I made any mistakes on the explaination on Turing completeness and the assumption, please reply so I can correct them.)
Moreover, let’s discuss some other things!
At first, let me tell you about a misconception in the Turing completeness of the game of life module. Unfortunately, the module is not Turing complete for a one critical reason:
It only has 5x5 grid, which is not big enough to build any components like Logic gates or flip flops. People saying the game of life is Turing complete because of the rules and assuming that grid size are infinite, so they can create a infinite long tape.
And of course, I have mentioned the SunVox Logic Riddle and the Logickin Logical Logbook (the TriLog / 3xLog). I am currently working on them where it definitely need to time to set up. I will announce in another post once they are ready.
Thank you for reading and watching such a monolog and video. Hope you enjoy it.
Feel free to ask any question or to correct many mistakea down below.