PDA

View Full Version : BIOS Data Area Memory Reporting



Great Hierophant
October 1st, 2014, 04:37 PM
I have been interested in determining the values of the words in the BIOS data area at 40h:13 and 40h:15. With the systems available to me, I have been able to determine the following :

IBM PC w/640KB :

40h:13 = 80 02
40h:15 = 40 02

Tandy 1000 TX w/640KB :

40h:13 = 70 02
40h:15 = 80 02

Tandy 1000 TX w/768KB :

40h:13 = 80 02
40h:15 = 80 02

IBM PCjr. w/128KB :

40h:13 = 70 00
40h:15 = 80 00

IBM PCjr. w/jrIDE (736KB) :

40h:13 = 00 70
40h:15 = E0 02

IBM PCjr. w/jrIDE & JRCONFIG :

40h:13 = E0 02
40h:15 = E0 02

Generic 486, 16MB
40h:13 = 80 02
40h:15 = 80 00

I know that generally it is the word at 40h:13 that programs can use to determine the maximum conventional memory size. The word at 40h:15 seems to be used for the expansion card RAM on an PC, XT or AT. On a Tandy or PCjr., it indicates the conventional total RAM available to the system, while 40h:13 reports the amount available after the video buffer. For the extra 128KB on the TX, the video buffer is placed above 640KB. For the jrIDE, the video buffer causes a hole to appear in the conventional memory map, but memory is available above 640KB to lessen the pain.

The PC's word at 40h:15 would indicate an early 16/64K motherboard, but my motherboard is a 64/256K board with the last BIOS. I guess that the BIOS was not updated as far as RAM expansion went, it deems all RAM above 64KB to be expansion RAM, whether on the mainboard or on a card. Does anyone know what this word is on an IBM PC/XT with 640KB?

While I don't have an IBM AT, the word at 40h:15 is 80 00 on my 486 would seem to indicate the 128KB RAM expansion required to bring an AT to the full 640KB. Is the word the same on an IBM PC/XT 286, which has the full 640K without an expansion card?

mbbrutman
October 1st, 2014, 05:47 PM
Have you considered just looking at the technical reference manuals? This is not some great discovery ... All of this (and more) was documented many years ago.

Hint: Some machines differentiate between motherboard memory, total memory or expansion memory. And where there is just a few KB missing the BIOS might be using that memory for things like user defined hard drive settings.

Great Hierophant
October 1st, 2014, 08:34 PM
Have you considered just looking at the technical reference manuals? This is not some great discovery ... All of this (and more) was documented many years ago.

Hint: Some machines differentiate between motherboard memory, total memory or expansion memory. And where there is just a few KB missing the BIOS might be using that memory for things like user defined hard drive settings.

The BIOS listings were rather intimidating, but after looking at them again, I understand what to look for. The IBM PC defines memory size at 40h:13 and io ram size at 40h:15. The memory in the I/O channel does not change in any of the BIOS versions, it is any memory beyond 64KB. The PCjr. defines 40h:13 as "useable" memory size and 40h:15 as "real" memory size. Tandys seem to follow this convention, although they label 40h:15 as I/O channel RAM size, but this always seems to indicate the total amount of RAM in the system, up to 640KB. The XT and later machines rely solely on 40h:13 as the memory size and use 40h:15 for manufacturer error codes.