Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!utgpu!water!watmath!clyde!rutgers!ucla-cs!fan From: fan@ucla-cs.UUCP Newsgroups: comp.os.minix Subject: Re: EMS spec Message-ID: <5664@shemp.UCLA.EDU> Date: Thu, 23-Apr-87 14:29:11 EST Article-I.D.: shemp.5664 Posted: Thu Apr 23 14:29:11 1987 Date-Received: Sat, 25-Apr-87 06:41:24 EST References: <497@gouldsd.UUCP> Sender: root@CS.UCLA.EDU Reply-To: fan@CS.UCLA.EDU (Roy Fan) Organization: UCLA Computer Science Department Lines: 35 Keywords: so how *does* it work ? ---------- I am also thinking about creating an EMS ramdisk instead of using system ramdisk. I have the book, but I didn't have the disks yet. If I read the book correctly, I think that in order to implement an EMS ramdisk: (1) the EMS ramdisk can have a maximum of 1MB since the pointer they use is only 16 bits (the segment). This doesn't seem right though, there might be something I miss. (2) you will need an EMS driver that will map the logical memory into the 64K physical memory. For a very simple ramdisk driver, I was thinking of mapping the first bank to the beginning of the logical memory, and the rest 3 banks after that. That way, you will have a minimum of 48K to transfer. And if the process requests more than 48K, you could break them into parts. (3) I don't know who called the ramdisk initialization routine. But what it should do is (a) record how large is the RAMDISK (b) don't take any memory for ramdisk. I have JRAM-3 memory board, and the memory mapping is very simple. I was thinking about doing a direct hardware access without going through the EMS driver. on the JRAM-3, you could map a 64K segment anywhere on the 1M physical address. Thus, I could map 128K on D segment and the E segment. And the mapping is very simple, too. All is involved is to POKE a one-byte value into the control address (F800:0000 is the default). MOV F800:0000, 23H is all that's needed. (I didn't bother with MOV AX,F800 MOV DS,AX). Roy Fan University of California fan@cs.ucla.edu Los Angeles