My god this is genius! I wish I had INST and ARAY when designing my computer :D. I love the different ways the new elements can be used in logic en mass. Are you sure you cannot make it faster? What operation on which component is slowing you down?
EDIT: Too bad the memory is ROM. I would of liked to create a compiler. But I guess it is a lot more compact.
EDIT: Whats with the 11111 on the IF Jumps? Is it meant to represent 1111 for if true? If so you have a spare bit at the end that could be used to increase the memory to 64 words. I don't know the details of your computer so not sure if it will work.
@massey101(View Post) In terms of speed I think I already did the best I can. Coming from an OOP background, however, I found myself emphasising functionality more than speed. For example, the language used to code it is made high level (no dealing with registers) so as to allow for more functionality due to the fact that the same thing can be programmed in less lines, allowing one to fit more stuff into one program, but it creates a lot of bloat. There exists a faster programmable computer already in powder toy, but it uses registers and it can't add or subtract.
The main operation that slows me down is multiplication/division. It is a very very common function, but I didn't bother to make a component for it as it would take up quite a lot of space. Now it must be done with loops, causing it to be much slower than if done in hardware itself.
About the language itself, please read my first post. If it is too unclear, please tell me exactly what is unclear. But to answer your question, 11111 means "take value at memory slot 15 (1111)". True would be "01111", meaning "take constant true". Memory slot 15 is actually register C, where the result of all operations go. For example, if you want to say "if(x>y) goto 10", you first say "x>y", then "if Operation Result, goto 10".
Within the 14 bit word, you have the first "command" which is 1001 for IF GOTO then 11111 just randomly there. I cannot find an explanation. Then you have where you want to jump too in 5 bits. I just reckon that the final bit of the 11111 could be used to make your jump commands 6 bit it seems as though there mayyyy be enough room.
However if you also want to include multiplication and division in your ALU then there really won't be much room. I really hope you make multiplication and division because Crionis's computer runs at 66.7 cHz while yours runs at 6 cHz...
(quote) About the language itself, please read my first post. If it is too unclear, please tell me exactly what is unclear. But to answer your question, 11111 means "take value at memory slot 15 (1111)". True would be "01111", meaning "take constant true". Memory slot 15 is actually register C, where the result of all operations go. For example, if you want to say "if(x>y) goto 10", you first say "x>y", then "if Operation Result, goto 10".
Crionis's computer (I assume) works directly with registers. As I said the main killer in terms of speed for my computer is the bloat. I hoped to be able to do in 1 line what his can do in 3, so as to do more complex procedures. As for including multiplication and division, I would have to remake the entire system, as the ALU is already optimised for space.
(quote) Array reading is a simple extension to the computer. However, I would only think about implementing it if there is any more use to such a function other than array reversing or sorting. If anyone would like to do it himself, go ahead.
Other than that, I don't quite have any ideas as to how to improve it. Maybe I could replace a few parts here and there to make it faster, smaller or more functional when I think of any ideas. However, at this point there isn't really much more I can do. I'm happy with the programming language with all its slowness and I don't have much drive to change it.
I think it would be better if I just sit back and wait for someone to develop a 5-bit computer. Other people who are more knowledgeable about the subject area in real life would surely be able to do a better job than I.
@massey101(View Post) If you want to make a compiler without altering the programming palette, I would be very grateful if you can make one that programs it line by line. Personally, I think even copying and pasting is easier than converting everything to binary and slowly sparking it out.
I could try to increase its speed by making it do more tasks in parallel. Better components from the community would be much more effective in terms of improving the computer, but I don't really think many people would want to do that. In terms of other major upgrades (other than bug fixes), however, they probably wouldn't come until at least the end of August. Will be a bit busy for the next month.
By the way, devast8a, thanks for the front page. I'm just afraid that there may be bugs in the system. Oh, and great processor. It was a source of inspiration during my first draft :D.