Atari Ramdrive 1.0
Please Note: These programs are for the Atari 8-bit line of computers. They will NOT work on any other type of computer. There are no plans to produce a Win 95/98/NT version of Atari Ramdrive.
Started in 1994, and 3 years in the making, a DOS-independent ramdisk utility that will use your extra RAM. Easily configurable (I hope) to be able to use as much extra RAM as you've got or as much as you want to use.
I initialy started to write this in order to satisfy 2 ambitions:
- run DOS 3 from a RAMDISK (achieved 26/03/97 in the early hours)
- Play ZORK from a RAMDISK (achieved 12/04/97 in the early hours)
Features:
- Runs under DOS 2.0, DOS 2.5, DOS 3.0, MyDos 4.50, MyDos 4.53/4, DOS II+ and others
- Ramdisk sizes ranging from 8K up to 1Meg or more.
- Up to 10 ramdisks active at any time
- Write protect your ramdisks
- 8K Ramdisk using RAM under BASIC ROM - for people with only 64K RAM
- Coldstart at a keypress and without losing your ramdisks.
- Support for non-standard expanded memory schemes
- Configurable with SIO commands
- Simulates single, enhanced or double density, single or double sided disks
- Play Zork I from ramdisk
- Easily configurable with configuration files
Its got some quite nifty features too. Such as allowing you to reboot and maintain the ramdisk, and even reboot from the ramdisk. You can have multiple ramdisks active at one time, splitting up your expanded RAM banks between them. Each ramdisk is assigned a drive identifier in the usual way (i.e. D1: D2: D3: etc.), all this is done from a configuration file, so there is no need to make any changes to the code. The ramdisks can be renumbered on the fly, and you can even swap their identifier with a physical drive. For example if D1 is your physical drive and D2 your ramdisk, you can have all calls to D1 go to your ramdisk and all calls to D2 to your physical drive without changing any of the switches on the back of your 810/1050/XF551...
On the down side it does need to switch the OS from ROM to RAM, and so will not work with any other program that uses that RAM for other purposes, such as Turbo Basic... still you can't have everything. Plus it only supports one address for bank switching, this defaults to 54017 (PORTB), but that can be modified to suit your computer.
Known bugs
The following are all the bugs I've discovered in Ramdrive 1.0, if anyone finds any more, then let me know.
- The TRAP_RESET command in the CFG file allows the reset code address to be set to the RAM under the O.S. ROM area (49152-65535) which will be switched out when the RESET key is pressed anyway, hence calling a random routine in the O.S. instead of the intended RESET key code, with the potential for nasty things to happen. This will be fixed in version 1.1, until then, if you use the TRAP_RESET command, make sure that the first parameter is less than 49152.
- You cannot drop into the Self Test mode if ramdrive is running. This means that typing BYE in BASIC will not take you to the Self Test screen, but will probably crash your machine instead. This is because the Self Test ROM and the shadow OS RAM (which ramdrive uses) cannot be active at the same time. This will be fixed in version 1.1, until then, don't use the Self Test while ramdrive is switched on, or if you must use the Self Test (why?) then switch ramdrive off first with the RAMDOFF.OBJ file, and then drop into the Self Test.
- The XIO command doesn't check that the channel specified in the second parameter to this command is free. Most of the time this won't cause any trouble, but under MyDOS 4.50 at least, it can cause the wrong drive to be formatted! MyDOS 4.50 uses channel 1 to load binary files (in this case, the ramdrive executable), and it won't be closed until the ramdrive load is complete. If you issue an XIO FORMAT,1,0,0,"Dn:" from the RAMDRIVE.CPY file under MyDOS 4.50, where n=your ramdrive number, the drive ramdrive is being loaded from will be formated instead of your ramdisk! Avoid using channels you know are in use for other things when using the format command (especially channels 0, 1 and 4). Version 1.1 of Ramdrive will only let you issue XIO commands on free channels.
- The TRAP_RESET command will only work with 3 parameters, despite what the manual says *oops*. Attempting to use this command with less than 3 parameters will result in a Bug alert! error message. Version 1.1 of Ramdrive will allow 1, 2 and 3 parameter versions of this command. Until then, use all 3 parameters.
- The SPARE_XE constant used in the first parameter to the TRAP_RESET command points at location 590. However the area of RAM around location 590 is always set to 0 on a warm-start, meaning the code that will re-enable the ramdrive after the RESET key has been pressed will be erased. However the OS will still try to call the code that was at 590 when RESET is pressed, causing your computer to crash. Version 1.1 will change SPARE_XE to be 1005, don't use SPARE_XE in version 1.0, use PAGE6 or 1005 instead.
- There is a problem with some dual 320K/1088K upgrades. This upgrade has a switch to select between 320K and 1088K mode. In 1088K mode you lose BASIC, while as in 320K mode, BASIC can be enable and disabled in the usual way. The problem occurs when using the machine in 320K mode (64K main + 256K extended) and the RAMD256K.CFG or smaller config file. Symptoms are that if BASIC is toggled (on or off) after Ramdrive has formatted the ramdisk, then the ramdisk will appear to have been corrupted. One instance where this happens is if you boot with BASIC, and then load Textpro. Textpro will detect this, disable BASIC and drop you back to DOS, if you then do a directory on your ramdisk(s) they will appear to have been corrupted. This problem will occur with this upgrade when using other ramdisks too. This is because even though bit 1 of PORTB is used to select BASIC in the normal way, it is also being used to select the extended RAM banks. So the banks you have access to when BASIC is enabled are different to those you can access when BASIC is disabled. You can recover you ramdisk by setting BASIC back to its intial state (either enabled or disabled). To stop the problem re-ocurring change the BANK_BITS command in the RAMDRIVE.CFG file to read BANK_BITS XE_256K, %00000010, XE_256K.
Notes on downloading binaries
If your web browser displays the binary files on the screen instead of saving them to a file then you need to tell it to save into a file. The procedure for doing this varies from browser to browser and from platform to platform. Try right clicking on the link, or left clicking whilst holding down the Shift key. Lynx users should try pressing D to download the file.
Here's a ZIP file containing all the files. This file contains all the files listed further down on this page.
These are the manuals for Ramdrive 1.0, there are 5 manuals available, the user manual covers the basics, the CFG file commands covers the commands available in the RAMDRIVE.CFG file, the CPY file commands covers the commands available in the RAMDRIVE.CPY file, the errors manual lists the possible errors and how to fix them and the technical manual is the technical stuff, detailing how it all works. They could do with some nicer HTML formatting, but at least it's all there.
Here is the source code compressed in a ZIP file. Unzipping this will
produce 6 source code files in AMAC format.
The following are links to the configuration files available for Ramdrive 1.0. Ramdrive has 2 configuration files, RAMDRIVE.CFG and RAMDRIVE.CPY. The first identifies your expansion type (bank size, address, number of banks, etc), and sets up your ramdrives ready for use. The second formats your ramdrives and copies files and/or sectors onto them. Allowing you to set up your ramdrive(s) to meet your own needs.
These links are to files with Unix return characters, they need to be converted before being used on an Atari 8-bit.
These files are the same as above, but with ATASCII return (155) characters, suitable for downloading directly to an Atari 8-bit.
Comments, suggestions, bug reports, etc. are all welcome.
mail me here back to Atari page