VOGONS

Common searches


First post, by Bandock

User metadata
Rank Newbie
Rank
Newbie

I have made this project known in some other places, but not yet here. Well, I have been meaning to announce this project on these forums considering it has a retro-theme to it. The project is known as ClassicVCom HD, which is basically retro computing with support for high definition resolution support. How I came up with this concept was I had a thought of what it would be like to make a 1-bit or 2-bit game at a much higher resolution. This project actually started last April/early May, but is still in production due to planning out a lot of systems.

For the curious, it is not an emulator of any sort. Instead, it is a virtual computer (virtual machine for those who prefer to refer as such) that comes with it's very own instruction set. Some of the instructions were inspired by other instruction sets for real CPUs. Believe it or not, the ability to execute programs was just recently added (though the instruction set is far from complete). This project is being designed using C++ with SDL 2.0.x for rendering and other functionality.

When I first started the project, I initially created ClassicVDOS as an actual console app (which would serve as a launcher to launch programs). Early on in development, I decided I thought it would be cooler to create a more full-fledged DOS environment. If I can say one thing, I have some inspiration from even DOSBox and some other projects floating around. This actually became one of my first projects I ever developed using Visual Studio 2015 Community Edition (it was originally designed using 2013 Community Edition, but I thought it would be nicer to access some nice features). Main reason was because I wanted to use binary notation for creating fonts for ClassicVDOS (though this is bound to change).

Here is a screenshot of the project:
MiOAX1V.png

The virtual architecture it uses is 32-bit to make it work well with 32-bit memory addresses. Right now, it supports 16MB of RAM. All the registers are 32-bit (which may seem excessive for the kind of project I'm doing, but I thought it would come in handy nonetheless). Currently, it creates a virtual hard drive (with a config file) with up to 256MB of space (which could change sooner or later). Color modes it supports range from 1-bit to 6-bit (originally up to 4-bit, but changed plans later on). One nifty thing is you can create a palette based on a 32-bit color set (originally 24-bit). Resolutions range from nostalgic 320x240 (excluding 320x200) to 1920x1080. Only input support that works right now is the keyboard, though joystick/gamepad support is likely to be provided sooner or later. Mouse support may come in the near future.

There is currently no audio support yet at this moment, though I will make sure to add nifty support for that. One nice plan I have in mind is to introduce 5.1 support for it. Currently, I have plans to utilize 8-bit audio to fit in with the retro environment (though that may change in the future).

What is currently going on now is I've been working on a ClassicVDOS ROM (technically the first executable program) that will soon replace the built-in version of ClassicVDOS. Heck, I might even change that plan to support a working BIOS along with making it possible to install ClassicVDOS on a virtual hard drive.

For those who want to try the current binary version out, here is the link: https://dl.dropboxusercontent.com/u/24250760/ … icVCom%20HD.zip
For those who want to try the HTML5 Emscripten version (which is outdated, due to code changes that are needed), here is the link for that: https://dl.dropboxusercontent.com/u/24250760/ … sicVCom_HD.html

And yes, full-screen is supported for both versions. You know the good old ALT-ENTER trick. 😜

And without further ado, here are the commands that work:

Cd - Changes directories.  To go back a level, you space it and use two periods.  This will likely change in the future.

Clear - Clears the screen.

Del - Deletes a file. Unlike MS-DOS's del, you actually get to specify the file type.

Dir - Views the current directory.

Format - This one actually doesn't work yet, but will display a message.

Mem - Displays the current amount of RAM you have.

Mkdir - Creates a new directory. Currently has an 8 character limit, though this will likely change soon.

Rmdir - Removes an existing directory.

Run - Runs a program. Currently no programs to run in this matter yet.

Shutdown - Shutdowns the virtual system.

That's about all I have to say for now. I will discuss more in the near future. One nice thing about this virtual machine is it will not cost anything. There will be an assembler anybody can use to create programs (in fact, a partially working one exists at the moment). No high level compilation yet until I get the instructions more setup. This project will likely be open-sourced at some point (along with the assembly code for the ROMs).

Feel free to provide any input for the project.

Last edited by Bandock on 2017-07-05, 10:26. Edited 1 time in total.

Reply 1 of 2, by Bandock

User metadata
Rank Newbie
Rank
Newbie

Providing an update that I'm now restructuring the virtual hard drive code to start supporting virtual disk images for ClassicVCom HD. File wise, they should be similar with the exception of support for space limitations for virtual hard drives. Virtual Disk Images will not have a set limit since they are basically truly virtual disk images. I thought it would be a way to treat them like archive files.

Not only that, it could enable support for downloading files straight through the virtual machine once network support is added.

In terms of other things, I should be adding new system calls that could expand the functionality for ClassicVDOS further. There are no plans to make any portion of the project open source just yet until I get it ready enough for it to be so. Programs made for it can be distributed freely or sold (provided the latter follows copyright laws and have proper consent). My hopes for this project is to make it cross-platform compatible considering is a virtual machine/computer. I would rather see it on multiple platforms than just one where it could possibly die one day.

That's about it for updates for now. And no, this is not meant to compete with emulators or virtual machines that virtualize based on real systems. Rather, it is to establish a platform for people to create their own retro-styled programs with support high resolutions.

Reply 2 of 2, by Bandock

User metadata
Rank Newbie
Rank
Newbie

Got a nice new update (actually updated several times, but I figured this one is worth noting). First things first is it has for some time had the capability to create new virtual hard drives and virtual disk images (which the latter is more akin to an uncompressed and unencrypted archive file). Not only that, it also supports mounting virtual hard drives along with inserting virtual disk images. Also allows you to mount your local directory (though doesn't show everything yet due to the 8 character limit, which is bound to be expanded at some point). However, it does show your programs.

Another thing I have updated is the DOS fontset (which is pretty much complete with the exception of certain characters and lowercase characters). This makes it possible to add the future 'copy' command (so you can copy your programs from your local directory straight to your virtual hard drive or even virtual disk image. Some new system calls were also introduced. One important system call for DOS applications is the DOS Input String system call. With it, it is now possible to store input data into the virtual machine's RAM.

Link: https://dl.dropboxusercontent.com/u/24250760/ … icVCom%20HD.zip

This is the same link as my first post since I've been updating the ZIP file in my Test Releases Dropbox folder This is likely to change once I decide to open a Github for it. Right now, I'm still maintaining it and slowly adding new features to it. Recently updated versions now include a basic text file to let you know about the commands currently inside the ClassicVDOS environment. Sooner or later, I'll make my assembler public (though even that project is incomplete). One thing I can say is it has some inspirations from the NASM assembler for the x86 instruction set.