Forums - Open Redstone Engineers
Next Level Minecraft Software - Printable Version

+- Forums - Open Redstone Engineers (https://forum.openredstone.org)
+-- Forum: ORE General (https://forum.openredstone.org/forum-39.html)
+--- Forum: Projects & Inventions (https://forum.openredstone.org/forum-19.html)
+---- Forum: In Progress (https://forum.openredstone.org/forum-20.html)
+---- Thread: Next Level Minecraft Software (/thread-10144.html)

Pages: 1 2


Next Level Minecraft Software - Hawk49 - 06-24-2016

So, I haven't posted in a very, very long time. That aside, it has long been a goal of mine to build a computer that someone who has absolutely ZERO knowledge concerning computer technicalities could operate perfectly. I believe I am going to accomplish that goal quite soon (this summer). I call the computer Sapia II. The entirety of its I/O will consist of a startup button, and 8 ports. To those ports, there will be attached a screen, a keyboard, a touchpad, and optionally a 3D printer/scanner. Really everything's optional, it'd just take a long time to program the changes. Along with this I/O, there will be included in software a basic file system, and an overarching program to allow navigation through that file system. I'm calling this an OS. From the press of the startup button, a kind of BIOS/bootstrapping program will run from ROM to start up the OS in the instruction RAM, and you're off. All of this software will be stored in a 2 Kibibyte (2048 byte) piston tape hard drive modified for speedy access (for a piston tape). Along with this massive hard drive, there will be 128 lines of RAM for programs to run off of, and 128 lines of data RAM for those programs to manipulate. Very cool stuff, people. I've already built the computer's hardware on Logisim, and i've designed all of its parts for being built in minecraft easily enough. All i've got left is the software stuff. The possibilities for this thing are almost endless, but a major limitation is speed. Sapia II is not pipelined, so I don't think i'll be able to get the clock speed under 20 ticks. For all of this software to run, it'd take minutes to open files, let alone run them. Looking past this, however, even if it takes a while to do what it does, the fact that it will do them is more than enough to please me. It could easily sport a basic GUI for selection pages, and display text and graphs on the same screen. With all of the program space, I am planning on making some amazing things. A multi-user OS (multiple users can have separate accounts, and have their own files), a virus-detection program along with the file-downloading program (yes, this computer might be the first computer made in minecraft to be susceptible to viruses), and with all of the talk about Slugdude's IntOREnet, a program for navigating it. Craaaaaaaazy stuff. Let me know what you guys think! If you've read this far, thank you very much Smile


RE: Next Level Minecraft Software - PNWMan - 06-24-2016

Quote:someone who has absolutely ZERO knowledge concerning computer technicalities could operate perfectly.
Hopefully you will have some kind of guide, whether on a forum or a book in a chest or something to explain how to operate the machine, because even very intuitive real life OSs still have guides that show all of the features and whatnot.

Quote:a kind of BIOS/bootstrapping program will run from ROM to start up the OS in the instruction RAM, and you're off. All of this software will be stored in a 2 Kibibyte (2048 byte) piston tape hard drive modified for speedy access (for a piston tape). Along with this massive hard drive, there will be 128 lines of RAM for programs to run off of, and 128 lines of data RAM for those programs to manipulate.
 BIOS will be stored on a 2 kib harddrive, which then gets put into how much instruction RAM? If it's also 2 kib, there is no point in the harddrive as you might as well just keep it all in the RAM, and if the RAM is less than 2kib, then you will need some sort of way to store only parts of the OS that are being used in RAM, which might be very tricky and not worth it. Also, what I got out of this is that there is an additional 128 lines of RAM for prog, and 128 lines of RAM for data, both separate from the OS instruction RAM? Is that correct? Even if my details are off, that makes for a lot of computing space and power and I'd love to see what this machine could do... hopefully you have good ALU operations.

Quote:Sapia II is not pipelined, so I don't think i'll be able to get the clock speed under 20 ticks.
For something of this size, you may seriously want to consider spending a few hours pipelining it, at least to a moderate degree, because with the kinds of software you are planning, even though you mentioned it would inherently take a long time, you try to minimize that time. I'm not expecting some crazy 5-tick speedrunner, but do your best to get it under 20 ticks.

Quote:It could easily sport a basic GUI for selection pages, and display text and graphs on the same screen.
Hmm... you may want to reconsider putting text on the graphics screen, as, first of all, text can be made with 1x2 block pixels while graphics must be 2x2 blocks (I know 1x1 block screens exist now, but if you want speed/compactness, it must be 2x2 blocks). Second of all, you would need some software/hardware to figure out where the text goes in relation to the graphics, which may or may not be quite a task, but it's probably just not worth it. I would consider having a graphics screen and a text screen: Although not as integrated, it would not be too huge of a drawback (Most CPUs don't have either, so just having 1 already puts you ahead), and it would be easier to make and likely less buggy.
Quote:A multi-user OS (multiple users can have separate accounts, and have their own files), a virus-detection program along with the file-downloading program
I think the multi-user OS may be a bit overboard, but it would definitely be possible with a project of this size. A file downloading program that connects to intOREnet really tickles me and I'd love to see this! However, I wouldn't bother with an antivirus program. Think about it: real life antivirus must inspect nearly every packet that comes in; nearly every executable, and so many other factors (which would suck up a CRAPTON of your OS memory, program/data memory, and CPU time), and yet there are STILL dozens of vulnerabilities which must be constantly updated (thus sucking up more memory). No matter what kind of antivirus you create on your computer, there will always be a vulnerability that renders it ineffective, and even if you do manage to create one that catches every threat, it would likely prevent legitimate content as well, and take up your entire OS/prog/data memory and nearly all of your CPU time. I'd say that safety relies on the user's own discretion. And keep backups. There will likely be something other than a virus someone wrote (your own programming mistake) that causes a problem. I'm not entirely familiar with your system, but what is the worst that a virus could possibly do?

I think this is a really cool project, but also a big one. Don't let things get in your way, and don't be too afraid to compromise (although do your best to work out a solution). You'll likely face huge roadblocks, but just allot yourself a few hours (or a day) to resolve it, and while it may suck to find/fix the mistake, in the end, when you overcome that obstacle, you will feel a great sense of accomplishment (not to mention the feeling when the whole thing is completed!). I find that keeping a record, preferably handwritten/drawn, maybe with some computer-aided graphs/charts, keeps me organized. You will find a lot of places where you will have to decide between 2 or 3 things, but writing everything down will help you make your decision, and writing down your decision along with why you chose that will likely help you in the future. Stay determined, don't allow setbacks/compromises to deter you, and don't be too ashamed if something doesn't work out the way you intended. This is a great project and I hope you can stay sane while making it!


RE: Next Level Minecraft Software - Hawk49 - 06-24-2016

PNW! It's been so long! Good to see you again! Anyways, I'll try to address each of your comments/questions as thoroughly as possible.

Of course there will be some kind of manual included around the user interface, as my only goal was that one wouldn't need any technical computer knowledge, like what binary is, or how adders, or any kind of technical part of the computer works. All a user needs deal with is software. Also, I'm hoping that really most of the directions of use will be given to the user via text from the actual computer, so that all you need to know is "press the startup button and wait for the computer to tell you something", though that process might take a while.

There is only 1 instruction RAM block, and it's 128 lines. I might have been a bit unspecific and ambiguous, but the BIOS is stored in ROM, not the hard drive. It's also quite a small program. All it does is, at startup, it locates the "file selection program", loads it to the instruction RAM, and then runs it. The file selection program will obviously be smaller than 128 lines. What i'm calling my "OS" simply refers to my file system, along with a program for organizing those files, and a program for navigating through them. Both of these programs must be less than 128 lines, or else they would not be able to run efficiently in the instruction RAM. The OS programs will not be running while a "third party" program is running, i.e. paint, grapher, calculator, web-surfer, etc. From startup, an OS program is used to select a 3rd party program, and they trade spots in the Computer's memory, i.e. the 3rd party program goes to instructionRAM, and the OS program lies dormant in the hard drive. Once the 3rd party program is done, and the user wishes to select another program, the OS program for file selection is put back into the instruction RAM and the cycle continues. The process by which this quite simple, and involves something I call a page manager.

As for Sapia II not being pipelined, I just looked at how many pipelined computers have actually successfully been made in minecraft so far, and I'm discouraged. What I want more than anything is to make this thing a *reality* on the server, even if that means sacrificing a bit of performance. I might experiment a bit with pipelining, but I feel like that is be more of a possibility for me in a hypothetical Sapia III.

I would be willing to have a separate text screen, but I just haven't found any... it's basically just easier for me at this point to program the text into a normal (x,y) screen rather than invent a kind of ASCII display. If I come across one, or find the time to make one, I will. Hopefully I will be able to make the coding for text output easily adaptable between cartesian screens and segmented displays.

I do not think that a multi-user OS is overboard at all. In fact, I believe it will be one of the easier things to make. Allow me to explain how this will work. The user-specific partitioning of the data in Sapia II will take advantage of its file system, so to give a full explanation, I will explain how the file system will work.
In memory, a file before it is accessed is simply two pointers (values of other memory addresses) of adjacent addresses, the one with a smaller address corresponding to the lower bound, the other to the upper bound (both ends inclusive) of its contents' addresses. The contents contained within these bounds are either a list of pointers (each, again giving a range of addresses), or data to be used in some other way (i.e. a single program, or a data save related to a program, such as a graph, or important numerical values). This way, files have other files in them, which could have other files in each of them, and so on and so on, until the cycle terminates with a file's contents not being another file, but actual data (that is again either itself a program, or related data). It will be a standard of version 1 of the operating system that the first file contained in any given file will lead to a chunk of data that records its name. In the case of terminating files, that contain only program-related data, their name is the name of their parent file. How will the contents of a terminating file be distinguished from a simple collection of pointers? Programs that access files simply have to remember which names correspond to data, and which names correspond to files. Doubtless, all of this information will be included in some OS files, like "pathway files" and "terminating files".
All of this being said, back to how the multi-user OS functionality will work. All files in the computer will be included in one all-encompassing file called "computer". The immediate children of this file will be "user 1" "user 2" "guest" or whatever names people wish to choose. All data that is associated with them, i.e. they are allowed to edit that data, as they downloaded it or made it, will be included in these files. Also included under the "computer" file will be the "OS" file. This contains all information not related to any one user, but to the smooth functioning of the whole underlying computer. Included here will be files that contain all kinds of system information, like privileges allowed to each user, data allocation information, OS programs, and other stuff like that. Basically, users who don't have permission will not be able to edit any data that is not part of their user file, or that they don't have permission to use. A password system will be used to allow a user on to a given user file, or to edit certain important programs, like the OS.

I'm excited to make some IntOREnet related programs as well Smile

As for antivirus, it will simply be a program, toggleable in a user's "system preferences" file that will look at the code for each line of imported, 3rd party executables, and see if any instructions attempt writing to the Hard Drive, or to the instruction RAM of the computer, which is not hard, it just looks at the OP code. If a program does, it is a sign that it is attempting to damage the data structure of the computer (it might be trying to copy itself a billion times and overwrite a user's data and programs, or other crap like that). If a program does pose a threat, all that will happen is the user will receive a warning, and an option to proceed anyways. I can make it more complex in the future If I feel the need though Wink
A virus can do quite a bit if you value the data stored in your files. A virus could destroy the OS program and make the computer spout gibberish. The only fix for this would be to completely (manually) rewrite the OS to the hard drive, if the downloading program or any program leading to it is a gonner, that is.

Thank you so much for your words of encouragement. I fully intend to finish this project. Right now, I'm done with the hardware, and I'm just working on making all of the data structures, and the startup sequence. Once the computer is completely functional, with OS and all, on logisim, I will begin building in minecraft. I too hope I can stay sane...


RE: Next Level Minecraft Software - josh03222 - 06-25-2016

(06-24-2016, 11:08 PM)Hawk49 Wrote: PNW! It's been so long! Good to see you again! Anyways, I'll try to address each of your comments/questions as thoroughly as possible.

Of course there will be some kind of manual included around the user interface, as my only goal was that one wouldn't need any technical computer knowledge, like what binary is, or how adders, or any kind of technical part of the computer works. All a user needs deal with is software. Also, I'm hoping that really most of the directions of use will be given to the user via text from the actual computer, so that all you need to know is "press the startup button and wait for the computer to tell you something", though that process might take a while.

There is only 1 instruction RAM block, and it's 128 lines. I might have been a bit unspecific and ambiguous, but the BIOS is stored in ROM, not the hard drive. It's also quite a small program. All it does is, at startup, it locates the "file selection program", loads it to the instruction RAM, and then runs it. The file selection program will obviously be smaller than 128 lines. What i'm calling my "OS" simply refers to my file system, along with a program for organizing those files, and a program for navigating through them. Both of these programs must be less than 128 lines, or else they would not be able to run efficiently in the instruction RAM. The OS programs will not be running while a "third party" program is running, i.e. paint, grapher, calculator, web-surfer, etc. From startup, an OS program is used to select a 3rd party program, and they trade spots in the Computer's memory, i.e. the 3rd party program goes to instructionRAM, and the OS program lies dormant in the hard drive. Once the 3rd party program is done, and the user wishes to select another program, the OS program for file selection is put back into the instruction RAM and the cycle continues. The process by which this quite simple, and involves something I call a page manager.

As for Sapia II not being pipelined, I just looked at how many pipelined computers have actually successfully been made in minecraft so far, and I'm discouraged. What I want more than anything is to make this thing a *reality* on the server, even if that means sacrificing a bit of performance. I might experiment a bit with pipelining, but I feel like that is be more of a possibility for me in a hypothetical Sapia III.

I would be willing to have a separate text screen, but I just haven't found any... it's basically just easier for me at this point to program the text into a normal (x,y) screen rather than invent a kind of ASCII display. If I come across one, or find the time to make one, I will. Hopefully I will be able to make the coding for text output easily adaptable between cartesian screens and segmented displays.

I do not think that a multi-user OS is overboard at all. In fact, I believe it will be one of the easier things to make. Allow me to explain how this will work. The user-specific partitioning of the data in Sapia II will take advantage of its file system, so to give a full explanation, I will explain how the file system will work.
In memory, a file before it is accessed is simply two pointers (values of other memory addresses) of adjacent addresses, the one with a smaller address corresponding to the lower bound, the other to the upper bound (both ends inclusive) of its contents' addresses. The contents contained within these bounds are either a list of pointers (each, again giving a range of addresses), or data to be used in some other way (i.e. a single program, or a data save related to a program, such as a graph, or important numerical values). This way, files have other files in them, which could have other files in each of them, and so on and so on, until the cycle terminates with a file's contents not being another file, but actual data (that is again either itself a program, or related data). It will be a standard of version 1 of the operating system that the first file contained in any given file will lead to a chunk of data that records its name. In the case of terminating files, that contain only program-related data, their name is the name of their parent file. How will the contents of a terminating file be distinguished from a simple cone all-encompassing file called "computer". The immediate children of this file will be "user 1" "user 2" "guest" or whatever names people wish to choose. All data that is associated with them, i.e. they are allowed to edit that data, as they downloadeollection of pointers? Programs that access files simply have to remember which names correspond to data, and which names correspond to files. Doubtless, all of this information will be included in some OS files, like "pathway files" and "terminating files".
All of this being said, back to how the multi-user OS functionality will work. All files in the computer will be included in d it or made it, will be included in these files. Also included under the "computer" file will be the "OS" file. This contains all information not related to any one user, but to the smooth functioning of the whole underlying computer. Included here will be files that contain all kinds of system information, like privileges allowed to each user, data allocation information, OS programs, and other stuff like that. Basically, users who don't have permission will not be able to edit any data that is not part of their user file, or that they don't have permission to use. A password system will be used to allow a user on to a given user file, or to edit certain important programs, like the OS.

I'm excited to make some IntOREnet related programs as well Smile

As for antivirus, it will simply be a program, toggleable in a user's "system preferences" file that will look at the code for each line of imported, 3rd party executables, and see if any instructions attempt writing to the Hard Drive, or to the instruction RAM of the computer, which is not hard, it just looks at the OP code. If a program does, it is a sign that it is attempting to damage the data structure of the computer (it might be trying to copy itself a billion times and overwrite a user's data and programs, or other crap like that). If a program does pose a threat, all that will happen is the user will receive a warning, and an option to proceed anyways. I can make it more complex in the future If I feel the need though Wink
A virus can do quite a bit if you value the data stored in your files. A virus could destroy the OS program and make the computer spout gibberish. The only fix for this would be to completely (manually) rewrite the OS to the hard drive, if the downloading program or any program leading to it is a gonner, that is.

Thank you so much for your words of encouragement. I fully intend to finish this project. Right now, I'm done with the hardware, and I'm just working on making all of the data structures, and the startup sequence. Once the computer is completely functional, with OS and all, on logisim, I will begin building in minecraft. I too hope I can stay sane...

TL;DR:
P1. Hawk greets PNW
P2. He means you don't need to know binary or adders or anything
P3. There's a very simple process to do a kinda complicated thing using a "Page Manager"
P4. Pipelining=hard
P5. It's gonna be a x,y screen bc hawk doesn't like inventing :^)
P6. Multi-user OS is practical, and he explains how it works
P7. He thinks IntOREnet actually will be finished Confused
P8. He explains how an Antivirus works
P9. He's done with hardware and is now making OS and stuff

Overall Summary:
Hawk likes to write long posts


RE: Next Level Minecraft Software - Hawk49 - 06-25-2016

Many thanks c:


RE: Next Level Minecraft Software - ddthj - 06-25-2016

HCI needs to make a pipelined CPU sometime. It can't not happen Tongue


RE: Next Level Minecraft Software - Hawk49 - 06-25-2016

Oh boy, I don't know if that exists anymore. No more cutlass. It's just Hi for now Smile

That sounds stupid... Idk, should I make a computer company? Suggestions?


RE: Next Level Minecraft Software - Koyarno - 06-25-2016

I would say 30 ticks for your cpu (~12 ticks for 128 line Programmable ROM, 8 for decoding+reading, 6 for executing, 4 for writeback) and thats for pretty good hardware and i did not account for the load/store operations which would be ~20 ticks for 128 line RAM) < delayed clock perhaps?

You havent tried a single pipelined cpu yet so i would steer away from it untill you have more knowledge of those.

So what kind of Instruction set do you want to use? 8/16 bits are easy to work on, anything else is weird due to the shared storage space and actually writing the program.


RE: Next Level Minecraft Software - Hawk49 - 06-25-2016

lol, well, again Koy, I've already made the computer. On logisim. The instruction is 16 bit. I'm thinking of adding hardware interrupts, and possibly a 2-stage pipeline. Doesn't seem too hard, what could go wrong? Wink


RE: Next Level Minecraft Software - VoltzLive - 06-26-2016

If you get an IS finalized, I'd love to do some programming for it.