Kingston MC64

@71D0.ADF - Kingston 64MB Memory Expansion Adapter 
C71D0.ADF - Init file for @71D0.ADF 

mc64a01.PDF  KTM-MC64/X for IBM PS2 Model 70 and 80 
KTM8k386.PDF  KTM-PS64 for IBM PS/2 Model 70, 80, and 90
3077.EXE ADF / Util disk for KTM-MC64 Memory Expansion (V3.9)

KEMM.SYS
   FRAME
   BASE
   HANDLES



PS64/MC64

PS64 16-bit slot? Mine has a full 32-bit connector...

   The Kingston Technology KTM-PS64 Memory Expansion Board is capable of adding up to 64MB of Random Access Memory to IBM PS/2 Model 70, 80, and 90 personal computer systems. From one to four Single In-line Memory Modules (SIMMs) can be plugged into sockets on each KTM-PS64 board, and can be combined in a wide variety of memory configurations. The KTM-PS64 board can be installed in any 16-bit expansion slot on the PS/2 system board.
   The KTM-PS64 supports both extended (linear) and expanded (paged) memory options, and also supports LIM EMS version 4.0 software to enable memory paging. 

   If you run OS/2, you should allocate all the new Kingston memory as extended memory, since OS/2 can address all added memory directly, and does not require expanded memory.
   If you run DOS, you can allocate the new Kingston memory as either extended or expanded or a combination of both. 

KTM2000/M70 2MB
KTM4000/M70 4MB
KTM-8000/M70 8MB 
KTM0129 8MB
KTM-16000/M70 16MB
KTM4X36L-80 16MB

I used some IBM 4M 80nS, PN 68X6343, FRU 92F3337

Carlyle Smith sez
Any SIMMs (no matter the size) on the MC64 board  _must_ be coded as 80ns, and they _must_ perform  as 80ns or faster (not slower). Just take 60ns parity SIMMs and solder a tiny (U-shaped is better) wire across the R4 pads. The 8570 requires at least one SIMM in the leftmost planar socket to work. 
   In another experiment, DonPeterWendt reported that with his AccuLogic add-in board on a P75, he had to leave one slot on the systemboard empty  to realize the full value of the memory on the memory expansion board. What happens if you fill up the MC64 with 80ns SIMMs and leave one systemboard slot empty??

KEMM.SYS
In order to use the expanded memory feature, you must first install the expanded memory device driver, KEMM.SYS in CONFIG.SYS

DEVICE=KEMM.SYS FRAME=XXXX BASE=YYYYYHANDLES=ZZZ

XXXX  tells KEMM.SYS to look for a valid page frame. The page frame is the first address of the EMS mapping window. Ex. :FRAME=C000

YYYYY  what part of extended memory will be allocated for EMS. Determine the base EMS parameter with YYYYY=Total Memory (KB) + 384 - Amount of EMS Required For example, if your computer has 8MB (8,192KB) of memory, 640KB base memory and 7,552KB is used as EMS. For 2MB (2048KB) of EMS, calcule:YYYYY = 8192 + 384 - 2048 = 6428
In this case, the base parameter would be: BASE=6428

ZZZ  specifies # of handles and names available. Handles are used to identify a block of memory requested by an application. Each application that uses EMS requires at least one handle. Some programs require more than one handle and these programs will prompt you if they run out of handles. The acceptable handle parameter range is from 16 to 255. 
   Note that each handle/name defined consumes EMS, making less EMS available for your application. Because of this, you should only define enough handle/name parameters to support your application. In most cases, the default value of 32 should be adequate for most applications. If you require more than 32 handles, you can specify a greater number of handles. For example: HANDLES=64

Screen Message from KEMM.SYS
As the computer boots, the following messages will appear:
KEMM: 80386 Expanded Memory Manager, V 4.0
Copyright 1990, Kingston Technology Corp.
Page Frame Address at Segment C000H
Total EMS Memory is 9472Kbyte (592 pages)
KEMM: EMS driver is successfully loaded!



Regardless of how much extended memory your computer has, only a maximum 15MB can be allocated as expanded memory. In fact, to preserve your extended memory, you should only allocate the amount of expanded memory necessary to support your particular application.


Original from Peter Wendt (and then lifted from Fred Spencer's site)

> The trick is you must have an adapter in there somewhere with a BIOS or a CPU on it, I've forgot which.  The IBM memory or the SCSI adapters have these. 

This part is definitely misleading or misunderstood. 
- even busmaster adapters with 32-bit addressing width cannot substitute the missing DMA functions for the memory above 16MB 
- the ROM they supply is for their own function. The BOPT-workaround works even with no other adapter installed in the system than the two memory cards. (BOPT = Bypasses One Problem 
Temporarily). Also the use of Kingston or Acculogic cards pushes the system over the 16MB-limit. 

   The problem is the 24-bit DMA-chip on Mod. 70 and 80 - since 2^24 = 16.0MB addressing range. This is the range where DMA can be used to transfer data among the memory - if the DMA cannot be used direct adressing (PIO) must be used to transfer data to the locations above the 
DMA-adressing range. Works as well but is a little slower. 
   A problem on the older models might occur with detection of memory errors. The parity-informations are mainly transported with DMA to detect and handle bit-failures. (Mainly cause an NMI error though - and the system stops with 111 ?????? or such) 
   If the DMA cannot directly access the memory a parity error *might* be undetected. The memory handler invoked with the BOPT-workaround uses the PIO-mode for the error-detection ... the Kingston and Acculogic cards have own parity control integrated in their chipsets. 
   This however has nothing to do with the memory *refresh*, which is directly controlled by the memory subsystem on the planar and on the memory cards. 
   Let's say the system has 8MB on the planar and 16MB on a Kingston card. The planar-8MB are under full control of the boards DMA and parity logic. The 16MB on the Kingston card are on the control of the cards' parity control and the lower 8MB can be accessed directly by the systemboard DMA - the upper 8MB are used via normal 32-bit direct addressing bytewise. 
   The fastest memory access is that for the planar memory: DMA plus 0 - 1 waitstate make it rather quick. The slowest memory access is that on the range from 16MB - 24MB: bytewise direct-accessing to read from memory and to write to memory plus 1 - 3 wait-states on "channel memory" take some time. 
   Pushing a Mod. 70 / 80 over the 16MB border makes only sense with a real 32-bit operating system, which can handle the different memory adressing models with no problems (like OS/2) - DOS / Windows may have some problems. 
   I ran a Mod. 80-A31 under OS/2 Warp Server with 40MB for quite some time without any problem. It had 8MB on the planar (2 x 4MB), 32MB on an Acculogic card (4 x 8MB), an IBM SCSI controller without Cache /A, an Adaptec AHA-1640 (for tape and CD), an IBM Token Ring 16/4 Adapter /A and an AMS 2-LPT card. 

9595 Main Page