1512, 1640, 2086

Ask me
It's me
So what's a PC6400?
Updating mouse
Fitting hard disks
Fitting 1.2MB or 1.44MB drives
Adding memory
Windows on 2086
DIP switches on PC1640
System disks for 1512/1640
Programing the funny 1512 graphics mode

What's a PC6400

If you are from America you may have a PC6400 and wonder where that gets a mention in these web pages. Well a PC6400 IS a PC1640. It's just that our US office decided to call it by a different model number in that country. (I think the model number 1640 may have already been in use by someone else). Everything said here about PC1640 applies equally well to a PC6400.

Updating MOUSE.COM

As loads of people have asked for this, here is the 7.04 version of mouse driver for 1512, 1640 and 2086 (don't try and use this for AT type machines - for those just use the standard MOUSE.COM that ships with Windows). For reasons best known to myself this is actually a .EXE file which, when run will unzip itself to produce the actual .COM file that you need.

Download ZIPped copy of Mouse.Com

Adding hard disks

Another common question I'm asked is - how do I get an XT hard disk going in a 1512/1640/2086?

Remember that those PC's are an XT class of PC - not an AT. Back in those days hard disks were not supported by the main PC BIOS so there was no need for the concept of setting up hard disk type numbers like we have to do on modern AT class computers. Instead every hard disk came with it's own matched controller card that had a BIOS on board that was just designed to support the single mechanism it was attached to.

In theory you just plug the controller and mechanism into the PC then, at switch on, the XT sees the new HD BIOS ROM and calls it's entry point that then hooks the disk interrupt so that subsequent disk accesses are filtered and any directed towards an HD are taken by the new combination.

As such it really should be a case of being able to plug in and switch on - no setup is required - it should just work. If it doesn't then (because such drives are pretty long in the tooth these days) it's probably because the head actuator or main spindle motor of the mechanism has seized. It could also be that the controller's card edge contacts have oxidized if they haven't been plugged in for years.

Other things to look out for are whether the HD needs a Low level format, FDISKing or just system formatting - try booting from a DOS floppy and accessing C: - if this fails try running FDISK from a floppy and see if it can "see" the HD - if so go on to define an active primary DOS partition. Once the system reboots then use FORMAT C: /S to put the DOS system onto the HD. If even FDISK can't see the drive then fire yup DEBUG and look at al the segement offsets between C000:0000 and EC00:0000 in 0400 increments to see if you can spot something looking like an HD BIOS signature (it'll probably have a "(c)Western Digital" or something like that. If you spotted it at C800:0000 for example then try G=C800:0005 which is normally the entry point to start up the LLF utility. If you are going to perform an LLF remember to write down the entries on the bad track table before starting as you'll probably have to enter these by hand at the end of the LLF process.

Finally in this section on hard disks, here's a question I received together with the answer I gave about upgrading hard disks...

Q: I need to put some type of hard drive in this 1512. Can I put some type of card in the slot to adapt to a hard drive or laptop hard drive or any thing at all.?

A: First let me point out a potential problem - the 1512 was designed 10 years ago and is based on the IBM XT that was designed 12-13 years ago. The XT stopped production in about 1989 - 8 years ago. Therefore, trying to find compatible bits for a computer of that age is going to be difficult.

Having said that, the easiest way people used to add HDs to XT class computers was to use a thing called a "hard card" that combined both a drive mechanism and controller/interface card onto a single unit that plugged into a slot. You might still be able to find one second hand somewehere but beware - It must be an 8-bit (XT compatible) and NOT a 16-bit (AT compatible hard card).

The other way to add a HD is the more traditional way of getting a mechanism that mounts at the front of the unit and connects via a cable that goes into one of the slots but again, be warned, you must find one that is 8 bit. What's more, in the XT days mechanisms and controllers were sold in matched pairs so you must find a matched controller and mech. It is not possible to get a generic interface and a separate mech (like you do these days with IDE).

The last hope is that just as XTs were dying out was when IDE was being first developed so there were some 8 bit IDE cards available for a short time and if you could find one of those then you could add a choice of different IDE drives to it. However the likelihood of finding any suitable drive/controller for all this is going to be very slim after 8-10 years. Perhaps a car boot sale, 2nd hand equipment auction or classified ads in the local paper might be the only place you could find what you need.

Remember that, at the end of the day, that PC is worth about £20 ($30) so it's probably not worth investing too much effort in trying to resurrect it (even if you do most modern software will be unusable on it, for example, it cannot run Windows).

Top of page

Upgrading 1512/1640/2086 floppy drives

A lot of people ask if they can replace drive A: in a 1512/1640/2086 with a 3.5" 1.44 MB drive (or 1.2MB 5.25"). There are a couple of reasons why you can't..

1) The 1512 is an XT, not an AT, so it's CMOS does not hold the drive A: and B: types. Instead they are "burnt into" the BIOS. As such the BIOS will always remain convinced that A: is a 360K though you can use the DRIVPARM and DRIVER.SYS commands in Config.Sys to over-ride this which is fine if you boot from a hard disk but if the HD ever fails then the machine would need a 360K mechanism put back in the A: position before it could be rebooted. Therefore it's not really practical to change it. However B: can be changed as explained in point 3) below.

2) All this is academic because the disk data separator in the floppy disk interface of the 1512 cannot cope with the higher data rate from 1.2MB or 1.44MB disks. It can only have 360K or 720K disks attached. This is equally true for 1640/2086

3) Obviously you've got a little bit more latitude with B: because the config.sys can always over-ride it's settings whether you boot from A: or C: - so it can be either 360K 5.25" or 720K 3.5" but nothing else because of 2) above. The way to use a 720K drive B: on a 1512/1640 is as follows:

In the case of the 1512 and 1640 the BIOS is totally convinced that A: is a 360K 5.25" drive so, as long as you want to be able to boot from A: in case the hard drive stops working, the A: drive MUST remain a 360K 5.25" drive.

However drive B: can be changed because whether you are booting MS-DOS from either A: or C: you can include a command in the Config.Sys file that over-rides the BIOS' default assumption that B: is also a 360K 5.25 and this will come into effect before any access is made to B: - the same is not true for A:, as it may be the drive that is used to boot (and hence the drive from which Config.Sys is read) it isn't possible to over-ride the BIOS's idea that it is 360K before it tries to read Config.Sys because, before that, it will already have tried to read IO.SYS and MSDOS.SYS.

For drive B: there actually two different commands one can use in Config and it seems that either will work. The first command is DRIVPARM and then other is DEVICE=DRIVER.SYS. The parameters used on both are almost totally identical so it is /D:1 /F:7 where D:1 says you want to change the BIOS support for drive 1 (A=0, B=1, etc) and F:7 sys that it is a 720K 3.5" so the command line to use is one of:


Note once again, that the ONLY types of drive that can be attached to a 1512/1640 are either 360K 5.25" or 720K 3.5 - you CANNOT use either 1.2M 5.25" or 1.44M 3.5" because those drives produce data at a rate faster than the disc data separator chip can cope with - the only way round that would be to replace the FDC circuit but the existing one cannot be disabled without breaking PCB tracks and tying chip enables to non-active.

4) You have a bit more room to manouevre with the 2086 because it's CMOS (as set by the DEVICE program) does hold knowledge of both what A: and B: are so on that machine A: can also be changed to 720K (but, again, not 1.2 or 1.44MB).

Top of page

Adding more memory

I'm often asked if there is any way to add memory above 640K to a 1512/1640/2086. There is a system called LIM EMS that can be used but it may not be worth the expense for the following reasons

When the only PC's in the world were based on the IBM PC design that had an 8086 that could only address 1MB of memory. Certain developers of particularly large programs (such as Lotus 123 in particular) decided that 640KB was not enough for huge spreadsheets. So together with Intel and Microsoft (LIM!!) they came up with a method whereby an unused 64K area between 640KB and 1MB could be used to switch in pages of some extra memory - 64K only being visible at a time. This is known as expanded memory. Hence you have LIM EMS (Expanded Memory System).

This was all really a bit of a fudgy fiddle to try and get around the design limitations of the original IBM PC. Just having a LIM card plugeed in and a LIM driver loaded in CONFIG.SYS doesn't actually do anything to help 99.9% of programs (including almost all DOS commands). It is only those huge programs that were specially designed to use LIM EMS that would benefit so there is absolutely no point in adding LIM memory to an 8086 based computer unless you have a program that specifically says it can benefit from it.

When Intel designed the 80286 and IBM then made the AT based on it. They incorporated a facility called extended memory (not to be confused with expanded). This was memory that appears outside the 1MB range that the 8086 was limited to addressing. It is an extra 15MB that carries on just above 1MB in the linear address map. At first programs would just grab bits of this extended memory and use it but it was soon realised that there had to be an arbitrating program that would hand out the memory only in answer to polite requests so programs working together did not tread on each other's toes. This proram is known as Himem.Sys and implements the XMS standard (eXtended Memory System).

In this day and age the use of LIM EMS is dwindling because all moder PC's have buckets full of LIM XMS extended memory so there is no point in using a 64K window fudge. Windows, for example, uses XMS memory. Anyone writing DOS applications these days (is anyone?!?) will probably design them to use LIM XMS rather than LIM EMS so this is yet another reason why adding a LIM EMS card to an 8086 is probably pointless - as you may not be able to find any software that will actually use it!

I'd also suggest having a look at my thoughts on upgrading in general. Click here to see what I think.

Some people ask the simpler question of how to upgrade the 512K in a 1512 to 640K. Well I was amazed to find after 10 years that there is STILL a company called Richnight selling a suitable set of chips to upgrade. In the UK phone them on 0800 318298 or access their web page here.

Top of page

Windows on 2086

The only video driver that can (in theory!) be used for Windows 3.0 is CGA which will give you 640x200 in monochrome. However the standard VGA driver CAN be used but unfortunately it uses some 80286 instructions and the processor in the 2086 is only an 8086 so you'd think it wouldn't work. However, if you unplug the 8086 from the 2086 and replace it with an NEC V30 then you can use VGA (and get about a 5% speed increase to boot!). The NEC V30 is an 8086 compatible chip but has a few of the 80286 instructions as well and just happens to include those used by the Win 3 VGA driver.

Top of page

DIP switches on PC1640

The 1640 can be used with one of 3 possible monitors - MD which just shows monochrome and Hercules modes, CD which only shows colours modes up to 200 scan lines (i.e. CGA modes) and ECD which shows all the colour modes up to 350 scan lines (i.e. 640x350). To set the machine for use with the correct monitor there are a bank of 10 DIP switches on the back. There are myriad possible combinations but the three of most interest are the default settings for each of the above 3 modes:

MD:	Sw3, Sw5 ON - All other OFF.
CD:	Sw4, Sw5 ON - All other OFF.
ECD: Sw2, Sw3, Sw8 ON - All other OFF.

In case anyone actually cares the majority of the switches are for when you have got the built in adapter used with the supplied monitor and a secondary card is plugged in attached to a different sort of monitor (usually it's when you've got an ECD but also want to run a mono adapter and monitor for debugging purposes). In that case the switches are used as follows (don't get confused by all this - 99.9% of people should just follow the 3 line table above).

(IGA= Internal Graphics Adapter)

Sw1 Sw2 Sw3 Sw4 Sw5   IGA mode	  Display   Additional Adapter
 #  Off On  Off On	  MDA/Hercules     MD		   CGA
 #  Off On  Off Off   EGA mono	    MD		   CGA
 #  Off Off On  On	  CGA compat.	    CD		   Mono
 #  Off Off On  Off   EGA compat.	    CD		   Mono
On  On  On  Off Off   EGA 200 	    ECD		   Mono
Off On  On  Off Off   EGA 350 	    ECD		   Mono

# => On for 40 column colour, Off for 80 column colour

For all the above Sw8 On for ECD, Off for CD or MD. Sw9/10 Off.

Sw6/7 identify the additional adapter:

Sw6 Sw7
Off Off  EGA
On  Off  CGA (40 col)
Off On   CGA (80 col)
On  ON   MDA/Hercules

Sw10 disables the IGA when On.

Top of page

System disks for 1512/1640

You will find copies of the system disks for the 1512 and 1640 in the file archive which is here.

For both types of PC all disk images are in .ZIP format and for each model the first disk is a special case. For the disk 1 in each case (either 46001 or 47001) you should unzip the archive to a temporary directory that will give you two files - a .CFI file and a copy of FDCOPY.COM. In each case you should place a blank 360K floppy in a drive x: and give the command FDCOPY 4n0001.CFI x: (where n=6 or 7 and x is the 5.25" drive on your PC).

Note: Because the 46004 disk in the 1512 set is also bootable (it contains Digital Research's DOS Plus rather than MS-DOS 3.2) therefore, like disk 46001, it is stored as a copy of FDCOPY and a .CFI as well and should be used to create a bootable disk in the same way as described above.

For all other ZIP files in a set (either 46002/3/5 or 47002/3/4) you should unzip each file directly to a blank floppy using the -D switch in your pkunzip command. For example,

PKUNZIP -D 46003.ZIP a:

Top of page

Programming 1512 graphics

The 1512 had a strange 16 colour 640x200 graphics mode that was an extension of the CGA mode 6 (640x200 in 2 colours) but wasn't quite an EGA mode though it did use four colour planes (Red, Green Blue and Intensity) a bit like EGA. The following are very technical details for anyone who wants to try and program it..

OK, the way it works is basically this. CGA already has a standard 640x200 b/w mode which is set with int 10h setting mode 6.

When you first switch to this mode all four RGB and I planes are written simulataneously so you can only achieve black or white - this makes it standard CGA mode 6.

What you then do is read the byte at 40:65 and set bit 4 then write the byte back and also output it to I/O 3D8h - this sets the system into its so called "Graphics mode 2" (nothing to do with the Int 10h AH=0 mode numbers!).

The byte at 40:66 holds the current settings of the VDU colour select register at I/O 3D9. In graph mode 2 the bottom 4 buts (3..0) are for IRGB in that order. To work in 16 colour mode write 0F to the port and the byte.

The register at 3DD affects which planes are written when you write to video memory. It uses bottom 4 bits in the order 3..0 IRGB.

The I/O register at 3DE is the colour plane read register and enables ONE plane to be visible when you read back from video memory. To prevent multiple plane selections it just uses the bottom 2 bits where their binary value 00, 01, 10, 11 relates to B G R and I.

In GM 2 the border colour is changed by writing to the bottom 4 bits of 3DF.

You will probably also need to know that bit 3 read from 3DA indicates Frame Flyback Time.

Top of page

Work in progressMore details will appear here as I build these pages.

SD Microsystems - Company supporting CPC, PCW and Amstrad PC
PC1512 site - site by Alistair Majury dedicated to the 1512

Back to the Products page
Back to the Amstrad home page