When converting all the old Radical Rhythms tracker files for the archive, I recognized that there are some file-formats, you just can't play right anymore with todays hardware.. It took some nights browsing ebay for me to decide that there's only one solution to this: I'll have to buy a vintage PC and at least a Gravis Ultrasound (GUS) soundcard and do analogue rips of the tracks.
Problem was: A GUS costs more today, than it did back then! €200,- and more, coming from somewhere outside of germany was just too much for me...
A complete 486 DX2/66 with 32MB RAM, a Gravis Ultrasound PnP PRO with 8MB RAM and all the stuff, he could find in his cellar for €150,-
...And so my odyssey to DOS-Land began two weeks ago... :)
Here, I'ld like to collect all the infos and knowledge, that came back to my mind the second, I started the PC: Techniques, Tools, Links - everything that may come in handy, if you're as crazy as I am and want to setup a vintage DOS PC, again..
Many of the tools, I'll talk about, are abandonware, now. This means that there's noone sueing you for downloading them, but it doesn't mean, it's legal to spread them on the interwebs.. So I'll only provide you with links and let the dirty work of hosting this to the others... ;)
First of all, we need to get DOS up and running and set it up to have network access and a decent amount of free ram... Here's, what I did:
This was the last version of standalone MS-DOS. You can download diskimages from kirsle.net.
You'll need 3 3.5" HD FloppyDisk, a FloppyDiskDrive connected to your modern PC and a tool for writing the images to disk. I used Disoriented DiskWrite for Windows, OSX- and Linux users might want to use dd..
Since I had no FloppyDrive on my modern PC, I bought a USB connectable, external one, some years ago, which still does it job: DeLOCK Floppy 3.5". Bigger problem was finding floppydisks that still worked and didn't break the second, I tried to use them.. ;)
Installation is pretty straight forward: Insert disk 1 to your vintage pc, make it boot from A: at the BIOS, boot it and follow the instructions of the installer partitioning the harddisk or not and formating at least drive C:..
If your harddisk is bigger than 400MB, you might encounter problems with the installer not recognizing the HDD, see below "HDD >400MB" for further information on that.
Voila: Who said vintage PCs are slow? A complete OS installed in less than 10 minutes!
XFS (NFS client)
Something making work with your new favourite PC a lot easier is XFS: Not the filesystem, but a MS-DOS NFS client! So you can mount network-shares from your NAS (or some other NFS-capable server, you have on your existing LAN...)
This fine piece of software was freeware and the last MS-DOS version is from 1995. You can find it on the internet or at the download-section of this website...
All you need for it to work is a ethernet capable NIC and a matching "packet driver". These came with the cards, but with some searching, at least I found mine online, too. There's a guy coding opensource versions of vintage NIC packet drivers, where I found the only working one for my 3COM 3c509b: Crynwr Software
On your modern PC, download XFS and a matching packet driver for your NIC and extract both to a floppy drive, again, hopefuly for the last time.
On your vintage PC make a directory on your drive C:, called "XFS" (or something else, somewhere else, but I'll use these default paths for this howto...), and copy the contents of the floppy disks into it.
Next, you'll have to edit the included batchfile "XFS.BAT" and change the packet driver:
REM Change this to whatever your packet driver is:
loadhigh ne2000 0x60
REM XFS stuff - leave untouched until further notice..
loadhigh winpkt 0x60
loadhigh xfskrnl 0x60
For my NIC, I only had to change "ne2000" to "3c509"..
The paramater after every command is the software irq to be used by the packet driver and xfs. 0x60 is the default value, which worked fine for me...
Next, you'll have to edit the some XFS configuration files. The first one is located at C:\XFS\INIT.
At this minimal setup, some of the stuff in there isn't needed and some doesn't even work, so all you need for now is this:
init dos sm=255.255.255.0 gw=192.168.23.1 csum=off
mount z: nas:/volume1/dos
While dos is your hostname, 255.255.255.0 is your netmask, 192.168.23.1 is your gateway, z: is the destination drive for your nfs mount and nas:/volume1/dos is the nfs mount on my nas, called "nas"...
Since there's no DHCP (yet), you'll need to tell xfs the addresses of all the hosts needed. The file for doing this is located at C:\XFS\HOSTS:
192.168.23.11 nas nfs-server
Again: This is my network setup: You might have to change the IPs for some matching your LAN...
Next, you'll have to edit your autoexec.bat for the first time. Still looking familiar, doesn't it? ;) But brace yourself: Don't do all the modifications, you might still remember! Most of them are done automatically, later and all of them will get overwritten.. ;)
Only attach your XFS directory to the PATH variable:
Save, exit and edit your config.sys to attach this line:
So mapping the NFS mount to Z: will actually work...
Save, exit and reboot.
After successful reboot, you should be able to start the network stack by issuing the command "XFS".
If everything worked out, there should be a drive Z: containing your NFS share.
For server-side configuration please see the manual of the server, you're using..
Warning: If the server is running on a case sensitive system, all the files in the share need to be lowercase! XFS can't handle uppercase filenames even (or because) they're all uppercase on DOS. The result will be unreadable filenames with strange characters...
You can extract ZIP archives to all lowercase filenames by using the parameter "-LL" with the linux commandline tool "unzip":
unzip -LL filename.zip
Info: There's another very interesting, somehow related project porting classic TCP/IP services to MS-DOS: mTCP. There, you'll have a DHCP client and a lot more stuff you're used to from modern systems, but I didn't manage to get this working for now... I'll keep you updated on this..
"DOS without 4DOS? Never again" was one of the catchphrases, that popped into my mind the second I saw the default boot-sequence of MS-DOS..
To be honest: I had no idea, why this was and I guess, I still haven't found out about half of its features, yet, but here are four that made DOS usable for me, again:
- TAB completion
- Colored directory indexes
- Insert by default
There's also a v8.0 of 4DOS, but I could'nt manage to install it on my plain DOS machine. My uneducated, fast and unverified guess is, that this version is for later DOS-Versions that came with WIN95 and 98..
4DOS became Freeware at v7.50, so you can legally download it on their website: 4dos.info.
Extract it the self-extracting archive on your modern PC (make sure all the filenames are lowercase, when using NFS to push it to your vintage PC) and copy them to your vintage PCs directory C:\4DOS.
Now, you'll have to edit your config.sys for the first time. Still looks familiar, doesn't it? ;) But there's no need to make all the changes, you might still remember. This'll be done automatiaclly at the next step..
Simply attach the following line to the bottom of your file:
SHELL=C:\4DOS\4DOS.COM C:\4DOS /P
Save, exit and edit your autoexec.bat by attaching these lines:
Save and exit.
For 4DOS to become even awesomererer, you'll need to configure it. I found a nice example 4dos.ini with comments on the internet and modified it a little bit to match my taste and needs:
4StartPath = C:DOS\ ;Path for 4START and 4EXIT (file)
Alias = ;Size of alias list (256..32767)(1024)
AutoExecPath = ;Path and optional file name for AUTOEXEC.BAT
AutoExecParms = ;Parameters for AUTOEXEC.BAT
DirHistory = ;Size of directory history list (256..2048)(256)
Environment = 1024 ;Size of environment (160..32767)(512)
EnvFree = 1024 ;Required free space in environment (128..32767)(128)
HelpOptions = /S4 /L ;Options for help system
;HelpPath = ;Path to 4HELP.EXE (obsolete)
History = ;Size of history list (256..8192)(1024)
INIQuery = ;Query for each line in 4DOS.INI (yes/no)(no)
InstallPath = C:DOS\ ;Location of 4DOS files (4DOS,4HELP,OPTION)
LocalAliases = NO ;Local vs. global aliases (yes/no)
LocalDirHistory = ;Local vs. global directory history (yes/no)
LocalHistory = ;Local vs. global history (yes/no)
PauseOnError = YES ;Pause on errors in 4DOS.INI (yes/no)
REXXPath = ;Set path to PC-DOS 7 REXX interpreter
Swapping = XMS, EMS, C:\ ;Swapping type(s) (EMS,XMS,Path,None)
TreePath = ;Path for directory database (Path)(C:\)
UMBAlias = YES ;Load global aliases in UMB (yes/no/1..8)
UMBDirHistory = ;Load global directory history in UMB (yes/no/1..8)
UMBEnvironment = YES ;Load master environment in UMB (yes/no/1..8)
UMBHistory = ;Load history in UMB (yes/no/1..8)
UMBLoad = YES ;Load resident part of 4DOS in UMB (yes/no/1..8) ;**** 4DOS Help Topic: Configuration Directives ****************************** AmPm = AUTO ;Time display format (yes/no/auto)(no)
ANSI = AUTO ;ANSI driver state (auto/yes/no)
AppendToDir = ;"\" on directory names in filename completion (yes/no)(no)
BatchEcho = NO ;Default batch file echo state (yes/no)(yes)
BeepFreq = ;Default beep frequency (0..?)(440)
BeepLength = ;Default beep length (?)(2)
CommandSep = ;Multiple command separator character (key)(^)
CDDWinHeight = ;Position and size of directory change window [see there](3,3,72,16)
CursorIns = 50 ;Cursor shape in insert mode in % (0..100)(100)
CursorOver = ;Cursor shape in overstrike mode in % (0..100)(15)
DecimalChar = ;Decimal separator (./,/auto)(auto)
DescriptionMax = 256 ;Maximum length of file descriptions (20..511)(40)
DescriptionName = ;Name of file to hold file descriptions (file)(DESCRIPT.ION)
Descriptions = ;Enable / disable description processing (yes/no)(yes)
EditMode = INSERT ;Editing mode (insert/overstrike)(overstrike)
EscapeChar = ;4DOS escape character [see there](Ctrl-X)
EvalMax = ;Max digits after decimal point in @EVAL (0..8)(8)
EvalMin = ;Min digits after decimal point in @EVAL (0..8)(8)
FileCompletion = ;Filename completion by extension [see there]
FuzzyCD = 2 ;Selects Extended Directory Search mode (0..3)(0)
HistCopy = ;History copy mode (yes/no)(no)
HistLogName = ;History log file name (Path\file)(4DOSHLOG) [use LOG /H on]
HistMin = 3 ;Minimum command length to save (0..256)(0)
HistMove = YES ;History move mode (yes/no)(no) [if yes:HistoryCopy=no]
HistWrap = ;History wrap mode (yes/no)(yes)
LineInput = ;Enable / disable line input mode (yes/no)(no)
LogName = ;Log file name (Path\file)(4DOSLOG)
NoClobber = ;Overwrite protection for output redirection (yes/no)(no)
ParameterChar = ;Alias / batch file parameter character [see there](&)
PopupWinHeight = ;Position and size of popup windows [see there](40,1,36,12)
Printer = ;LIST print device (device)(LPT1)
ScreenColumns = ;Screen width
ScreenRows = ;Screen height
TabStops = ;Tab width in LIST (1..32)(8)
ThousandsChar = ;Thousands separator (./,/auto)(auto)
UpperCase = ;Force file names to upper case (yes/no)(no)
Win95SFNSearch = ;Control short filename search in Win95/yes/no)(yes) ;**** 4DOS Help Topic: Color Directives ************************************** BrightBG = NO ;Bright background colors (yes/no)
CDDWinColors = WHITE ON BLUE ;Directory change window colors (color)(reverse)
;ColorDir = ;Directory colors [see there] I have the following:
ColorDir = DIRS:BRIGHT YELLOW; COM EXE:RED; BTM BAT:BRIGHT BLUE; DOC DOK TXT:GREEN; ZIP ARC ARJ LZH LHA PAK RAR ZOO SQZ:MAGENTA; GIF PCX BMP TGA IMG TIG JPG:BRIGHT YELLOW; Directory colors
InputColors = ;Input colors (color)[ANSI required]
ListboxBarColors = WHITE ON BLUE ;Light bar color in list boxes (color)
ListColors = ;LIST display colors (color)(CLS,COLOR or StdColors)
ListStatBarColors = WHITE ON BLUE ;LIST status bar colors (color)(reverse)
PopupWinColors = WHITE ON BLUE ;Popup window colors (color)(reverse)
SelectColors = ;SELECT display colors (color)(CLS,COLOR or StdColors)
SelectStatBarColors = ;SELECT status bar colors (color)(reverse)
StdColors = ;Standard display colors (color)[ANSI if sticky desired] ;**** 4DOS Help Topic: Key Mapping Directives (only defaults listed) ****** ;********************** General Input Keys ************************************ Backspace = ;Deletes the character to the left of the cursor (key)(BKSP)
BeginLine = ;Moves the cursor to the start of the line (key)(HOME)
Del = ;Deletes the character at the cursor (key)(DEL)
DelToBeginning = ;Deletes from the cursor to the start of the line (Ctrl-HOME)
DelToEnd = ;Deletes from the cursor to the end of the line (Ctrl-END)
DelWordLeft = ;Deletes the word to the left of the cursor (Ctrl-L)
DelWordRight = ;Deletes the word to the right of the cursor (Ctrl-R,Ctrl-BKSP)
Down = ;Moves the cursor or scrolls the display down (DOWN)
EndLine = ;Moves the cursor to the end of the line (END)
EraseLine = ;Deletes the entire line (ESC)
ExecLine = ;Executes or accepts a line (ENTER)
Ins = ;Toggles insert / overstrike mode (INS)
Left = ;Moves the cursor or scrolls the display left (LEFT)
NormalKey = ;Deassigns a key [see there]
Right = ;Moves the cursor or scrolls the display right (RIGHT)
Up = ;Moves the cursor or scrolls the display up (UP)
WordLeft = ;Moves the cursor left one word (Ctrl-LEFT)
WordRight = ;Moves the cursor right one word (Ctrl-RIGHT) ;********** Command-Line Editing Keys (only in command-line and only in 4DOS) * AddFile = ;Keeps filename completion entry and adds another (F10)
AliasExpand = ;Expand aliases without executing them (Ctrl-F)
CommandEscape = ;Allows direct entry of a keystroke (Alt-255)
DelHistory = ;Deletes a history list entry (Ctrl-D)
EndHistory = ;Displays the last entry in the history list (Ctrl-E)
Help = ;Invokes the help system (F1)
LineToEnd = ;Copies the current line to the end of the history (Ctrl-ENTER)
LFNToggle = ;Switches filename completion between LFN and SFN (Ctrl-A)
NextFile = ;Gets the next matching filename (F9,TAB)
NextHistory = ;Recalls the next command from the history (DOWN)
NormalEditKey = ;Deassigns a command-line editing key [see there]
PopFile = ;Opens the filename completion window (F7,Ctrl-TAB)
PrevFile = ;Gets the previous matching filename (F8,Shift-TAB)
PrevHistory = ;Recalls the previous command from the history (UP)
SaveHistory = ;Saves the command line without executing it (Ctrl-K) ;***************** Popup Window Keys ****************************************** DirWinOpen = ;Opens the directory history window (Ctrl-PgUp)
HistWinOpen = ;Opens the command history window (PgUp)
;NormalPopupKey = ;Reassigns a popup window key [see there]
PopupWinBegin = ;Moves to the first line of the popup window (Ctrl-PgUp)
PopupWinDel = ;Deletes a line from within the popup window (Ctrl-D)
PopupWinEdit = ;Moves a line from the popup window to the prompt (Ctrl-ENTER)
PopupWinEnd = ;Moves to the last line of the popup window (Ctrl-PgDn)
PopupWinExec = ;Executes the selected line in the popup window (ENTER) ;************ LIST Keys (only inside LIST) ************************************ ListExit = ;Exits the current file (ESC)
ListFind = ;Prompts and searches for a string (F)
ListFindReverse = ;Prompts and searches backward for a string (Ctrl-F)
ListHex = ;Toggles hexadecimal display mode (X)
ListHighBit = ;Toggles LIST's "strip high bit" option (H)
ListInfo = ;Displays information about the current file (I)
ListNext = ;Finds the next matching string (N)
ListPrevious = ;Finds the previous matching string (Ctrl-N)
ListPrint = ;Prints the file on LPT1 (P)
ListWrap = ;Toggles LIST's wrap option (W)
;NormalListKey = ;Deassigns a LIST key [see there] ;**** 4DOS Help Topic: Advanced Directives *********************************** ;ClearKeyMap ;Clear default key mappings [no value!]
CritFail = ;Automatic fail on critical errors (yes/no)(no)
Debug = ;Set debugging options (1/2)
DiskReset = ;Reset disk drives on file commands (yes/no)(no)
DVCleanup = ;Clean up on DESQview window close (yes/no)(yes)
FullINT2E = ;Full interrupt 2E support (yes/no)(yes)
Inherit = ;Inherit aliases and history to 2nd shell (yes/no)(yes)
MessageServer = ;COMMAND.COM message server (yes/no)(yes)
NetwareNames = ;Novell Netware support (yes/no)(no)
NextINIFile = ;Set secondary shell .INI file name (Path\file)
OutputBIOS = ;Use BIOS instead of direct video output (yes/no)(no)
SDFlush = YES ;Control SMARTDRV write-behind buffers (yes/no)(no)
StackSize = ;Internal stack size (8192..16384)(8192)
SwapReopen = ;Reopen swap file if it is closed (yes/no)(no)
UniqueSwapName = ;Use unique swap file name (yes/no)
Win95LFN = ;Disable long filename support (yes/no)(yes) [Primary]
;BatchEcho = No [Secondary]
;BatchEcho = No ; ---------- ========== E * N * D * E ========== ----------
Copy this ini-file completely, partially or not at all (as this step is optional..), but reboot when you're finished...
Now, 4DOS is enabled. Dispatch a "dir" to see it at work. Or even better: type "di" and press TAB. :)
One thing about DOS was it's memory management. There were 640kb of base memory and the more you had free, the better it was (and you were! ;) ).. THE tool, I always used for this was QEMM: The Quarterdeck Expanded Memory Manager.. First of all, it's a better replacement for Microsofts EMM386.EXE, but it also comes with a pretty good optimizazion tool for freeing up as much of your 640kb base memory as possible.
This is classic abandonware: Quarterdeck was aquired by Symantec in 1997, v8.0 of QUEMM was released in 1995 and support has long dropped. So, you'll find various sources for it on the internet.. One is vetusware.com (Update).. There's also a serial included with these archives...
Extract all the archives of v8.0 to one directory on your NFS share and the update to another. Beware of uppercase filenames!
On your vintage PC cd to the directory you just created on your NFS share, start INSTALL.EXE and follow the instructions. You can find a working serial in the file "KEY".
When asked to run OPTIMIZE, say no and simply finish the installation. Then copy over the upgrade file QEMM803D.EXE to your QEMM installation dir (e.g: C:\QEMM), run it, then RUNME.BAT.
Reboot, when done. Then run optimize manually by invocing "OPTIMIZE.EXE".
This will reboot and analyze the shit out of your PC and you'll end up with a decently optimized boot process and a maximum of available RAM.
For even more RAM, you can tweak your QEMM settings with "QSETUP.EXE": Try enabeling "Stealth ROMs" at "(P) Review or change QEMM parameters". If it breaks, you can still revert your changes later...
Always remember to rerun OPTIMIZE.EXE everytime you change anything with your config.sys, autoexec.bat or, of course, your QEMM configuration...
Now, your system is setup decently and ready to be used and abused...
But there's more! All these little tools and helpers making your everyday easier: An ANSI driver, mouse drivers, vesa driver, doskey, norton commander, ....
Don't make it "DEVICEHIGH", but run QEMMs OPTIMIZE.EXE afterwards...
You can also use a modified ansi driver from the FreeDOS project.
Yeah, well.. ..Depends on your mouse.. I found the matching one for my ATI Vantage Mouse (yes, it's connected to the VGA adapter!) over there: ps-2.kev009.com.
|ATI Vantage drivers||Download|
Same goes for your graphics adapter: For plain textmode, you don't need a driver, but when it comes to graphics, at least a generic vesa driver can come in handy. A specific one for mine came with the same archive containing my mouse drivers..
|ATI Vantage drivers||Download|
For a bash-like command history when pressing "cursor up", you'll have to install DOSKEY by attaching it to your AUTOEXEC.BAT:
Save, exit and rerun OPTIMIZE.EXE...
The original..! ;) Find it at vetusware.com...
|Norton Commander v5.5||Download|
And there's more: More specific to my own personal setup and needs:
There's a website collecting all the installation disks and files, so there you can find everything, you need, for your beloved GUS - no matter, which revision: gravisultrasound.com.
Remember rerunning OPTIMIZE.EXE after installation...
|Gravis Ultrasound Drivers||Download|
SoundBlaster 32 / AWE32
What was really shocking was were I found the drivers: On the official Creative Labs download page! :D Now that's what I call LTS! ;)
|SoundBlaster 32 Drivers||Download|
The version, you want to run, is v2.08. There is a v2.09, but this was beta and buggy... Find it over at scene.org...
While setting up this beast, I encountered various problems. Some of them were already described and/or avoided at the text above, but some deserve their own section:
HDD > 400MB
During times there were various soft- and hardware limits to harddisk sizes. The one, I encountered, was "400MB"... My AMI BIOS from 1993 correctly recognizes HDDs up to 8,4GB, but MS-DOS can't handle so many cylinders. But there is help: Something, I never knew or used: OnTrack DiskManager.
This tool software-emulates less cylinders, so DOS can handle 'em. This is no problem, since even back in the 90ies, the cylinders-setting of harddisks was nothing but software-emulated fake for backward-compatibility purposes. (Read more at wikipedia...)
I never got to write the needed disk-image with the version above (I guess it's because of the USB connection..), but there also was a version made especially for my harddisk by Maxtor, you can find over at ibm-pc.org...
This partitions your HDD and installs to $somewhere (I honestly don't know - can't be the mbr, 'cos I rewrote it after that and it's still working..), but it's OS independant, so if you get the generic version of OnTrack DiskManager running, you can boot from that disk, prepare your harddisk and then install MS-DOS to it (without re-partitioning the hdd!).
Since my PC came with a 200MB HDD installed and I got the 8,4GB one way later, I went another way:
I had MS-DOS installed to my 200MB HDD and used it together with the Maxtor edition of DiskManager to prepare the new 8,4GB HDD connected as primary slave.
Later, I formated the to-be-drive-c using "/s" to make it bootable:
C:\> format d: /s
and simply copied over all the rest using norton commander.
This should normally be enough and rewiring the HDDs to make the new one primary master should be sufficiant to boot it.
If it doesn't, maybe the partition isn't marked "bootable", yet. I tried doing it with some linux recovery distribution, but somehow, this didn't work.. So, I downloaded a MS-DOS Bootdisk from allbootdisks.com, rewired the HDDs (remember to manually run HDD auto-detection at your BIOS everytime, you rewire.. ..And don't forget the jumpers (Master/Slave/Single) and cable positioning (Last position = master, middle = slave)..! ;)
I booted from that floppy, ran fdisk to mark the partition, just created, as bootable / active, saved the partition table, rebooted and it worked. :)
At some point, I also issued an extra "fdisk /mbr" on the new partition to rewrite the Master Boot Record, but this should'nt be needed - I'm just noting it to be sure...
DOS is picky with its configuration, especially the memory managers, so you'll need special boot-sequences for many games and demos.
Since MS-DOS v6.22 does support a simple bootmenu, I've created some configurations for my most usual scenarios: With and without networking, with and without QEMM, with or without EMM386.EXE...
This is pretty easy. Simply edit your config.sys and autoexec.bat to match the following examples:
Menuitem=JUMPPOINT1, First Configuration
Menuitem=JUMPPOINT2, Second Configuration
REM Common configuration to be loaded with every menuitem
REM First configuration goes here...
REM Second configuration goes here...
REM Common configuration to be loaded with every menuitem
REM First configuration goes here...
REM Second configuration goes here...
REM More common configuration or eof...
Work in progress
Since I'm still fiddeling with this continuous source of joy and I'm still learning and remembering stuff every day, this article is WORK IN PROGRESS for now.. ..I'll keep updating it with more hints and clues the next weeks and months...
And I guess, I'll make it more readable, too... Soon... ;)