86Box: Adding Upper Memory to the Amstrad PC1640

by Pete
Published: Updated: 10 minutes read

Revisit the classic Amstrad PC1640 with modern enhancements through 86Box emulation. This article unveils how the Everex EV-159 RAM 3000 Deluxe card revolutionizes this 1980s personal computer, offering an exciting memory upgrade. Join us in this tech journey to upgrade the legendary Amstrad PC1640, merging retro charm with contemporary capabilities.

Memory Layout in an 8086 System

Let’s take a look at the memory organization in a typical 8086 system:

Memory RangeUsageNotes
00000h – 003FFhInterrupt Vector Table (IVT)IVT (Interrupt Vector Table)
00400h – 004FFhBIOS Data Area
00500h – 09FFFhAvailable for System and
Application Use
0A000h – 0BFFFhVideo Memory
0C000h – 0C7FFhReserved for System Use
0C800h – 0FFFFhAvailable for System and Application Use
10000h – 9FFFFhAvailable for Extended MemoryExtended Memory (Beyond 1 MB)
  • Interrupt Vector Table (IVT): The first 1 KB (00000h – 003FFh) is reserved for the IVT, which contains entries for various interrupts. Each entry in the IVT points to the memory address of the corresponding interrupt service routine.
  • BIOS Data Area: The next 256 bytes (00400h – 004FFh) are reserved for the BIOS Data Area, which stores system information and variables used by the BIOS routines.
  • Available Memory: The region from 00500h to 09FFFh is typically available for system and application use.
  • Video Memory: The segment from 0A000h to 0BFFFh is commonly reserved for video memory, where graphics data is stored.
  • Reserved for System Use: The region from 0C000h to 0C7FFh is often reserved for system use.
  • Available Memory: The area from 0C800h to 0FFFFh is again available for system and application use.
  • Extended Memory: Addresses from 10000h to 9FFFFh represent the extended memory beyond the conventional 1 MB limit. This area is used for additional system or application memory.

Upper Memory in 8086 Systems

In the context of older x86-based systems, “upper memory” refers to memory areas above the conventional 640 KB limit. These areas are crucial for optimizing system memory usage. Let’s explore key components of upper memory:

  1. Upper Memory Blocks (UMBs): The area between 640 KB and 1 MB is often referred to as Upper Memory Blocks (UMBs). These blocks of memory were made available for use by certain hardware and software components. Memory managers, such as HIMEM.SYS in MS-DOS, allowed portions of the upper memory to be used for device drivers and other system components.
  2. High Memory Area (HMA): The region between 1 MB and approximately 1.1 MB is known as the High Memory Area (HMA). This area became accessible on 80286 and later processors. The HMA was used for storing system data and drivers, allowing for more efficient use of memory.
  3. Extended Memory: Beyond 1 MB (from 1 MB onward), memory is often referred to as extended memory. Extended memory was not directly accessible by the original 8086 processor, but later processors, starting with the 80286 and above, could address extended memory.

It’s essential to note that terminology and memory organization can vary based on specific hardware, operating systems, and memory management software. MS-DOS and early Windows versions, for instance, employed memory managers like HIMEM.SYS and EMM386.EXE for upper memory management.

What is the Everex EV-159 RAM 3000 Deluxe Card?

The Everex EV-159 RAM 3000 Deluxe is an EMS (Expanded Memory Specification) card designed to provide additional memory beyond the conventional 640 KB limit of early PCs.

Virtual PC Configuration and Setup

In a previous article, I created an 86Box machine using these settings:

  • NEC V30 Processor @ 10Mhz (Note: the original machine came with an 8086 @ 8Mhz and the original V30 clocked in also at 8Mhz so I’m taking some liberties with 86Box! :) )
  • 640KB memory (locked) as that the option with the PC1640
  • Internal EGA controller
  • Microsoft Serial Mouse (Wheel) on COM1
  • No sound or network
  • IBM PC Fixed Disk Adapter (MFM) as there wasn’t an “internal” controller available
  • MFM configured 20MB HDD (612, 4, 17 configuration)
  • 5.25″ 360k floppy disk
  • Everex EV-159 RAM 3000 Deluxe ISA memory card
  • Feel free to use FreeDOS or MS-DOS.
86Box_1640_config_Screenshot_20231013_131810

Running EMS-Aware Software

With the Everex EV-159 RAM 3000 Deluxe configured in 86Box, you can now seamlessly run EMS-aware software on your Amstrad PC1640 emulation. Applications utilizing EMS memory for additional data storage or specific functionalities will benefit from the expanded memory space.

In this scenario, I’ll be utilizing DR-DOS 6.0, leveraging HIDOS.SYS to use the card’s UMB and load DOS into it.

Configuring an 8086 to use UMB with DR-DOS 6.0

The approach is straightforward: utilize as much of the free memory segments in the Upper Memory Block area with an expansion card that can use that space.

In the PC1640, EGA ROM and other systems reserve certain UMB areas that cannot be moved without special drivers.

Using the Everex EV-159 3000 Deluxe card, I can allocate some of the free space in UMB for DOS and other TSRs, enabling games like Keen4 to run smoothly.

1
config.sys

DEVICE=C:\APPS\EV159\EMM.SYS 258,00
DEVICE=C:\DRDOS\HIDOS.SYS /CHIPSET=EMSALL /BDOS=AUTO
SHELL=C:\COMMAND.COM C:\ /P /E:256

The EV159 driver (EMM.SYS) is specifically for the Everex card and must be loaded first.

HIDOS.SYS in DR-DRDOS 6.0 allows us to push dos into UMB and allow us to use the EMS memory from the Everex card to do so.

2
autoexec.bat

@ECHO OFF
PATH C:\DRDOS;C:\XTG;C:\BATCH
PROMPT $P$G
SET TEMP=C:\TEMP
MEM

3
No UMB Memory

4
With UMB Memory

Conclusion

Enhancing Amstrad PC1640 emulation with upper memory using the Everex EV-159 RAM 3000 Deluxe card unlocks possibilities for running diverse era-specific software. 86Box is a powerful platform for recreating vintage computing, offering a more authentic experience with the right configurations.

Explore and experiment with software utilizing EMS memory to fully immerse yourself in the 1980s computing nostalgia with your upgraded Amstrad PC1640 emulation.