Giter VIP home page Giter VIP logo

vcc's Introduction

VCC - Virtual Color Computer

An emulation of The Tandy Color Computer 3 for Windows XP, Windows 7, Windows 8, & Windows 10

VCC attempts to be an accurate emulation of a "stock" Tandy Color Computer 3 just as you would have bought in a Radio Shack store or Tandy Computer Center in 1986-1992.

For VCC usage see the User Guide at https://github.com/VCCE/VCC/wiki Also on the wiki are release notes and a guide for using legacy Wimgtools.

The Color Computer 3 (or the "Coco 3" as it was known by it's users) was the final iteration of a series of computers starting with the "TRS-80 Color Computer" (also known as the "Coco 1") in 1980 with it's 4k of RAM, Non-Extended Color BASIC, and expansion slot for Game & Software Cartridges. Programs could be run from cassette tape. Eventually the memory was exapanded from 4k to 16k ( which allowed the use of "Extended Color BASIC"), then 32k, and finally 64k. Also relesed by Tandy was the Disk Drive unit for 5.25' Floppy disks, which along with 64k of memory, allowed it to run Microware's "OS-9 Level 1" for the 6809 processor. Several motherboard revisions were released with the Silver Coco 1, until Tandy upgraded to a new design with a smaller footprint and slightly more modern circuitry. This machine was the "Tandy Color Computer 2" or "Coco 2", which went through several revisions and came in 16k Color BASIC and 64k Extended Color BASIC models. Finally in 1986 Tandy release the final model, the "Tandy Color Computer 3" or "Coco 3" with 128k of memory (expandable to 512k), and "Super Extended Color BASIC" with expanded high resolution graphics with up to 16 colors from a palette of 64 colors.

VCC directly models the "stock" 128k Coco 3 and is expandable to many levels that were available by Tandy and 3rd party vendors. These include:

  1. "Tandy MultiPak Interface" or "MPI" with 4 expansion slots.
  2. "Tandy FD-502 Disk Drive Controller" with "Disk Extended BASIC" and 4 configurable virtual disk drives
  3. A "Generic" Hard Drive Interface which allow VCC to use "Virtual Hard Disks" or "VHDs"
  4. "SuperIDE Hard Drive Controller" - emulates dual IDE hard drives, the same model produced by Cloud 9 and will also use Compact Flash memory card images much like the real SuperIDE. 5 "Orchestra90cc" - a 5 voice music sequencer emulating the original prgram pack of the same name in cluding the stereo 8 bit DACs whitch play in stereo through your PC speakers.

We welcome all bug reports and suggestions. Post any bug reports and/or suggestions on the "Issues" page and we will be promptly notified. We do a "check list" of the issues page every-so-often to see if there's any "quick fixes" we can add while we are working on current changes. The VCC Developement Team is a small one and we work on this when we can as we all have lives and families, so VCC is NOT a priority but a hobby. Even being a hobby, it is also a work of love as we also use this software ourselves, so we try to make it as usable as possible. Sometimes progress is slow and it looks like nothing is going on (and it may not be), but usually, there's plenty going on behind the scenes and we have not committed our current work. Progress is slow, but progress is being made.

VCC version numbering has recently changed. The version number consists of "Vcc-" followed by 4 numbers seperated by dots, for example: "Vcc-2.1.8.2". The first number represents the "fork." Fork one is considered to be the original code from Joseph Forgeone. The current fork is "2". It promises to function on Windows XP and Windows 7 operating systems. We might want to add capabilitues that will not work on these older systems. If we do that we will create a third "fork." This will allow us to backport changes from fork 3 code back to fork 2. The second number represents a major version. It will be used if very significant changes are made in the way Vcc functions (not likely happen anytime soon). The third number represents normal releases, typically done one or two times per year. The fourth number represents bug fixes to the release. These are changes to VCC that correct errors and bugs in the intended functionality of the release. Binaries containing these changes will be updated in the affected release files.

Compiling the VCC Sources

Currently, VCC is compiled in C/C++ using "Microsoft Visual Studio 2015 Community". This older Visual Studio version is used to maintain compatibility with Windows XP. You must include "Win x86", & "XP" support packages ("DirectX 9" should be in one of these packages, if not, you must include that as well). Later versions of Visual Studio will load and compile the VS2015 code fine, but the resulting code will may not be compatible with what the VCC Development Team is using.

VS2015 requires Windows 7 or greater to install. Check the VS2015 "System Requirements" before trying to install on your system. Since Microsoft is no longer supplying a web based installer for VS2015 you will have to download an ISO image and install it from that.

The only extra packages needed to compile VCC are the Win32 and WinXP compatibility packages to ensure build compatibility with older versions of Windows. This may change if we move the code to cross-compile for Mac and Linux users and not just the Windows users.

Error free compiling any VCC sources other than the "Release" source set is not guaranteed. The source code that was used for official releases is available under "Assets" for each release.

If you think you have patches or code that could contribute to the VCC project, please contact the developement team and to see if it fits the current direction of the project, and if so, add it to our code. Be sure to add your name and the date in your comments (and please comment your code well) if you want credit for your work. Also, if your programming skills are up to "snuff" and you feel you would like to join the VCC project, please contact us.

The default git branch is "main" If you want to make changes to the VCC codebase please fork the "main" branch to your own github account, then use git to download branch main from your fork to your local development system. From main create a new branch for your changes. The branch name should suggest the purpose of your changes. Make your changes and test them. Once you done push your new branch back to your fork on github.
Then use github to create a "Pull Request" for VCCE/VCC. We will review your changes and merge them if satisfactory. Changes to .vcxproj files caused by using the wrong release or version of Visual Studio will generally be rejected and may result in your entire request being rejected if we can not build the merge with VS2015.

Thank You for using VCC

We will continue to try to make VCC the best Color Computer Emulator available.

The VCC Developement Team.

vcc's People

Contributors

abathur8bit avatar bgpierce avatar chetsimpson avatar ejaquay avatar jimrye avatar joshaber avatar jross9 avatar mrojas36 avatar ursine avatar vcc6809 avatar wersley avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vcc's Issues

Ramdisk cartridge

(from old issues page)
BGPierce commented on Jan 7, 2016
Does anyone know if the "ramdisk.dll" actually works? I have never tried this module. I think it is supposed to be an emulation of Disto's Ram cart. If it actually works, I would like to document it's use and include it in the release.
I will look into this a little more.

32KB cartridge images - format?

(from the old issues page)
msmcdoug commented on Sep 14, 2016
Seems there is an incompatibility between Vcc and MAME/MESS for 32KB ROM images.

MAME/MESS want a naturally-ordered ($8000-$FFFF) 32KB block whereas Vcc requires that the top and bottom 16KB blocks are switched ($C000-$FFFF,$8000-$BFFF).

Whilst archives on the net tend to be in the swapped format (Vcc) and therefore incompatible with MAME/MESS, it's worth noting that this swapped format is also unsuitable for burning to FLASH/EPROM.

I would argue that the naturally-ordered format is easier to produce for developers, compatible with MAME/MESS and FLASH/EPROM burners. Should we also change Vcc to use this format?

VCC debugger

(from old issues page)
BGPierce commented on Jan 8, 2016
VCC has always needed a debug function. Again, a good example is the Mess debugger.
When turned on, a separate window opens showing the current address being accessed (scrolling) and a representation of the asm ascii and hex code... kind of like ZBug.
You should be able to set breakpoints, single step etc...

Like this:

mess debugger

Better artifact color emulation

(from old issues page)
BGPierce commented on Dec 29, 2015
I have had many people tell me that the artifact colors in composite mode on the Mess Coco emulator are much truer than the artifact colors in VCC's composite mode.
Since we are basically rewriting this stuff, maybe we could take a look at the Mess sources and see how they implement the artifact colors to get an idea on how to improve VCC's artifact colors.
The "Gamers" would love it.
Any thoughts?
B.P.

Vcc 2.1.0d Welcome manual

While upgrading to 2.1.0d , I noticed several typos and other potential problems in the attached pdf file of the Welcome manual. Each such spot is identified by semi-transparent red highlighting along with an associated sticky note. The annotations were placed from within Adobe Acrobat Reader DC, running under Windows 10 Pro.

Welcome to Vcc 210d Typos.pdf

VCC crashes with "Windows" key on fullscreen

(from the old issues page)
BGPierce commented on Jan 10, 2016
On the latest build (01/09/2016), when VCC is in full screen mode, if you hit the "Windows" key (start menu), VCC will crash. It should go back to default size OR just minimize. It tries to stay on screen with the windows startbar and start menu....

Emulator should "pause" while any external menu is open

(from the old issues page)
BGPierce commented on Dec 29, 2015
Something that was brought to my attention was the way VCC's menu system works.
In Mess (and other emulators including XRoar), when a system menu is open, the emulation "pauses" and waits for you to exit the menu.
In VCC, the emulation continues to run while any menu is open. I have found this to be both an advantage as well as a hinderance.
Any thoughts on this?
B.P.

Bug: Tetris game is uncontrollable

The Tetris (Tandy version btw) game is unable to be controlled with the keyboard. The keys are inputting things all over the place, making the game unplayable as a result. I'm sorry I can't explain this any better, but my English is limited.
I tried with different keyboard layouts, different regional layouts, different physical keyboards (I'm on a laptop without a number pad) but keyboards inputs are still wrong. I can only assume the emulator is the culpirit here, which is quite something to say for a quote "accurate CoCo 3 emulator". Any ideas?

"Standard", "Tandy HiRes", & "CC-Max" check boxes unfinished

(from the old issues page)
BGPierce commented on Dec 29, 2015
In the "Configuration/Joysticks" tab, there are check boxes for the :
"Standard"
"Tandy HiRes"
"CC-Max"
hires interfaces. These were added by Joe, but never completed. At the moment, the functions are disabled. It would be nice to see these joystick hires interfaces implemented.
B.P.

Code is split between C and C++

(from old issues page)
ursine commented on Dec 14, 2016
The VCC code base is currently made up of a hybrid of C files and C++ files. The compiler decides which it is by checking the extension: ".c" gets compiled using the C compiler, ".cpp" gets the C++ compiler.

Currently VS 2015 does not completely support modern C and this causes some minor hand holding to be required. Changing all of the .c extensions to .cpp will cause the C++ compiler to be invoked, giving access to modern code features of C++11/14, as well as the use of the common subset of modern C.

It should be as simple as changing the extensions and submitting it, but there's always possible issues. I plan to do this shortly. (If there are any concerns please discuss soon)

Prevent key repeat when video throttle is off

(from old issues page)
BGPierce commented on Jan 7, 2016
In the "Config/Display" tab, if the "Throttle Speed" checkbox is unchecked, the emulator is almost unusable on todays fast computers. It makes key repeat (in OS-9) and mouse clicks repeat so fast, you cannot type or click on anything without it repeating beyond control.
When the CPU, or clock timer are running faster, the keyboard or mouse input should not be affected.

Save Config menu sometimes generates a bogus error message.

The error only occurs when saving to the same ini file. To prevent copying the ini file to it's self the code does a path compare. This fails when the paths point to the same file but differ in case. Using a compare that ignores case should fix the problem.

virus detected in zip file

Bitdefender detected a virus within the .ZIP file when I extracted the files. Not sure if thats a false positive but somebody should probably take a look at it.

The file wimgtool-os9.exe is infected with Gen:Trojan.Heur.GC.O9Z@q9iuvriib and was moved to quarantine. It is recommended that you run a System Scan to make sure your system is clean.

volatile qualify FlagEmuStop

(from the old issues page)
jejones3141 commented on Apr 16, 2016
I believe that the declaration of FlagEmuStop should be changed to

static volatile unsigned char FlagEmuStop=TH_RUNNING;
because as it is, a compiler is free to change the loop

FlagEmuStop=TH_WAITING; //Signal Main thread we are waiting
while(FlagEmuStop==TH_WAITING)
Sleep(1);
in EmuLoop() to

FlagEmuStop = TH_WAITING;
for (;;)
Sleep(1);
since FlagEmuStop is static and its address is never passed outside Vcc.c.

I've been running Vcc on Linux using WINE, and I find that selecting exit doesn't close the Vcc window. I can't swear that this is the cause of the problem, but it could be. I don't use Windows (save under duress), and Visual Studio is in the "garbage" category at winehq, so I can't make the change locally and rebuild to test; sorry about that.

Format c++ and

(from the old issues page)
Luis46coco commented on Apr 13, 2017
C ++ writing format and user display formats

I think we should have a common site to share, discuss and reach agreements on internal and external formats, for example

I do not know if it is better (* .bin, * .dll) or with ";" Instead of "," and if you always add a space later or not, or use uppercase or lowercase letters

So far the format seems to be, lowercase and space after ","
I do not know if it's better, ";"

With respect to the c ++ format it seems a little long
command
{
Break;
}

I prefer

Command {
Break;
}

Or for a single instruction inside, use:

Command
Break;

Using "F4" as a CPU speedup

BGPierce commented on Dec 29, 2015
Since I run VCC quite often (read A LOT!), I find I use the increased CPU speed ("Configuration/CPU") set to the max most of the time. This setting not only speeds the CPU, but also increases screen refreshes and graphics speed. To change this setting, you open the conifg menu.
It would be nice to use F4 (unused) to set "max speed" on first press, then "minimum speed" on 2nd press.
OR.. use F3 (also unused) to slow down the CPU by 10% on each press until bottomed out, and F4 to increase the CPU by 10% on each press until maxed out. This would allow people with slower computers that cannot handle "max speed" to at least take advantage of increased speed without opening the config menu.
Any thoughts on this one?
B.P.

RS232 pak dll feature

(from the old issues page)
abcbarryn commented on Feb 3, 2016
It would be really nice to have an RS232 pak emulation that would connect to an IP and port address. That way I could use VCC to run terminal software or accept incoming connections without using a DriveWire server. DriveWire becker port support is nice, but having to run a server process just to get this ability is a pain.

Version 2.0.1f still shows "e"

Thank you for new version 2.0.1f.

Unfortunately it still shows version 2.0.1e - not a big deal but on the other side also not "nice".

Kind regards!

Text doesn't 'blink' on hardware text screens

(from the old issues page)
BGPierce commented on Jan 16, 2016
This has really been an issue since VCC was started. In a hardware text screen, when issuing a "BlnkOn(stdout);" (in OS9), the following text should "blink" on and off. This is a function of the GIME chip as it only works on a 'hardware' text screen (40x24 & 80x24) and not on graphic text screens.
This would have to be implemented in the GIME emulation. I'm not sure is this is implemented in Mess or not. I think it is.

Emulation of higher graphics issue

using the included floppy cart i tried to load and execute rupert rythm game.
There are 2 versions of this game on virtual disk available one won't load freezing the emulator the other loads but doesn't emulate sounds or graphics correctly.

Add multiple switchable ROMs on SuperIDE

(from old issues page)
Wersley commented on Jan 7, 2016
Add multiple switchable ROMs on SuperIDE, more like the real hardware. Allow selection of up to 4 ROMs and a switch to choose which is active.

Condense Plugins into main code base

(from old issues page)
ursine commented on Dec 16, 2016
Currently, the code is split into many plugins. Given that the system is now open source, having an external API is likely unnecessary. I would like to propose condensing the plugins into the main codebase. This would allow the compiler/linker greater insight into the code for optimization purposes, as well as reducing the system to a single exe rather than a bunch of dlls and an exe.
Thoughts/Ideas/Objections?

Loading an improperly formatted tape (wav) file mangles the original file

(from old issues page)
BGPierce commented on Jan 7, 2016
If you use “.wav” files, if the “.wav” file is not recorded in “8-bit, 44,100 khz”, VCC will mangle the file just by loading it, you don’t even have to “play” it. Most “standard” wave files are in 16-bit, 44,199 khz. These will not work in VCC and even if you just browse to them and select them into the tape interface, VCC will try to convert them to 8-bit and ruin the file. This applies ONLY to the wav format. The "cas" files are not wave formatted files and are not affected.

VCCX 4.3.0 Wish List

(from old issues page)
BGPierce commented on Dec 29, 2015
This will be where we can start listing the things we would like to see in upcoming revisions of VCC.
Not to say it's the "Coco 4" wish list where everyone wants 1024x728 display or 2 million colors, but instead listing simple things.... things more involved with the emulator's appearence and menus and not the Coco's enhancements.
I will start a list, then everyone can chime in with things they would like to see as well. You never know, some of it may come about and be part of the new VCCX !
B.P.

Keyboard:. Arrow keys

As of 2.1.0b the emulator does not recognize the arrow keys in any of the 3 default choices.

EQU Ver 5.0

EQU Ver 5 loads and runs. Problem is VCC is Write Protecting it. Can not make directories. get Error 242 - Write Protect. Same if I try and save a text file. Drive 0 and Drive 1 also Write Protected.

Window resize should be disabled

(from the old issues page)
Wersley commented on Jan 10, 2016
VCC allows you to try to resize the window, but it does not work correctly. Resize should be disabled or scaling implemented.

Need the Rs232 Pack in order to bring back Ribbs

ptaylor1984 commented on Feb 6, 2018
I would like to see the old Rs232 pack and some folks are showing more interested with running a bbs system. Using the same functions and features of the old Rs232 Pack would save from having to write several hundred lines of codes if it support the same memory address to receive, send and carrier detect. The incoming data control can be controlled using timer evens which most programing languages support to slow down the data to 9600 baud. So lets bring back the old bbs system because calling a bbs is not a real coco bbs unless its running on the Trs-80.

create floppy images

Can this emulator create floppy images from actually floppies from OS9 and RSDOS disks?

The "SuperIDE.dll" does not work

(from the old issues page)
BGPierce commented on Sep 2, 2016
In the current release (from vcc-1.200b, not the master), I've found that the "SuperIDE.dll" does not function. Everything seems to work up until it goes to read the drive on restart after making the proper setting in all the configs. I get the hdblba error "LBA Hard Drive Not Found", when there is a CF card image mounted.
I have tested these settings on both VCC 1.42 and VCC 1.43beta and the SuperIDE.dll works properly.
This may not be an issue once the latest commint is finally made as I know quite a few things are being rerranged.

my bad (please delete)

Where are mine + snowdogs issues? I think you had closed them but they don't show up at all ... I was just going to comment on snowdogs pull request about the appdata folder.

Projects & code have unnecessary dependency on MFC

Even though the projects do not utilize MFC all resource files are referencing afxres.h for their Windows resource specific symbolics and afxwin.h for functionality. These header files and the associated libraries are part of MFC which is not included in newer versions of Visual Studio and thus may not be installed. Since there is no real dependency on MFC libraries (except for AfxInitRichEdit which should be changeD) use of those header files should be changed.

This should be changed to use winres.h and windows.h respectively to remove the dependency and allow easier building with newer versions of VS and other platforms (cross compile from GCC).

interrupts appear to be edge-triggered instead of level-triggered

(from old issues page)
jaggies commented on Mar 2, 2019
While going back and forth between real hardware, I found VCC is tolerant of not clearing FIRQ/IRQ/NMI sources (e.g. forgetting to read GIME register 0xff93 to clear the interrupt). I had to break out the oscilloscope to figure out what was going on. :) Applications that are written correctly don't have a problem, of course, but it makes cross-developing code more challenging since code that works fine on the emulator locks up the real hardware.

What happened to Linux support?

I just discovered this project and it looks far, far more advanced than I would have expected. It even has HDD support and other things? This really brings me back!

It would be nice if Linus support were present because then we could make this work on a Raspberry Pi 400. From there, a bit of scripting and all that and I've got my old CoCo3 running OS9L2 and all of those things from decades ago. Really miss those days.

Getting Linux support would be a logical step to getting it working on Raspberry Pi hardware. Would donations of hardware help with the cause?

audio on followed by cload or cloadm does not play the cassette audio while loading

It's a little thing, but I used to enjoy "hearing" the data load into my coco (especially when loading madness and the minotaur, where you "hear" the graphical data loading while the screen is painting during the load).

however, in the emulator if I issue the "audio on" command followed by cload/cloadm/csavem/csave/csave"file",a I do not hear any cassette audio at all.

Acept *.pak enhancement

(from old issues page)
Luis46coco commented on Apr 14, 2017
The .pak cartridges have a header and a foot with information, which can easily be recognized and accepted, they are no longer used much, but it is easy to make them not block and run well, less problems for the new coco initiates.

.pak only serve for emulators in ms-dos, but it's easy to accept them.

Some time ago I made a converter

PRINT "Program for convert Color Computer Cartridge V.1.00 01/2011"
PRINT "By Luis Fernandez [email protected]"
PRINT "MS-DOS convert filenames to 8.3 and uppercase"
PRINT
PRINT "Use COCOPAK *.PAK *.CCC"
PRINT " or COCOPAK *.CCC *.PAK"
PRINT
PRINT "CCC to PAK"
PRINT " Add at first, 2 Bytes int len(arch) and 2 Bytes int &hC000"
PRINT " and at end, 33 bytes 0 (cero) and 2 Bytes int &hC000"
PRINT
PRINT "PAK to CCC"
PRINT " delete 4 bytes at first and 35 bytes at end"
END

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.