To add memory setting 18KB or 16K/32K (if it's more straightforward to populate the whole second bank instead only the top 2K) or similar
IBM PC when configured as 16KB (DIP switch setting), but having RAM chip present also at range 0x7800-0x7FFF (2KB below 32K, importantly including the 1K above 0x7C00 - the PC BIOS boot vector) - then it can boot PC DOS and it'll behave as if it has only 16KB:
Motherboard configured for 16 KB RAM
Note 1: There was a successful boot if all I did was simply populate the second RAM bank, leaving the motherboard switches set to 16 KB.
That's possible due to the permanently connected U12 memory transievers:
SW1 and SW2 are used simply to inform the POST of bank population. They do not enable/disable RAM banks.
So, the DIP switches control the memory size value to be reported/assigned via BIOS/POST/DOS, but the CPU/programs can access any memory present, including 0x7C00.
I assume DOS receives the MEMORY_SIZE, IO_RAM_SIZE or similar from the BIOS and denies loading of programs declaring a need for more than that (for PC DOS 1.x the COMMAND.COM has the role to load executables).
Scenario: "User didn't have enough RAM chips or some of them failed".
If having 16K + 2K non-contiguous step is complicated - then just make 16K reported out of 32K installed.
Source code of BIOS
Related: joncampbell123/dosbox-x#3664, 640-KB/GLaBIOS#50
To add memory setting
18KBor16K/32K(if it's more straightforward to populate the whole second bank instead only the top 2K) or similarIBM PC when configured as 16KB (DIP switch setting), but having RAM chip present also at range 0x7800-0x7FFF (2KB below 32K, importantly including the 1K above 0x7C00 - the PC BIOS boot vector) - then it can boot PC DOS and it'll behave as if it has only 16KB:
That's possible due to the permanently connected U12 memory transievers:
So, the DIP switches control the memory size value to be reported/assigned via BIOS/POST/DOS, but the CPU/programs can access any memory present, including 0x7C00.
I assume DOS receives the
MEMORY_SIZE,IO_RAM_SIZEor similar from the BIOS and denies loading of programs declaring a need for more than that (for PC DOS 1.x the COMMAND.COM has the role to load executables).Scenario: "User didn't have enough RAM chips or some of them failed".
If having 16K + 2K non-contiguous step is complicated - then just make 16K reported out of 32K installed.
Source code of BIOS
Related: joncampbell123/dosbox-x#3664, 640-KB/GLaBIOS#50