PDA

View Full Version : IBM PC AT Questions



Great Hierophant
November 3rd, 2006, 08:00 PM
First, the Intel 80286 can address 16 Megabytes of RAM. Not every 286 machine can address so much. Of course, the barrier between 640KB to 1024KB is not for RAM, however I know of no limitation on the rest of the addressing space. If you insert a 16 Megabyte ISA card into the system, will all of that RAM be available as extended memory?

Second, the RAM on the AT motherboard and the RAM on any expansion should have a 16-bit data path, as the CPU has?

Third major chips and chip replacements: The AT motherboard vs the XT motherboard and major peripherals:
XT AT & XT/286
8088 80286 Central Processing Unit
8087 80287 Numeric Co-processor
8284 82284 Clock Generator Chip + 8284
8288 82288 Bus Controller Chip
8255 8642 Programmable Peripheral Interface/Keyboard Controller
8253 8254 Programmable Interval Timer
8259 8259x2 Programmable Interrupt Controller
8237 8237x2 Direct Memory Access Controller
8250 16450 Universal Asychronous Receiver-Transmitter Controller
D765 82072 Floppy Diskette Controller

Additionally, the AT has the following chips not inside any PC or XT:
MC146818 Real Time Clock
74LS612 Memory Management Unit

mbbrutman
November 4th, 2006, 06:36 AM
Your posts confuse me at times. Are you asking questions or stating facts?

First, every Intel 80286 can address 16MB of RAM. Any limitation is imposed by motherboard design.

The range between 640KB and 1024KB can be used for RAM. By convention it is reserved for video cards and ROM, but many machines allowed DOS to have up to 736K of contiguous space by assuming a monochorme display adapter would not be installed, and thus continuing DOS memory through the 640K barrier (A000:0000) to the 736K barrier (B800:0000), which is where most such systems have a CGA card.

If you had a proper 16 bit ISA memory card (not 8 bit, which is technically PC Bus and not ISA) and it held enough memory, you could fully populate any 80286 system to 16MB. Of course the card can't conflict with what is on the motherboard, but other than for motherboard memory, it can all go on one card. This is possible because the bus has the full 20 address lines, and the description of the address lines in the IBM PC AT technical reference even explicitly states that up to 16MB of memory can be addressed.

Second, any memory should be on a 16 bit bus. For the original IBM PC AT there is no difference between the memory bus on the motherboard or the ISA bus (when used for memory).

Putting memory on an 8 bit card would be problematic. In theory it could work, but performance would be awful. The memory would not be visible above the 1MB mark because the address lines just are not on the card, and it would have to be 8 bit transfers, not 16 bit transfers. I'm not sure if the 80286 and the support chips commonly used on AT class systems can handle that. I have a good book on the 80286 bus cycle, but that's going to take some research.

Great Hierophant
November 7th, 2006, 07:23 AM
So, the IBM PC AT can have 16MB of Extended Memory installed. Now, if you plugged in a 16MB 16-bit ISA expansion card, you could achieve that goal. However, where would that memory be? I think, if on the ISA bus, it could only be the first 16MB, because that is the limit of the ISA memory addressing.

But if you installed such a card in the AT, you may have a bus conflict between the 512KB on the motherboard and the first 512KB on the card. If both are enabled, the motherboard will be sending data to both. Now its not a big deal when the same data is being sent to both cards. However, would there be a problem if the card's memory has a lower access time than the board's memory?

chuckcmagee
November 7th, 2006, 07:33 AM
Well, NO, you would have to be able to make the ISA one start at 0x80000 or more likely at 0x100000, which would leave you 15MB of extended memory (not 16MB).

mbbrutman
November 7th, 2006, 08:12 AM
A 16MB ISA expansion card is hypothetical at this point. I've never seen one.

The ISA bus can address all 16MB that the 80286 provides address lines for, so it is possible to create a conflict between memory on a card and memory on the motherboard. This is no different than plugging in two memory cards onto a bus and setting them to respond to the same address range. It's going to create some really cool special effects before the machine locks up.

Let's explore this further. Even if both the memory card and the motherboard had the same contents at the same time all of the time it still would not work. Electrically having two devices try to drive signals onto the bus at the same time is a no-no, and would lead to undefined results. There can only be one source of signal on a wire at any one time.

Memory cards for the AT do not let you 'stomp' on the first 512MB which is assumed to be on the motherboard. A card that does is incorrectly designed.

Terry Yager
November 7th, 2006, 08:15 AM
So, the IBM PC AT can have 16MB of Extended Memory installed. Now, if you plugged in a 16MB 16-bit ISA expansion card, you could achieve that goal. However, where would that memory be? I think, if on the ISA bus, it could only be the first 16MB, because that is the limit of the ISA memory addressing.

But if you installed such a card in the AT, you may have a bus conflict between the 512KB on the motherboard and the first 512KB on the card. If both are enabled, the motherboard will be sending data to both. Now its not a big deal when the same data is being sent to both cards. However, would there be a problem if the card's memory has a lower access time than the board's memory?

I used to run mainly AST RAM boards, and they allow the user to set the starting address at any 64K boundry from zero on up, and they can be divided between conventional memory and extended, to back-fill the lower addresses if necessary. Most other boards work the same way (since many of them are rip-offs of the AST designs).

--T

daflory
November 7th, 2006, 10:40 AM
Don't forget "Expanded Memory" (EMS). Lots of AT cards used this trick to swap pages in and out of high memory space, enabling DOS programs to access memory above 640K.

You could have 16MB RAM on the mb and ISA bus that would be directly addressable by the processor in protected mode.

You could also have 16MB (not sure what the limit was) of RAM on an EMS card that would be available to DOS (or Windows 3.0 in standard mode).

Naturally, EMS memory was a lot slower, but it was more popular in the AT days because many DOS programs could use it.

Until Windows 3.0 came out, "normal" (extended, not EMS) memory above 640K was only useful for AT users who were using a non-dos OS, or one of the few programs that used protected mode extensions like Autocad (I think) and Lotus 123 R3.

mbbrutman
November 7th, 2006, 11:47 AM
Good examples, but:

Terry: I thought that every AT came with 512K standard, and that to get to 640 you used an ISA card. If the AST card really allowed you to set it up to respond to memory at 64K, it would make the machine non-functional. Are you thinking of an 8 bit card for a PC where 512K would not be necessarily on the motherboard?

Daflory: EMS is a whole other issue - that is bank switching. Even a C64 can bank-switch memory to get more memory on the machine than the processor is physically capable of addressing. EMS uses a 'window' in high memory to make 16 or 64K available at a time. The particular 16 or 64K chunk that is visible keeps getting moved in and out of that window, giving the illusion of having much more memory than is really on the machine. That is not the same as having the CPU natively address the memory, which is how extended memory works.

Terry Yager
November 7th, 2006, 01:10 PM
Ah, my memory may be failing me again, mebbe it was at any 1MB boundry, but I'm sure they could also be setup to back-fill a 512K machine as well (thus 'saving' the slot that the 128K board would normally take). They could also be set to reserve a certain amount for EMS, but I never used that feature. I still have a couple of those RAMpage boards, but I have no clew where the manualage for them is right now.

--T

Great Hierophant
November 7th, 2006, 01:28 PM
Programs that utilize extended memory (memory above 1MB) usually require faster processors than a 286, especially the lower 6MHz and 8MHz 286s found in the IBM PC AT. DOS does not utilize memory above that boundary with the exception of HMA and XMS. Even those operating systems like Windows/386, which was the first version of Windows to offer protected mode capability, wouldn't work too swiftly on the AT.

Terry Yager
November 7th, 2006, 01:49 PM
This looks like the boards I'm thinking of:

http://www.thegreenhouse.us/th99/i/A-B/52490.php

The base mem address may be set for 0Kb - to - 15Mb, in 128K increments (but, yah...setting it at 0K prob'ly would not be A Good Thing).

--T

mbbrutman
November 7th, 2006, 02:32 PM
Programs that utilize extended memory (memory above 1MB) usually require faster processors than a 286, especially the lower 6MHz and 8MHz 286s found in the IBM PC AT. DOS does not utilize memory above that boundary with the exception of HMA and XMS. Even those operating systems like Windows/386, which was the first version of Windows to offer protected mode capability, wouldn't work too swiftly on the AT.

Huh? Extended memory was invented with the 80286. Before the 80286 the 8088/8086 could address 1MB. Anything being addressed above 1MB is extended memory, only available on 80286 and better processors.

My 6Mhz IBM AT was perfectly happy with it's extended memory.

How fast an OS runs and how memory is addressed are orthogonal issues. Ie, nothing to do with each other.

Terry Yager
November 7th, 2006, 04:05 PM
I've never had any complaints with running contemporary Windowz apps on 8 - 12MHz 286s with 2 - 4Mb of RAM (can't wait to try out my 'new' 20MHz mobo). Anything less than 2Mb tho, is out of the question.

--T

Anonymous Coward
November 8th, 2006, 07:23 PM
A 16MB ISA expansion card is hypothetical at this point. I've never seen one.


I've seen some on paper, and I've known some people who claim to have them. However, I've never used a 16MB board myself. However, I do have two BocaRAM AT boards that can do 8MB each, and the manual states they can be used together. However, I've never tried it. Right now I'm running one of them in my IBM AT. My only gripe is with the memory test at POST. It really takes too long to count all the memory...having all 16MB installed in the system would make reboots tedious. I think going with a Phoenix BIOS might alleviate this problem though. Addtionally, I think that certain IBM ATs can only do up to 12.5MB due to some sort of design flaw. I'm not sure if this holds true in the 339 or 319s as I've never had more than 8.5MB installed. In anycase, having more than 4MB installed in an AT isn't very useful.

As for the EMS question, the amount of memory supported depends on the version. I think the last (LIM 4.0) can do 32MB in 64kb blocks....and I have seen cards that support all 32MB!