Messages in this thread |  | | | From | "Anthony Barbachan" <> | | Subject | Re: Rampage Plus 286 EMS boards programming info. | | Date | Wed, 20 May 1998 03:03:55 -0400 |
| |
-----Original Message----- From: Mike A. Harris <mharris@ican.net> To: David Woodhouse <Dave@imladris.demon.co.uk> Cc: Linux Kernel mailing list <linux-kernel@vger.rutgers.edu> Date: Tuesday, May 19, 1998 11:34 PM Subject: Rampage Plus 286 EMS boards programming info.
First thing you may want to check is if the board is actually an EMS board. Since it sounds as if it was made for 286's then it would make more sense that the board is an extended memory board as 286's could address more than 1 MB of memory. The driver disk may just be AST's version of EMM386.EXE. Plug your board into a computer and see if the computer registers the extra memory. Furthermore using the boards for actual memory may be impossible. EMS was accessed thru a 64K page frame that contained 4 16K pages at one time. This means that if the card is an EMS card it will probably be inaccessable linearly. You will have to access it thru 16K pages, only 4 of which will be present in the EMS page frame at any one time. If you determine that it is an EMS board then first thing you should do is contact AST to see if they have any techical information of the card. BTW, the card may well be EEMS instead of EMS as AST was one of the backers of EEMS. IF you unsuccessful in this route then its time to reverse engineer the card. BTW, for Linux to remain unhindered by any possible lawsuits I'd also recommend you get permission to reverse engineer, which shouldn't be a problem for this ancient card.
Steps to reverse engineer this card:
1. Build a clean machine with the EMS card in, loading only DOS 6.22 with minimal drivers + the EMS driver. 2. Make sure you do NOT load EMM386.EXE, unless told so by the card's intallation instructions. (Which shouldn't be the case as EMM386.EXE may confict.) 3. Call the DOS function "Get Memory Manager Information" int 21H function 4402H
Need DOS 2.0 or greater Parameters: AX = Function Code = 4402H BX = File Handle = Handle for "EMMXXXX0" CX = Buffer Size = size is dependant on the subfunction called DS:DX = Buffer = 1st byte sets the subfunction desired (00H - Get API Point, 01H - Get EMM Import Structure Address, 02H - Get Memory Manager Version, 03H - supported but unknown, 04H - supported but only partially known) Return information: CF = Status AX = Error Code (0001H - invalid function, 0005H - access denied, 0006H - invalid handle, 000DH - invalid data)
buffer structure
0000H - 018AH - unneeded data 018BH - Byte - number of UMB frame descriptors 018CH - 4 * DWord * (number of UMB frame descriptors) Byte - number of EMS handle info records 16 bytes * (number of EMS handle info records) DWord - Read-mode Interrupt 67H vector <<<<<------- NEEDED INFO DWord Byte - a a * (DWord + DWord) Byte - b b * 12 Bytes Byte - c c * (Word + Word) 20 bytes 20 bytes
Call this DOS function's sub function Get EMM Import Structure Address - 01H The needed info will point you to the possition in memory which will handle EMS calls INT 67H You can also write a program to just print out the vector for INT 67H (Keep in mind that some other function might be in the way and call the actual function) Once you find the address of the INT 67H handler you should write a program that allocates and deallocates memory, writes, reads, etc. With a good debuging program trace its action in memory, setting a breakpoint at the start of the INT 67H handler. This way you should be able the trace what the EMS board's driver does. Another is that with a good debug program (MS's CV is good) you can start at the INT 67H and trace what the assembly code does for each EMS function call.
>On Tue, 19 May 1998, David Woodhouse wrote: > >> There's a generic driver for memory devices at >> ftp://dwmw2.robinson.cam.ac.uk/pub/kernel/mtd-980408.tar.gz > >Thanks.
> >> I've provided a driver for some ISA flash cards, and for otherwise unused >> physical memory. It should be fairly easy to plug in a driver to handle your >> EMS boards. > >Ok great. The only problem I have now is that I don't have >programming information for the board. It is an >AST Rampage Plus 286 card. > >I have no idea how these cards work. What ports are used? >IRQ's, DMA? Any pointers would be greatly appreciated. > >> It's all modules so far - just compile them with the same command line as the >> kernel modules compile with. >> >> mtd.o is the basic system. >> ftl.o does an FTL filesystem on top of whatever devices you've got installed. >> physmem.o and flashcard.o are the physical device drivers. > >I'm itching to do so now! I need programming info. I have the >MSDOS driver for the card, and could possibly reverse engineer >it, but I don't know how .SYS files load under DOS. Any ideas? > >> Have fuin. > >Thanks a lot for your help. >TTYL > > >- >To unsubscribe from this list: send the line "unsubscribe linux-kernel" in >the body of a message to majordomo@vger.rutgers.edu >
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu
|  |