The Most Ambitious Project in SunVox - VOXCOM 1610

Multi-platform modular music creation studio
Post Reply
User avatar
Logickin λ
Posts: 165
Joined: Sat Sep 08, 2018 8:31 pm
Contact:

The Most Ambitious Project in SunVox - VOXCOM 1610

Post by Logickin λ »

Redirect to blank computer and the assembler: TBC
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
--------
The second program is a bubble sort for sorting 9 random numbers.
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.
User avatar
Logickin λ
Posts: 165
Joined: Sat Sep 08, 2018 8:31 pm
Contact:

Re: The Most Ambitious Project in SunVox - VOXCOM 1610

Post by Logickin λ »

I added two post for uploading the files, but I found that the Assembler is way too large to fit in the forum.

So today, I decided to announce my new website - Logickin.net!
I have uploaded all the project there, you will find my news about the progress of my projects!
I will host the two project which are Logickin Logical Logbook and SunVox Logic Riddle there.
The reason I did that is to prevent spamming discussion about logic processing on the Warmplace forum, so other user can still use the Warmplace forum as usual. I will only post important news about my website in future, and I will post general SunVox discussion here as well.

If you worried about the link and the downloads, feel free to scan it with virustotal, and please report to me asap if anyone find any problems in those program:
https://logickin.net/logicprocessing/th ... xcom-1610/
User avatar
Logickin λ
Posts: 165
Joined: Sat Sep 08, 2018 8:31 pm
Contact:

Re: The Most Ambitious Project in SunVox - VOXCOM 1610

Post by Logickin λ »

Here we go, chapter 2 of the VOXCOM 1610.
In the post, you will learn how to program and compile you assembly into SunVox:

https://logickin.net/uncategorized/how- ... to-sunvox/
User avatar
offthesky
Posts: 85
Joined: Sat Mar 26, 2011 9:55 pm
Location: Denver, Colorado
Contact:

Re: The Most Ambitious Project in SunVox - VOXCOM 1610

Post by offthesky »

amazing. quite a testament to the powers/scalability of sunvox (and the patience+cleverness of quite a master builder lol). only 75% cpu on this iphone6s 8) even though i have no idea how this works(as im no computer science person) it at least lets me know that i could build some really huge sonic contraptions w sunvox and still be able to run them okay
User avatar
Logickin λ
Posts: 165
Joined: Sat Sep 08, 2018 8:31 pm
Contact:

Re: The Most Ambitious Project in SunVox - VOXCOM 1610

Post by Logickin λ »

offthesky wrote: Fri May 27, 2022 12:23 am amazing. quite a testament to the powers/scalability of sunvox (and the patience+cleverness of quite a master builder lol). only 75% cpu on this iphone6s 8) even though i have no idea how this works(as im no computer science person) it at least lets me know that i could build some really huge sonic contraptions w sunvox and still be able to run them okay
You will know more about the computer in the future. :)
I will post more details and videos about the computer, and prepare 3xLog in my blog, but considering the scale of the project, I might spend a lot of time to finish.
User avatar
tkna
Posts: 16
Joined: Thu Mar 24, 2022 1:15 pm
Location: Tokyo, Japan

Re: The Most Ambitious Project in SunVox - VOXCOM 1610

Post by tkna »

In a word, amazing.
They are beyond my comprehension and I am dizzy, unable to imagine how much effort it will take and what application possibilities it will bring to SunVox, etc.
I wonder if you could design for architectural implementations such as RISCV, or even be a maintainer of virtual machine projects such as QEMU, or are you doing it? I feel so.
Thanks for the tour de force.
User avatar
Logickin λ
Posts: 165
Joined: Sat Sep 08, 2018 8:31 pm
Contact:

Re: The Most Ambitious Project in SunVox - VOXCOM 1610

Post by Logickin λ »

tkna wrote: Tue Jun 07, 2022 10:43 am In a word, amazing.
They are beyond my comprehension and I am dizzy, unable to imagine how much effort it will take and what application possibilities it will bring to SunVox, etc.
I wonder if you could design for architectural implementations such as RISCV, or even be a maintainer of virtual machine projects such as QEMU, or are you doing it? I feel so.
Thanks for the tour de force.
I don’t have a plan to build a RISCV processor though, due to several reason.

The first problem is that, there are quite a few components are not achieved in SunVox, mainly the stack memory, caches, branch prediction and floating point calculation, which are common in modern CPU design.

Another reason is that, I definitely need some more people working together to achieve such complex design, but before all this could happened, I need to launch my riddle and my log book, so others can build these kind of stuff without starting from sketch.

Thank you your suggestion though, as RISCV is definitely a cool architecture.
Kid_lofi
Posts: 51
Joined: Mon Sep 17, 2012 8:13 am

Re: The Most Ambitious Project in SunVox - VOXCOM 1610

Post by Kid_lofi »

Ok, you are definitely a wizard.
This is a block of text that can be added to posts you make. There is a 255 character limit.
Post Reply