---------------------------------- VCC - Virtual CD Changer for DOS ---------------------------------- Version 3.0 for MPXPlay 1.62 Copyright (c) 2018 Brent Harris Freeware --------------- Version History --------------- Ver 0.95 (09-04-01) ------------------- * Fixed an issue which caused vcd.exe and vcdtsr.exe to hang when a Gamepad Pro isn't connected * Keyboard mappings were changed so the frontend can be operated using a PS/2 numeric keypad Ver 0.96 (09-23-01) ------------------- * Auto-Exit from MPXPlay, when trigger buttons are pressed on the GamePad Pro stopped working when the keyboard mappings were changed. This issue has been fixed * First public release Ver 1.0 (12-08-01) ------------------- * Fixed a timing bug in the input routine * After switching CDs, it will start at the beginning of the new selection Ver 1.01 (05-05-02) ------------------- * Fixed the "Runtime error 200" bug Ver 1.1 (03-03-02) ------------------- * Major rewrite of directory navigation routines. The result: on-the-fly directory ordering! * Renamed vcd.exe and vcdtsr.exe to vcc.exe and vcctsr.exe, respectively. People often use vcd as an abbreviation for "Video CD", something that this software has nothing to do with. Ver 1.11 (05-05-02) ------------------- * Fixed the "Runtime error 200" bug Ver 1.2 (06-22-02) ------------------- * VCCTSR --> MPXPlay 1.46 compatability! Auto-Exit from MPXPlay when done with Album * VCC --> Implemented bounds checking on the volume control Fixed a minor display glitch on the volume control Ver 1.3 (12-01-02) ------------------- * VCCTSR --> Interim release as features to be included in V2.0 get added Replaced volume meter with spectrum analyser. * VCC --> No changes since V1.2 Ver 2.0 (02-15-03) ------------------- * VCCTSR --> Removed volume display and put a bitrate display in its place Moved the volume control to the config screen Added a config mode for adjustment of the less commonly used MPXPlay settings: e.g. volume, speed, surround, etc. Added lyrics and nfo support Added OBD-II support for Elm32x-based scantools Added keyboard support Added command line help * VCC --> Removed volume control functionality Added support for multiple drives letters (up to 9)...must use same directory structure on all drives Can be used to launch realscan.exe for reading OBD-II troublecodes Added command line help Fixed an intermittant, but annoying, timing bug. Ver 2.1 (11-02-03) ------------------- * VCCTSR --> Added compression percentage display for Monkey's Audio Files Displays a calculated bitrate for WAV files instead of assuming a 44100K bitrate Minor speed optimizations Should consume slightly less stack space Fixed the "Elm32x not found" error which was being displayed on the LCD display whenever an OBD-II device isn't connected (even when the /noobdii command switch was being used). Removed this message entirely since it's nothing more than a leftover piece of debugging code. * VCC --> Overhauled the 'music file detection' routine. In previous versions if a directory didn't contain at least one MP3 or WAV file, a 'No audio tracks' error was displayed. APE, WAV, MP3, MP2, AC3, OGG, MPC, CDW, and AAC files are currently supported. Ver 2.11 (01-03-04) ------------------- * VCCTSR --> No changes since V2.1 * VCC --> Newer versions of MPXPlay like to load ID3 info even when a text file is fed to it. Added "-in 4" to the MPXPlay command string to tell it to give higher priority to the list file. Ver 2.12 (03-09-04) ------------------- * VCCTSR --> No changes since V2.1 * VCC --> Found and fixed a bug in the directory browsing routine which caused the program not to recognise a directory when its archive attribute is set. The behavior of -in switch in the latest MPXPlay alpha has changed. VCC will now check to see if fileinfo.txt exists in the current music directory. If so it'll pass "-in -il fileinfo.txt" to MPXPlay Ver 2.2 (11-20-05) ------------------- * VCCTSR --> VCCTSR crashed under MPXPlay v1.52 Switched over to a heavily modified version of Nir Sofer's unit to handle all of the low-level TSR functions Fixed a range-error bug in the routine that arranges text for the lyrics/description display VCCTSR can now protect itself from being installed twice Gray "/" key wasn't being read properly in the TSR External programs can perform a "Installation Check" on VCCTSR by calling function Int 10 with AX = DAADh, BX = C678h The return value, when installed, is: CX = A006h, ES = program segment prefix * VCC --> Add FLA, MP4, M4A, and DTS to the list of recognized filetypes. Removed recognition for the CDW filetype. Found and fixed a bug in the directory browsing routine which caused the program not to recognise a directory when its archive attribute is set. The behavior of -in switch in the latest MPXPlay alpha has changed. VCC will now check to see if fileinfo.txt exists in the current music directory. If so it'll pass "-in -il fileinfo.txt" to MPXPlay Ver 2.3 (11-06-07) ------------------- * VCCTSR --> Found and fixed a bug in the serial port initialization routine Since VCC v3.0 won't be ready for a while, a couple of things have been back-filled back into the 2.x branch... Track number display was no longer working when used with MPXPlay 1.54+. Changed the way that the track number is read from the screen, so that it'll work in newer versions of MPXPlay. Rewrote the Spectrum analyzer display routine. The new one should look a lot better. * VCC --> No changes since V2.2 Ver 3.0 (09-25-18) ------------------- * VCCTSR --> First public release since 2007. There was a long span of time when I had VCC and VCCTSR mostly-working, but alpha quality, at best. The biggest hurdle was getting my USB game controller to work reliably. In the summer of 2018, I found a workable solution: the Hobbytronics USB host board. The major changes, since v2.3, include: Removed OBD-II functionality, since I wasn't using it anymore and needed the COM port to use with the USB host board Replaced Gamepad Pro controller support with support for 10-button USB game controllers connected to a Hobbytronics USB Host board on COM2 Made the serial character display support generic enough to support character displays from various manufacturers Character display is no longer hard-coded to 20x4 Added a configuration program Added support for a limited amount of customization of the way the information is shown on the character display Compatiblity with VMware Workstation Player 12 Support for MPXPlay 1.62 * VCC --> VCC no longer talks directly to the serial ports. Instead is sends and receives data, using the TSR Fixed various timing bugs ---------- Disclaimer ---------- The author is not responible for any problems that arise from using this software. End-Users agree to use this software at their own risk. -------------------------------- Files included with this release -------------------------------- VCC.EXE The frontend that handles directory navigation VCCTSR.EXE A TSR which is active while MPXPlay is running VCCONFIG Configuration program for configuring the serial display and the gamepad GAMEPADT Gamepad testing program LCDECHO Command line program for sending lines of text to a serial character display. Useful at a batch utility. COMSWIT Reads the COM port status lines and returns an errorlevel code. Useful as a batch utility. README.TXT Documentation FRONTEND.BAT A batch file which is used to launch the frontend sofware --------------------------- Supported Hardware/Software --------------------------- * MPXPlay 1.62 (1.58 and later will probably work) * A Serial LCD connected to COM1. While I use a Matrix Orbital 2041 20x4 character display, displays from other manufacturers will probably work. * A 10-button USB Gamepad connected to a Hobbytronics USB Host Controller Board on COM2. I found that the Logitech Precision Gamepad 2 works works reliably with the Hobbytronics board. I also triedGravis Gamepad Pro USB gamepad but couldn't get consistant results. ------------ Installation ------------ * Make a directory for MPXPlay (e.g. c:\player). * Unzip MPXPlay to this directory * Configure MPXPlay.ini as follows: - Set MaxFilenames in mpxplay.ini to a non-zero value thats greater or equal to the largest number of music files that you'll have in a directory. The default for older versions of MPXPlay is 9999 - Set StartupType to 7 so that MPXPlay can pick up when it left off when pressing stop/play. - If you don't use crossfade, usecrossfade to 0 - If you're using a numeric keypad, instead of a gamepad, leave the key mappings at their default settings. * Edit autoexec.bat, and add the MPXPlay directory to the path statement * Unzip VCC30.ZIP to the MPXPlay directory * Make a directory for your music files (e.g. c:\music) * Go into your music directory at create subdirectories A,B,C,...,Z * Add references to vcctsr.exe and frontend.bat to the autoexec.bat (see the example below) --------------------- Configuration Program --------------------- VCC version 3.0 and later has a menu-based configuration program, called VCCONFIG.EXE The navigation is done by keyboard using the Up, Down, Page-Up, Page-Down, Enter and ESC keys The menu options are as follows: LCD Configuration - Provides the option to select the make/model of serial LCD, and provides the option to choose how items are displayed on the LCD. Add/Edit LCD Defs - From this menu you can create your own LCD definitions Gamepad Configuration - Select your make/model of gamepad from this menu Add/Remove Gamepad Defs - From here you can create your own gamepad definitions ---------------- Command Switches ---------------- VCC version 2.0 and later supports the use of command switches in both VCC.EXE and VCCTSR.EXE. Below is a list of supported command switches: VCCTSR [/NOKB] [/?] /NOKB Disables PS/2 numeric keypad support. Use this command switch if you're not using a numeric keypad. By default vcctsr intercepts all keyboard input while MPXPlay is running. This allows for a more convenient method of Disc switching, and provides access to the Nfo/Lyrics/Config/OBD-II modes when using a numeric keypad. It also eliminates the need to reconfigure MPXPlay's keyboard settings. /? Displays a help screen. VCC [musicdir] [/n] [/?] Note: Don't call VCC.EXE directly. If you do, the directory switching won't work properly. Instead, pass the command line info to frontend.bat Frontend.bat will automatically forward this information to VCC.EXE If in doubt, take a look at the examples below. musicdir This is the directory where the music files are located. Include a drive letter, but don't use a backslash at the very end. e.g. if your music is in c:\music replace musicdir with c:\music e.g. if your music is in the root directory on d: drive replace musicdir with d: /n Enables multiple hard drive support. Replace "n" with a number between 2 and 9. When using multiple drives (or partitions), one needs to keep the music directory naming consistant. For example if all of your music from A-M is on d:\music and the rest of your music is on e: drive you'd specify d:\music as your musicdir then put the rest of your music in e:\music Since there are two music drives you'd use the /2 switch /? Displays a help screen. -------- Examples -------- Example1: This example assumes the following: * "MSDOS 7.x", (comes with Windows 95/95b/98/98se) * A MPXPlay directory of c:\player * A music directory at c:\music * All music files are on the same drive/parition * A USB gamepad, plugged into a Hobbytronics USB host board config.sys ---------- STACKS=9,256 DOS=HIGH,UMB SHELL=C:\COMMAND.COM C:\ /E:512 /P DEVICE=C:\WINDOWS\HIMEM.SYS /TESTMEM:OFF autoexec.bat ------------ @ECHO OFF PATH C:\WINDOWS;C:\WINDOWS\COMMAND;C:\PLAYER; C:\WINDOWS\SMARTDRV.EXE /X 8192 C:\PLAYER\VCCTSR.EXE /NOKB C:\PLAYER\FRONTEND.BAT C:\MUSIC music directory --------------- c:\music\a c:\music\b c:\music\c .......... c:\music\z Example2: This example assumes the following: * "MSDOS 7.x", (comes with Windows 95/95b/98/98se) * A MPXPlay directory of c:\MPXPLAY * Music is stored in the root directory on d: (and e:) * Two hard drives (or paritions) are used to store the music * A USB gamepad, plugged into a Hobbytronics USB host board * A config.sys file similar to the one listed above autoexec.bat ------------ @ECHO OFF PATH C:\WINDOWS;C:\WINDOWS\COMMAND;C:\MPXPLAY; C:\WINDOWS\SMARTDRV.EXE /X 8192 C:\MPXPLAY\VCCTSR.EXE /NOKB C:\MPXPLAY\FRONTEND.BAT D: /2 music directory --------------- d:\a d:\b d:\c .... d:\m e:\n e:\o e:\p .... e:\z ------------ Adding Music ------------ VCC does not use playlists. Disc navigation is directory based. Disc information is stored in text files. Track information can either be stored in text files, or you can skip the text file and let MPXPlay get the track names from tags. Usage is best explained by example: Suppose you've just ripped a CD converted the music to FLAC format. Assume that the band is called "AC/DC" and the album title is "High Voltage". Keeping with the assumptions in Example 1 you'd... * Go into C:\MUSIC\A * Make a directory, lets say,"ACDC2" * Go into C:\MUSIC\A\ACDC2 and copy the music files into this directory, (01.FLA 02.FLA 03.FLA, etc) * Create a file called "DISCINFO.TXT" containing two lines: (no quotes) On line1 put "AC/DC" On line2 put "High Voltage" * Create a file called "FILEINFO.TXT" containing the track info: (no quotes) On line1 put "01.FLA AC/DC:It's a Long Way to the Top" On line2 put "02.FLA AC/DC:Rock 'N' Roll Singer" On line3 put "03.FLA AC/DC:The Jack" etc The "FILEINFO.TXT" file, as describe above, is stricly optional. I like to use text files because they're easier to edit. If the file isn't there, track naming will still work if your music files are tagged. ------------- Adding Lyrics ------------- Lyrics are stored in text files, one for each track. The filename is a two digit number and must be identical to the music filename, but with a .lyr file extension. For example, the lyrics file for track two would be named 02.LYR Put the song title on Line 1, skip a line, then type in the lyrics. ------------------ Adding an nfo file ------------------ An nfo file is a text file which contains a description of the CD. Put the band name on Line 1, then put the CD title on Line 2. Skip a line, then type in something meaningful. It could be a review of the CD, the history of the band, or anything else you feel like writing. Save it as DISC.NFO --------- Operation --------- The software is operated from the GamePad, or a numeric keypad. keys/buttons used vary somewhat depending on which mode the software is in. -Normal Mode- The software starts in Normal Mode once the boot process is complete. In Normal Mode, disc switching, track switching, rewind, fast forward, etc. can be done. The band name, CD title, track title, track number, spectrum analyser, track time and the bitrate are displayed. Function Gamepad Pro Numeric Keypad Rewind <1> Fast Forward <3> Pause / Unpause <2> Previous Track <4> Next Track <6> Stop <5> Play Previous Disc <-> Next Disc <+> Previous CD Group Next CD Group <*> Nfo Mode <7> Lyrics Mode <8> OBD-II Mode <9> Config Mode <.> -Lyrics Mode- In Lyrics mode, the lyrics for the current track (if available) are shown on the LCD display. Function Gamepad Pro Numeric Keypad Scroll Up <-> Scroll Down <+> Back to normal mode -Nfo Mode- This mode is similar to Lyrics mode, except a description of the current disc is displayed instead. The keys/buttons used are the same. -Config Mode- This mode is where some of MPXPlay's other settings can be accessed Function Gamepad Pro Numeric Keypad Volume Up <+> Volume Down <-> Speed Down <1> Speed Up <3> Bass Down Bass Up <*> Treble Down <7> Treble Up <9> Balance Left <4> Balance Right <6> Surround Down Surround Up <8> Back to normal mode ---------- Tech Stuff ---------- Directory navigation is done in the following way: * Frontend.bat calls VCC.EXE and passes it the music directory (and any other command line parameters it needs), then it runs the batch file go.bat (which was just created by VCC.EXE) While VCC.EXE is running: * Directory navigation is possible * The current disc/album are the only things displayed on the LCD Display Once a disc is selected: * The file go.bat is created in the music directory * Go.bat is run When go.bat is running, MPXPlay is run, then when done frontend.bat is called causing VCC to be run again. This completes the cycle. --------------- More Tech Stuff --------------- When MPXPlay is running, VCCTSR becomes active. Track information, bitrate and the spectrum analyser are read from screen memory and then displayed on the lcd. Keystrokes are faked in order to control MPXPlay. Lyrics, nfo, config, and OBD-II modes are provided by the tsr, as well. ----------- Limitations ----------- The is no method to adjust the LCD contrast in this software The is no method to play random tracks ----------------------------- Future possibilities / issues ----------------------------- Random tracks: No plans for this feature at this time. LCD Contrast Control: No plans for this feature at this time. Ability to uninstall the TSR: No plans for this feature at this time. Raspberry Pi support: Possible, but not in the near future. ---------- On the web ---------- http://thecoldfront.com Last updated on Friday, September 28, 2018. Copyright (c) 2018, Brent Harris