Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!uunet!husc6!mit-eddie!uw-beaver!cornell!batcomputer!braner From: braner@batcomputer.tn.cornell.edu (braner) Newsgroups: comp.sys.atari.st Subject: Re: How do RAM disks work? Anybody wanna post some source? Message-ID: <2622@batcomputer.tn.cornell.edu> Date: Sun, 11-Oct-87 12:37:16 EDT Article-I.D.: batcompu.2622 Posted: Sun Oct 11 12:37:16 1987 Date-Received: Mon, 12-Oct-87 22:12:11 EDT References: <1177@vaxwaller.UUCP> Reply-To: braner@tcgould.tn.cornell.edu (braner) Organization: Cornell Theory Center, Cornell University, Ithaca NY Lines: 22 Summary: Intercepts the Rwabs() vector [] The "eternal" ramdisk (and probably most others) work by plugging their own routine's address into the system vector holding the "hard disk Rwabs() vector". That vector is used by the BIOS trap code when the call is Rwabs(). The parameters passed to it are as described in the calling specs for Rwabs(), plus/minus some shift in the stack pointer (can't remember now). The RAMdisk code checks the drive number, and if it's not the RAMdisk it jumps to the original Rwabs() address. If the eternal ramdisk does not work with the new ROM it is probably due to the way it installs: it assumes that upon a warm reset the ST leaves the memory-size system variable alone, and the physical RAM above that point intact. Does the new ROM do otherwise? About 12-bit FATs (the standard in GEMDOS floppies): With 5 sectors allocated for the FAT (as opposed to 2 in MS-DOS) we have 5*512*8/12=1706 FAT elements. Each refers to one CLUSTER, which in GEMDOS is 2 sectors, or 1K. Thus the FAT can handle a 1706K RAMdisk. This is, of course, not enough for HARD disks so they must use larger clusters --- or FATs. - Moshe Braner